C# Dictionary に指定したキーや値が存在するかどうか確認する

using System;
using System.Collections.Generic;

public static class Program
{
    private static void Main()
    {
        var table = new Dictionary<int, string>
        {
            { 1 , "フシギダネ" },
            { 2 , "フシギソウ" },
            { 3 , "フシギバナ" },
            { 4 , "ヒトカゲ" },
            { 5 , "リザード" },
            { 6 , "リザードン" },
        };

        // 指定したキーが存在するかどうか
        if ( table.ContainsKey( 1 ) )
        {
            Console.WriteLine( "キーに 1 は含まれています" );
        }

        // 指定した値が存在するかどうか
        if ( table.ContainsValue( "ヒトカゲ" ) )
        {
            Console.WriteLine( "値に ヒトカゲ は含まれています" );
        }

        // 指定したキーに紐付く値を取得する
        // 指定したキーが存在しない場合は例外が発生
        var result1 = table[ 5 ];
        Console.WriteLine( result1 );

        // 指定したキーが存在する場合、値を取得する
        var result2 = "";
        table.TryGetValue( 6, out result2 );
        Console.WriteLine( result2 );
    }
}

BitMEX API一覧 の日本語解説

ありがたい

公式のお知らせを取得したい

GET /announcement 公式サイトのお知らせを取得する
GET /announcement/urgent 緊急アナウンスを取得する

APIキーに関する情報をやり取りしたい

GET /apiKey 自分のAPIキー一覧を取得する
POST /apiKey 新しいAPIキーを作成する
DELETE /apiKey 指定したAPIキーを削除する
POST /apiKey/disable 指定したAPIキーを無効化する
POST /apiKey/enable 指定したAPIキーを有効かする

チャット関連の情報をやり取りしたい

GET /chat チャット内容を取得する
POST /chat チャットメッセージを送信する
GET /chat/channels 利用可能なチャットチャンネルを取得する
GET /chat/connected チャットに接続しているユーザー数、BOT数を取得する

注文、残高に関する実行データを取得したい

GET /execution アカウントに関わる全ての実行データを取得する。
GET /execution/tradeHistory 残高に関わる全ての実行データを取得する。約定履歴ですね。

入金に関する情報を取得したい

GET /funding 入金履歴を取得する

仮想通貨の商品情報を取得したい

GET /instrument 全ての商品情報を取得する
GET /instrument/active 取引可能な商品情報を取得する
GET /instrument/activeAndIndices 取引可能な商品&指標情報を取得する
GET /instrument/activeIntervals 全てのアクティブな約定と通貨ペアのインターバルを取得する
GET /instrument/compositeIndex 索引の構成情報を取得する
GET /instrument/indices 全ての価格指標を取得する

保険資金の情報を取得したい(Funding手数料のやつ)

GET /insurance 保険資金の履歴を取得する

リーダーボードの情報を取得したい

GET /leaderboard 現在のリーダーボード情報を取得する
GET /leaderboard/name リーダーボードのエイリアスを取得する

清算の情報を取得したい

GET /liquidation 清算の注文を取得する

アカウントの通知を取得したい

GET /notification 現在の自分のアカウントの通知を取得する

注文に関する操作を行いたい

GET /order 自分の注文情報を取得する
PUT /order 未処理注文の数量または価格を変更する
POST /order 新しい注文を作成する
DELETE /order 注文をキャンセルする
DELETE /order/all 全ての注文をキャンセルする
PUT /order/bulk 同じシンボルの複数の注文を変更する
POST /order/bulk 同じシンボルに複数の注文を作成する
POST /order/cancelAllAfter 指定したタイムアウト時間後に注文をキャンセルする
POST /order/closePosition ポジションを閉じます

ポジションに関する操作を行いたい

GET /position 自分のポジションを取得する
POST /position/isolate 位置ごとに分離マージンまたはクロスマージンを有効にする。
POST /position/leverage ポジションのレバレッジを選択する
POST /position/riskLimit リスク制限を更新する
POST /position/transferMargin ポジションの出入りを移転する

