何回かに分けて、BinanceのAPIを操作するチャットボットを作ろうと思います。言語はPythonです。最終的にherokuあたりにデプロイする雰囲気でやっていきます。第2回目です。今回は、PythonでBinanceのAPIをざっくり触ってみます。
第1回「BinanceのAPIを操作するチャットボットを作る~Binance APIの登録~」
Binanceについてはこちら「草コインを狙うならおススメのBinanceへの登録方法!」
PythonのBinance API用ライブラリをインストール
まずは、PythonでBinanceのAPIを触る環境を整えます。Binanceが出しているAPIの仕様を見ながらがんばってもいいのですが、がんばりたくないので、非公式ですがこちらのPython用のSDKを使いたいと思います。とりあえず書いてある通りにまずはインストールします。
pip install python-binance
僕みたいにjupyterでパチパチやっている人は、ちょっとインストールがんばらないといけませんが、このへんを参考にしながらがんばります。
あと、僕だけかもしれませんが、python-binanceをインストールするときに、
error: Microsoft Visual C++ 14.0 is required. Get it with “Microsoft Visual C++ Build Tools”: http://landinghub.visualstudio.com/visual-cpp-build-tools
と、言われたので、こいつをインストールしました。
ざっくり触ってみる
SDKのインストールができたら、ざっくりと触ってみます。APIの検索とかはこのへんでやります。
まずは認証的なやつ
# 必要なモジュールをインポート from binance.client import Client # 認証(たぶん) client = Client("api_key", "api_secret")
api_keyとapi_secretは、API登録時「BinanceのAPIを操作するチャットボットを作る~Binance APIの登録~」に取得したものを使用します。直接入力してください。本家のAPIの仕様を確認してないので、この1行でどれだけありがたいをことをしてくれているか分かりませんが、とりあえずこれでBinanceのAPIを操作することができます。clientに対して、色んなメソッドを実行していく形になります。
全銘柄のリストを取得
# 全銘柄取得 prices = client.get_all_tickers()
pricesに銘柄がlistで入っています。listの中身はjsonです。
各銘柄の自分が所有する枚数を取得
# 自分のアカウント情報を取得 order_account = client.get_account()
order_accountに自分のアカウントの情報が入っています。order_account.get(“balance”)で、自分の各銘柄の所有枚数がlistで取得できます。
チャート情報取得
from binance.enums import * candles = client.get_klines(symbol='BNBBTC', interval=KLINE_INTERVAL_30MINUTE)
BTC建てのBNBの価格を30分間隔のチャートで取得できます。基本的に、本家のBinance APIで指定可能なパラメーターはpython-binanceでも指定できるようです。銘柄は銘柄名 + 交換対象銘柄で指定します。間隔の指定は、SDKの定義情報から呼び出しています。下記の指定が可能です。
KLINE_INTERVAL_1MINUTE = '1m' KLINE_INTERVAL_3MINUTE = '3m' KLINE_INTERVAL_5MINUTE = '5m' KLINE_INTERVAL_15MINUTE = '15m' KLINE_INTERVAL_30MINUTE = '30m' KLINE_INTERVAL_1HOUR = '1h' KLINE_INTERVAL_2HOUR = '2h' KLINE_INTERVAL_4HOUR = '4h' KLINE_INTERVAL_6HOUR = '6h' KLINE_INTERVAL_8HOUR = '8h' KLINE_INTERVAL_12HOUR = '12h' KLINE_INTERVAL_1DAY = '1d' KLINE_INTERVAL_3DAY = '3d' KLINE_INTERVAL_1WEEK = '1w' KLINE_INTERVAL_1MONTH = '1M'
注文
# 注文(ガチなやつ) order = client.create_order( symbol='BNBBTC', side=Client.SIDE_BUY, type=Client.ORDER_TYPE_MARKET, quantity=100)
# 注文(テスト) order = client.create_test_order( symbol='BNBBTC', side=Client.SIDE_BUY, type=Client.ORDER_TYPE_MARKET, quantity=100)
銘柄と、買うか売るか、買い方(マーケット価格、指値)、そして、量が必須です。価格は、指値にした場合には必須です。その他様々なパラメーターの設定が可能です。
次回
色々情報取ったり、注文も行えそうなので、この辺をLINEと連携していきたいと思います。特定銘柄の情報が欲しいなら、対話型(bot)で、急な価格変動とかのときに通知が欲しいだけならnotifyでもいいかなーとか考えています。