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 ); } }
SHA256など HMAC Generator
https://www.freeformatter.com/hmac-generator.html#ad-output
BitMEXの認証のテストなんかに使える
string hare のとこに
GET/realtime1533813298 など 時間unixtimeつなげた文字列入れて
Secret Key のとこにシークレットキー入れればOK
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 ウォレットの全ての取引の要約を取得する
Excelで指数平滑移動平均(EMA)の計算
どこを起点に計算を開始するかで数値が変わってくる。
頭からやるのが正式なんだろうけど。
c#でユニークid 生成
世界で重複することがない、ユニークな128bit(16byte)のランダムな数値であるGUID値を生成する。
using System; // Guid,Console class GuidSample { public static void Main(string[] args) { String id = Guid.NewGuid().ToString("N"); Console.WriteLine(id); } }
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);
DomainModelからViewModelに詰め替える時には退屈だしエラー積み込むかもしれんからバカ正直にコード書かずにAutoMapperとか使おうぜ(超訳)
AutoMapperとは、その名の通り、オブジェクト同士を自動でマッピングしてくれるライブラリ
nugetでインストールして使おう
PM> Install-Package AutoMapper