相場に関する情報を取得したい

GET /quote 相場情報を取得する
GET /quote/bucketed タイムバケットで前の相場情報を取得する

APIのスキーマを取得したい

GET /schema APIから返されるデータオブジェクトのモデルスキーマを取得する
GET /schema/websocketHelp websocketの使い方に関するヘルプテキストと対象リストを取得する

決済に関する情報を取得したい

GET /settlement 決済履歴を取得する

統計情報を取得したい

GET /stats 取引全体及び通貨ごとの売上高と取引量の統計情報を取得する
GET /stats/history 過去の取引所全体及び通貨ごとの売上高と取引量の統計情報を取得する
GET /stats/historyUSD 為替統計の概要を米ドルで取得する

取引に関する情報を取得したい

GET /trade 取引情報を取得する
GET /trade/bucketed タイムバケットで過去の取引情報を取得する

ユーザーに関する操作を行いたい

GET /user 自分のユーザー情報を取得する
PUT /user パスワードや名前などの情報を更新する
GET /user/affiliateStatus 現在のアフィリエイト/紹介ステータスを取得する
POST /user/cancelWithdrawal 引き出しを取り消す
GET /user/checkReferralCode 紹介コードが有効かチェックする
GET /user/commission アカウントの手数料ステータスを取得する。
POST /user/confirmEmail 自分のメールアドレスをトークンで確認する
POST /user/confirmEnableTFA アカウントの2段階認証を確認する
POST /user/confirmWithdrawal 引き出しを確認する
GET /user/depositAddress 預金アドレスを取得する
POST /user/disableTFA アカウントの2段階認証を無効にする
POST /user/logout BitMEXからログアウトする
POST /user/logoutAll すべてのシステムをBitMEXからログアウトさせる
GET /user/margin アカウントのマージンステータスを取得する
GET /user/minWithdrawalFee 通貨の最低引き出し手数料を取得する
POST /user/preferences ユーザーの設定を更新する
POST /user/requestEnableTFA 2段階認証を設定するための秘密鍵を取得する
POST /user/requestWithdrawal 外部のウォレットに引き出しをリクエストする。
GET /user/wallet 現在のウォレットの情報を取得する
GET /user/walletHistory ウォレットの全ての取引履歴を取得する
GET /user/walletSummary ウォレットの全ての取引の要約を取得する

BitMEX API で引数boolの場合 ToLower()で小文字にしないと無視されるよ

たとえば

https://testnet.bitmex.com/api/v1/trade/bucketed?symbol=XBTUSD&binSize=1h&partial=True&count=1&start=0&reverse=False

だと
partial / reverse が無視されてデフォルトになっちゃう。

https://testnet.bitmex.com/api/v1/trade/bucketed?symbol=XBTUSD&binSize=1h&partial=true&count=1&start=0&reverse=false

にしないとダメ。

Nugetでインストールできる Bitmex.NET はこのへんバグってるくさい。


C# による JSON 相互変換 (Json.NET 利用)

List<>とかの配列をjsonに変換

class Book
{
  public int Id { get; set; }
  public string Name { get; set; }
  public string Asin { get; set; }
}

...

using using System.Collections.Generic;
using using Newtonsoft.Json;
....
// 日本語ちゃんと出力されるようにしておく
Console.OutputEncoding = new UTF8Encoding();

// せっかくだからリスト構造を作ってみる
List<Book> books = new List<Book>
{
  new Book{ Id = 1, Name = "野望の王国 1", Asin = "B00M84FTOS"},
  new Book{ Id = 2, Name = "アカギ 1", Asin = "B00DVYTZ12"},
};

// 普通の JSON テキスト構築
Console.WriteLine("-------- normal json --------");
string jsonString = JsonConvert.SerializeObject(books);
Console.WriteLine(jsonString);

// インデント付きの JSON テキスト構築
Console.WriteLine("\n-------- formatted json --------");
string formattedJson = JsonConvert.SerializeObject(books, Formatting.Indented);
Console.WriteLine(formattedJson);