【python/bitFlyer】目指せ仮想通貨自動売買システム開発!Public API その1 markets/getboardstate

python

このシリーズではbitFlyer Lightning APIを使用することで、常に情報収集/テクニカル分析し、 ここだと思えるタイミングで自動売買を行えるシステム開発を目指します。

今回は、bitFlyer Lightning Public API を使用して情報収集することで基本的な使い方を確認してみます。

-- 実行環境 --
Windows 10 64ビット版(1903)、python 3.7.4

-免責事項-
当サイトに掲載された内容によって生じた損害等の一切の責任を負いかねます。当サイトの情報を利用する場合には、自己責任でご利用下さい。

bitFlyer Lightning API の基本

PublicAPI と Private API

API には、API キーによる認証が不要な HTTP Public API と、 認証が必要な HTTP Private APIに分けられます。認証不要なPublic APIでは、一般に公開されている情報(取引所の状態や通貨の価格等)を取得でき、認証必須のPrivate APIでは口座情報の取得や仮想通貨売買、入出金等を行うことができます。

bitFlyer Lightning API エンドポイント

各種APIにアクセスするための共通エンドポイントは下記となります。下記エンドポイント+リクエストを追加してリクエストすることで結果を取得することができます。詳細は後ほどサンプルを交えてご紹介します。

https://api.bitflyer.com/v1/

事前準備

APIの実行にはHTTPで所定のURLに対してリクエストを投げる必要があります。この処理に「requests」というモジュールを利用します。作業開始前にインストールを行ってください。

pip install requests

bitFlyer Lightning Public API の使用

マーケット一覧の取得

API Documentation を確認すると、マーケット一覧のリクエストは下記となっています。
GET /v1/getmarkets
GET /v1/markets


つまり、前述のエンドポイント+上記URL(どちらか)を付加してGETでリクエスト投げろということです。 Documentationの参考結果を見ると実行結果はJSONで取得のようです。ここまで分かればやってみましょう。

import requests
import json

def main():
	html = requests.get("https://api.bitflyer.com/v1/markets")

	data = json.loads( html.text)
	print( data)

if __name__ == '__main__':
	main()
実行結果

[{‘product_code’: ‘BTC_JPY’},
{‘product_code’: ‘FX_BTC_JPY’},
{‘product_code’: ‘ETH_BTC’},
{‘product_code’: ‘BCH_BTC’},
{‘product_code’: ‘BTCJPY27SEP2019’, ‘alias’: ‘BTCJPY_MAT3M’},
{‘product_code’: ‘BTCJPY06SEP2019’, ‘alias’: ‘BTCJPY_MAT1WK’},
{‘product_code’: ‘BTCJPY13SEP2019’, ‘alias’: ‘BTCJPY_MAT2WK’}]

マーケット一覧が取得できました。このシリーズで取り扱う予定なのは現物ビットコインのみの予定なのでターゲットとなるマーケットは「BTC_JPY」のみですが、FXで売買したい場合には「FX_BTC_JPY」などに変更することで希望するマーケットで処理が可能です。

板の状態確認

板の状態を取得します。メンテナンスや障害発生時など売買できないような状態判断に利用します。API Documentationよりリクエストは下記となります。
GET /v1/getboardstate
また、クエリパラメータとして、マーケットの一覧で取得できる product_code または alias のいずれかを指定(未指定の場合はBTC_JPY)となっています。本シリーズはBTC_JPYを扱うため本来不要ですが、下記サンプルは指定しています。

import requests
import json

def main():
	html = requests.get("https://api.bitflyer.com/v1/getboardstate?product_code=BTC_JPY")

	data = json.loads( html.text)
	print( "稼働状態:", data['health'])
	print( "板の状態:", data['state'])

if __name__ == '__main__':
	main()
実行結果

稼働状態:NORMAL
板の状態:RUNNING

板のステータスを取得できました。取得できる値は下記となっています。ステータス次第で売買処理させない等の処理に利用しましょう。

パラメータ状態
healthNORMAL稼働中
(取引所の状態)BUSY負荷かかっている
VERY BUSY負荷が大きい
SUPER BUSY負荷が非常に大きい
NO ORDER注文が受付できない
STOP取引所停止中
stateRUNNING通常稼働中
(板の状態)CLOSED取引停止中
STARTING再起動中
PREOPEN板寄せ中
CIRCUIT BREAKサーキットブレイク中

まとめ

今回はbitFlyer Lightning API の基本と、Public API からマーケット一覧と板状態を取得してみました。エンドポイント+Documentation 記載のURLという点は理解いただけたのではないでしょうか。

次回は Public API からTicker情報の取得と保存してみたいと思います。

https://se.yuttar-ixm.com/autotrading-private-001/

コメント

タイトルとURLをコピーしました