bitFlyerのAPIでティッカーを自動取得する【仮想通貨】

python
1

この記事では、bitFlyerのティッカーをpythonで自動取得する方法についてご紹介します!
仮想通貨でうまくいく人は、程度の差はあれど取引や分析の自動化を行っています。

機械学習で分析するためにも、学習用のデータが不可欠です。
いつでも分析を始められるよう、日ごろからデータをしっかりとっておきましょう!

 

関連:ビットコインの過去データを取得しよう

前提条件

pythonの知識

この記事では、pythonによる手法をご紹介します。
もちろん知識ゼロから始めることも可能ですが、その場合はお手元に以下のような参考書をご用意することを強くお勧めします。

今回取得したデータを用いて、今後機械学習によって分析や予測する方法をご紹介していきますので、の機会にぜひpythonの勉強をしてみましょう!

関連:あなたに最適なpython独習の参考書は?各参考書の長所と短所をご紹介!

 

ティッカーを取得する

pybitflyerをインストール

今回用いるpybitflyerというライブラリをインストールします。
python環境が整っている方であれば、pip installによって簡単にインストールできるかと思います。

インストールできているかの確認は、対話モードなどでimportしてみることで可能です。

以下を実行してエラーが出なければ問題なくインストールされています。

 

実際にティッカーを取得してみる

引き続き対話モードで操作していきましょう。

pybitflyer.APIクラスを宣言し、tickerにアクセスする準備をします。
APIクラスのtickerメソッドを用いることで、現在のティッカーを取得することができます。

上のように記述することで、ticker変数に現在のティッカー情報が格納されます。
product_code=”BTC_JPY”とある通り、ビットコイン-円のティッカーが取得されています。

例えばtickerの中身は以下のようになります。

tickerは辞書形式になっていて、キーはそれぞれ以下の通りです。

  • best_ask:最高買価格
  • best_bid:最低売価格
  • best_ask_size:最高買価格数
  • best_bid_size:最低売価格数
  • ltp:最終取引価格
  • total_ask_depth:買注文総数
  • total_bid_depth:売注文総数
  • volume_by_product: 価格ごとの出来高

 

数分ごとに自動で取得して保存する

ソースコード

それでは、上の内容を用いてティッカーを5分ごとに読み込んで保存するプログラムを書いてみましょう。

処理自体は単純で、上で示したティッカー取得を指定秒数ごとに行い、ファイルに書き込んでいくものにします。
今回はtimestamp、best_ask、best_bid、ltpの四つを保存してみます。
他の情報を保存したい場合は、ソースコードを書き替えることで可能です(下の解説参照)。

以下のコードはそのまま使えますので、ためしにコピー&ペーストして試してみてください。

上のコードを例えばcrawler.pyとして保存し、コマンドプロンプトやターミナルで実行すると、以下のような出力が得られます。

処理を止めたい場合は、ctrl+cでプログラムの中断をしてください。

左からコンマ区切りで、タイムスタンプ、最高買価格、最低売価格、最終取引価格が表示されていることを確認してください。

 

コードの解説

上に掲載したソースコードについての解説を行います。

 

・必要なライブラリのインポート

コードで使用するライブラリをインポートします。

pybitflyerは上で紹介したライブラリ、datetimeは現在時刻を取得できるライブラリで、起動時間を取得するために用います。

また、sleepは指定した秒数のあいだプログラムの処理を止めてくれます。

 

・APIクラスの宣言

これは上で説明したサンプルの通りで、ティッカーを取得するためのクラスを宣言しています。

 

・書き込みファイルの作成

次に、取得したティッカー情報を保存するファイルを作成します。
保存ファイル名が被ると、せっかく保存した情報に上書きされてしまうなど事故の原因となるため、プログラムを起動した時間ごとにファイルを作ります。

 

・保存する内容を選択

option変数には、ティッカー情報のうち保存したい内容を記述します。
ここでは、タイムスタンプと最低売価格、最低売価格、最終取引価格の四つを取得するようになっています。

上に載せたキーを追加したり削除することで、この内容は替えることができます。

どの情報を取得しているかを一度ファイルに書き込み、ファイルを閉じます。

f.close()でファイルを閉じることで更新が行われるため、書き込みんだら必ずcloseしてください。

・間隔を指定してループする
残りは一気に解説します。

まず、何秒間隔で取得するかをinterval変数に指定します。
この秒数を弄ることで、どれくらいの感覚でデータを取るかが変わります。

ただbitFlyer APIは一分間のアクセスを200回までに制限しています。
intervalの値を0.3以下にすることは絶対にやめてください。

ここまでの処理で、準備は完了です。

 

・ループする

準備ができたら後は処理をループするだけです。

まず書き込み用のファイルを準備し、ティッカーを取得します。

取得されたティッカー情報から、optionに記述した必要項目を抜き出し、カンマ区切りにしてファイルに保存します。

さらにこのファイルを閉じたら1ループの処理は終わりです。

次の処理はintervalで指定した秒数後に行えばいいため、sleepによって処理を停止します。

まとめ

今回はbitFlyerから情報を自動取得する方法についてご紹介しました。
取引情報の自動取得はプログラミングの練習としてちょうどいいだけでなく、取得したデータ自体も今後使っていけるという点でとても有効です。
今後の記事では、今回取得した情報を用いて機械学習やディープラニングによる値の分析・予測を行う方法についてご紹介します。
python
pickleでエラーならdillで保存する!【Python】

Pythonのpickleを使うと、いろいろなデータを保存出来て便利ですよね。 しかし、ファイルオブ …

python
1
【WP REST API解説】投稿を更新する(POST /posts/id)

Word PressのAPIを用いてすでに投稿されている記事を更新する方法について説明します。 あわ …

WordPress
ブロガー向け禁止語チェッカーを公開しました

こんにちは、mjmsです。 今回は先日公開した「禁止ワードチェッカー」についてご紹介します! 禁止ワ …