仮想通貨の自動売買プログラムを作る③: レスポンスを分解して必要な情報を取り出す

仮想通貨の自動売買プログラムを作る過程を紹介しています。

はじめて仮想通貨の自動売買プログラムを作った過程 [Bitflyer/BTC-FX/C#]

ボタンを押すと最終取引価格を含むレスポンスをテキストボックスに出力されるところまで進みましたが、現在表示しているレスポンスには以下ように不必要な情報も多く含まれます。

このままだと読みにくいし、もともと取りたかったのは ltp (最終取引価格) だけなので、今回はここから ltp のみを取り出す仕組みを書き込んでいきます。

このレスポンスは JSON という形式で返されています。今後も JSON 形式のレスポンスから必要な情報のみを抜き出す事はありそうなので、JSON 形式のレスポンスを分解する汎用的なコードを追加します。

JSON 形式のレスポンスを分解する方法はいくつかあります。System.Runtime.Serialization.Json とかでもできるけど、Newtonsoft の方がパフォーマンスがよくて便利なのでこれを利用します。

利用する過程はこんな感じです。ひとつずつ見ていきましょう。

  1. Newtonsoft.Json のインストール
  2. Using Newtonsoft.Json の追記
  3. JSON の情報の型を定義する
  4. JSON 出力から必要な個所の値のみを取得する

1. Newtonsoft.Json のインストール

インストールの仕方は簡単で、ソリューション エクスプローラーの参照から入れるだけ。

[参照] を右クリックして、[Nuget パッケージの管理] をクリック。

ParseJSONWithCSharp001

上の [参照] をクリック、Newtonsoft_Json を選択して、[インストール]。

ParseJSONWithCSharp002

確認画面が出るので [OK]

ParseJSONWithCSharp003

すぐに “正常にインストールされました” と出力に出ました。

ParseJSONWithCSharp004

2. Using Newtonsoft.Json の追記

「Newtonsoft を使いますよ」とプログラムに定義する必要があります。

定義方法はプログラムの先頭に using xxxxx と並んでいるところに以下一行を追加するだけです。

3. JSON の情報の型を定義する

次に解読する JSON にどういう内容が含まれているのかを定義します。今回の場合だと “product_code” は文字列ですよ、ltp は数値ですよ、とかそういう感じの意味合いです。

これには JSON を C# 形式の定義に変換してくるサイトが便利なので、ここを活用。

ParseJSONWithCSharp005

上に JSON の文字列を入れて Generate を押すと下に C# 形式で書いてくれます。このままでも使えますが、RootObject だとなんのクラスかわからないので今回は JsonTicker というクラス名にします。

4. JsonConvert.DesirializeObject<型名> で必要な値だけを取得

これで準備ができたので、以下のように返されるレスポンス (response) から ltp の値だけをテキストボックスに表示します。

具体的に比較できるように

以下が変更前:

以下が変更後:

自動売買プログラムの作成状況

今回は JSON 形式で返されるレスポンスから必要な情報を抜き取る方法を紹介しました。

  1. NewtonSoft.Json のインストール
  2. using NewtonSoft.Json の追記
  3. レスポンスの型を定義
  4. JsonConvert.DesirializeObject<型名> で必要な値だけを取得

自動売買プログラムの今の見た目はこんな感じです。ボタンを押すとレスポンスすべてではなく、その中の ltp (最終取引価格) だけがテキストボックスに表示されます。

ParseJSONWithCSharp006

自動売買プログラムのコードはこんな状態です。今回変更があった個所を色付けしてあります。

最終取引価格はボタンを押して更新じゃなくて、自動的に最新の情報を表示してくれるようにしたいです。

次はそれを実現していきます。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする