プログラムを作るなら、何らかのサンプルデータが必要です。対象を明確にした方が、やりやすいのです。
ビットコインのボット(自動取引プログラム)を作るなら、ビットコイン価格の時系列データが必要です。サンプルデータを使って、何度も試行錯誤をして、売り/買いのタイミングを探すロジックを作り上げるのです。
ビットコイン取引所のAPIを使って、10秒ごとに、24時間分のビットコインの価格データを取得する事にします。
※他のボット作成に関する投稿はコチラ
※取引所のAPIに関する投稿(サンプルあり)はコチラ
Zaif取引所のTickerを取得するメソッド
Zaif 取引所のAPIを使って、リアルタイムなビットコインの価格情報を取得する、GetTickerメソッド を作ってみました。Tickerとは、証券取引所などで電光掲示板に株価が流Jれるように表示されてるアレの事です。
/// <summary>現在のビットコインの価格情報を取得します。 /// </summary> /// <returns>現在のビットコインの価格情報。</returns> async Task<ticker> GetTicker() { //Zaif取引所にアクセスする HttpClient HttpClient http = new HttpClient(); http.BaseAddress = new Uri("https://api.zaif.jp"); //ティッカー取得 Uri path = new Uri("/api/1/depth/btc_jpy", UriKind.Relative);//APIの通信URL string apiKey = "XXXXX";//APIキー string secret = "XXXXX";//秘密キー string method = "ticker";//APIメソッド string json = await Send(http, path, apiKey, secret, method); //JSONをデシリアライズ var obj = JsonConvert.DeserializeObject<ticker>(json); if (obj == null) return null; //失敗 return obj; }
少し、コードについて説明します。
string json = await Send(http, path, apiKey, secret, method);
上記は Zaif 取引所からTicker情報を取得している箇所です。Sendメソッドの中身は、以前ZaifのAPIを紹介した投稿に載ってますので、参考にしてください。
var obj = JsonConvert.DeserializeObject<ticker>(json);
JSON文字列を、オブジェクトにデシリアライズしています。これは Json.net というパッケージのメソッドで、NuGetパッケージマネージャーからインストールして使います。
下記はTicker情報の型定義です。ZaifのAPIヘルプを参考に定義しました。
/// <summary>仮想通貨のティッカー(売買価格の情報)を表します。 /// </summary> class ticker { /// <summary>売気配値。 /// </summary> public decimal ask { get; set; } /// <summary>買気配値。 /// </summary> public decimal bid { get; set; } /// <summary>過去24時間の高値。 /// </summary> public decimal high { get; set; } /// <summary>終値。 /// </summary> public decimal last { get; set; } /// <summary>過去24時間の安値。 /// </summary> public decimal low { get; set; } /// <summary>過去24時間の出来高。 /// </summary> public decimal volume { get; set; } /// <summary>過去24時間の加重平均。 /// </summary> public decimal vwap { get; set; } }
ビットコイン価格の時系列データ
GetTickerメソッドをタイマーで10秒おきに呼び出して、CSV形式で書き出せば、求めているサンプルデータが出来上がります。
実際に、Zaif 取引所にて、2017/02/19 18:08~翌20:14まで、10秒おきにサンプリングしたものがこちらです。→ticker.csv
これを元に、ボットを作っていきたいと思います!
ちなみに、ticke.csv をOpenOfficeに読み込んでグラフ化してみたらこんなでした。
↓↓次回、自動売買っぽいことします。
ビットコインのボット作成(その2)~ 微分っぽいことをしてみる