C#でBitflyerの板情報をAPIで取得して、最新のレートを出力してみよう(仮想通貨の自動売買ツール(bot)制作)

Pocket

 

 

 

 

前回はC#で板情報を取得する所までできました。

 

C#でBitflyerの板情報をAPIで取得してみよう(仮想通貨の自動売買ツール(bot)制作)

 

取得した情報は

 


{“mid_price”:716253.0,”bids”:[{“price”:716250.0,”size”:0.25},{“price”:716229.0,”size”:0.2},{“price”:716227.0,”size”:0.05},{“price”:716209.0,”size”:1.26754826},・・・・・


 

このような感じだったと思います。

 

 

Jsonデータで送られてきているので

これを整形して使えるデータに変換しなければなりません。

 

地道に文字列分解してもできますが

それは面倒なので前回参照で入れてもらった「Newtonsoft.Json」を使って

コンバートしましょう。

 

 

前回の【API_CLASS】で作った「GetRate()」の中に

 


var deserialized = JsonConvert.DeserializeObject<BitFlyerRateJsonData>(json);


 

この1行を追加してください

 


public async Task<string> GetRate()
{
        //HTTP 要求クラス作成
        HttpClient http = new HttpClient();
        http.BaseAddress = new Uri(“https://api.bitflyer.jp”);

        //URLのクエリパラメータ
        var query = new Dictionary<string, string>
        {
            { “product_code”, “FX_BTC_JPY” },
        };

        //APIの通信URL
        Uri path = new Uri(“/v1/board”, UriKind.Relative);

        //jsonデータ取得
        string json = await GetSend(http, path, query);

        //Jsonデータを整形(追加)
        var deserialized = JsonConvert.DeserializeObject<BitFlyerRateJsonData>(json);

        //解放
        http.Dispose();

        return json;

}


 

追加した1行の説明ですが

取得したJsonデータを整形して「BitFlyerRateJsonData」のクラスに入れています。

 

「BitFlyerRateJsonData」クラスの中身は


public class BitFlyerRateJsonData
{
        [JsonProperty(“mid_price”)]
        public decimal mid_price { get; set; }

        [JsonProperty(“bids”)]
        public RateDetail[] bids { get; set; }

        [JsonProperty(“asks”)]
        public RateDetail[] asks { get; set; }

        public class RateDetail
        {

            [JsonProperty(“price”)]
            public decimal price { get; set; }

            [JsonProperty(“size”)]
            public decimal size { get; set; }

        }
}


 

取得してきたJsonデータの中に書いてある文字の変数が作られています。

 

「[JsonProperty(〇〇)]」この中にJsonのキーを書いて変数を作る事で

その中にデータが入っていきます。

 

この場合だと【mid_price】は1つしかありませんが【bids】と【asks】は複数あって

中はまたJsonデータで入っているので「RateDetail」クラスの配列に

各自入れられています。

 

ですので、レートを取り出す時は

 


decimal bid = deserialized.bids[0].price;
decimal ask = deserialized.asks[0].price;


 

このように取り出します。

 

0番は現在の最新のレートなので

その他の板のデータを取得する場合はループさせれば取得できます。

 

注意点としてはJsonデータを入れるクラスを作成する際は

しっかり作らないとエラーがでます(あたりまえ)。

 

キーの名前が間違っていたり

変数に付随するクラスが足らなかったりすると

かなりエラーには厳しいので気をつけてください。

 

Jsonデータを入れるとクラスを出してくれるサイトとかもあるので

それらを使うと便利になります

 

では実際にレートを出力してみましょう!!

 

 

次回はPythonで取得していきたいと思います。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です