ビットコインのボット作成(その1)~ まずはサンプルデータの収集

スポンサーリンク

シェアする

プログラムを作るなら、何らかのサンプルデータが必要です。対象を明確にした方が、やりやすいのです。

ビットコインのボット(自動取引プログラム)を作るなら、ビットコイン価格の時系列データが必要です。サンプルデータを使って、何度も試行錯誤をして、売り/買いのタイミングを探すロジックを作り上げるのです。

ビットコイン取引所の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)~ 微分っぽいことをしてみる

スポンサーリンク

フォローする