Binance(バイナンス)の公式APIの始め方(Python用コード)
- 公開日:2018/07/25
- 更新日:2018/10/19
- 投稿者:n bit
Pythonを使ってBinance(バイナンス)の公式APIを利用する方法を解説します。APIを利用することで通常使用することのできないオーダーの利用や、トレードを自動化したり出来ます。Binanceをメイン取引所として利用する方はAPIも使えるようになっておくと大変便利です。
この記事は約 分で読めます。(文字)
Binance(バイナンス)の公式APIとは
取り扱いの仮想通貨の種類がとても多く、取引量も世界最大級の海外取引所『Binance(バイナンス)』にも公式のAPIが用意されています。APIを利用することで取引を自動化、各種市場データの取得、通常では用意されていない注文方法等を利用したりすることができます。
バイナンスのAPIとは
APIと聞くとプログラムと身構えてしまう方も多いかもしれませんが、API自体は慣れてしまえばそんなに難しいものではありません。基本的には決まったURLでアクセスすることで指定のデータを取得することができます。
取得したいデータだけが置かれているホームページと捉えておいても大丈夫です。取得したいデータが置かれているページのURLを直接入力してアクセスしているというイメージ。
バイナンスのAPIには数多くの機能が用意されています。API利用にはアクセスするために専用のAPIキーとシークレットキーが必要となります。
APIを利用する場合は専用APIキーとシークレットキーを暗号化する必要がありますが、そのような細かな手続きに関してはバイナンス公式のライブラリをインストールしておけば全て自動でやってくれます。
バイナンスAPIを使うと何ができるの
バイナンスのAPIで用意されている機能で具体的にどのようなことができるようになるのか見ていきましょう。
バイナンスAPIの主要機能一覧
バイナンスAPIで利用することができる主要な機能は下記の通りです。この他にもバイナンスAPIでは数多くの機能が用意されています。必要に応じて利用してみて下さい。
関数 | 説明 | 引数 |
---|---|---|
get_all_tickers | 全通貨ペアの市場価格を取得 | |
get_ticker | 指定通貨ペアの24時間の価格変更の統計情報を取得 | symbol |
get_symbol_ticker | 指定通貨ペアの市場価格を取得 | symbol |
get_orderbook_ticker | 全通貨ペアの板情報を取得 (買い:最高値・数量、売り:最安値・数量) | |
get_order_book | 板情報を取得 | symbol, limit(MAX 1,000) |
get_recent_trades | 最新の全約定履歴を取得 | symbol, limit(MAX 500) |
create_order | オーダーを入れる | symbol, side, type, quantity, price |
order_limit | 指値オーダーを入れる | symbol, side, quantity, price |
order_limit_buy | 指値買いオーダーを入れる | symbol, quantity, price |
order_limit_sell | 指値売りオーダーを入れる | symbol, quantity, price |
order_market | 成行オーダーを入れる | symbol, side, quantity |
order_market_buy | 成行買いオーダーを入れる | symbol, quantity |
order_market_sell | 成行売りオーダーを入れる | symbol, quantity |
get_all_orders | 全アクティブオーダー情報を取得 | |
get_open_orders | 自分のアクティブオーダー情報を取得 | symbol |
cancel_order | オーダーをキャンセルする | symbol, orderId |
get_asset_balance | 資産情報を取得 | asset |
get_symbol_info | 通貨に関する情報を取得 | symbol |
別のページで解説しますが、バイナンスのオーダーの中には成行でのロスカット注文がありません。通常はチャートを追いかけながら手動で損切りを行うか、ストップ指値注文で対応する必要があります。急に大きな値動きが起きた時はおいて行かれる可能性もあり心配です。この問題もAPIの機能を活用することでクリアすることができます。
Pythonを使ったBinance(バイナンス)公式APIの連携方法
それでは具体的にバイナンスの公式APIの連携方法を解説していきます。APIをコントロールするにはプログラミング言語が必要となりますがここではPythonを使って進めていきます。
バイナンスからAPIキーとシークレットの取得
API利用時に必要となるAPIキーとシークレットキーを最初に取得します。バイナンスにログインしたら右上メニューからアカウントページにお進み下さい。
APIセクションのところに表示されている「Enable」ボタンをクリックしてください。
APIキー発行画面が表示されます。任意でAPIキーに付けるラベル名を入力して『Create new key』ボタンをクリックします。
- ラベル:任意
2段階認証コード入力画面が表示されますので認証コードを入力してください。入力できましたら『Submit』ボタンをクリックします。
設定内容に問題がなければ仮登録完了画面が表示されます。メールを確認するように指示されていますのでバイナンスに登録しているメールの受信ボックスを確認してください。
メール内の『Confirm Create』ボタンをクリックしてAPIキー発行を認証します。
以下の画面が表示されれば設定完了です。
『Close』ボタンをクリックしますとAPIキーとシークレットキーが表示されます。(下図の赤線部分)どこかにメモしておきましょう。
オプションの項目に関しましては適宜変更してください。付与する権限を増やすとその分リスクが高まります。
- Read Info:情報を取得するのみであればこの項目のみチェックしておけば大丈夫です。
- Enable Trading:取引をAPIで行う場合はこの項目のチェックが必要です。
- Enable Withdrawals:送金を行う場合はこの項目のチェックも必要です。
また今回発行したAPIキーとシークレットキーに関しては他人に漏れないように気をつけましょう。
これでAPIキーとシークレットキーの取得作業が完了です。
公式のバイナンスAPIライブラリーのインストール
APIキーとシークレットの取得が完了したら、次はバイナンスが用意してくれている公式ライブラリーのインストールです。ターミナルウインドウを起動し下記のコマンド入力してください。この1行だけでライブラリーのインストールは完了です。
$ pip install python-binance
Cloud9でのバイナンス公式APIライブラリーのインストールコマンド
AWSのCloud9にバイナンス公式APIライブラリーをインストールする場合は以下のコマンドで実行できます。
$ sudo pip-3.6 install python-binance
Pythonで公式ライブラリをインポートして利用する
先ほどインストールした公式ライブラリをPythonのコード内で利用するには最初にインポートする必要があります。インポートのためのコードは下記の1行です。APIのコードを書く前にこちらの1行を追記しておきましょう。
from binance.client import Client
Binance(バイナンス)公式APIのPython基本コード
バイナンス公式のAPIをPythonで利用する準備が整いましたので実際にPythonからAPI経由でデータを取得してみましょう。
APIを利用して現在の相場の価格情報と、現在の自分の資産状況を取得してみます。基本的なコードは以下のようになります。
from binance.client import Client
class BinanceAPI:
def __init__(self):
API_KEY = 'BINANCE_API_KEY'
API_SECRET = 'BINANCE_API_SECRET'
self.client = Client(API_KEY, API_SECRET)
def get_ticker(self, pair):
try:
value = self.client.get_ticker(symbol=pair)
return value
except Exception as e:
print('Exception Messege : {}'.format(e))
return None
def get_asset(self, symbol):
try:
value = self.client.get_asset_balance(asset=symbol)
return value
except Exception as e:
print('Exception Messege : {}'.format(e))
return None
def main():
binance_set = BinanceAPI()
ticker = binance_set.get_ticker('BTCUSDT')
print(ticker['lastPrice'])
asset_dict = prv_set.get_asset('BTC')
print(asset_dict['free'])
if __name__ == '__main__':
main()
API
最初に先ほどバイナンスから取得したAPIキーとシークレットを下記の部分に記述してください。
API_KEY = 'BINANCE_API_KEY'
API_SECRET = 'BINANCE_API_SECRET'
- BINANCE_API_KEY:APIキーに打ち替える
- BINANCE_API_SECRET:シークレットに打ち替える
現在の相場の価格情報
相場価格取得用のメインコードは下記の部分です。
from binance.client import Client
class BinanceAPI:
def __init__(self):
API_KEY = 'BINANCE_API_KEY'
API_SECRET = 'BINANCE_API_SECRET'
self.client = Client(API_KEY, API_SECRET)
def get_ticker(self, pair):
try:
value = self.client.get_ticker(symbol=pair)
return value
except Exception as e:
print('Exception Messege : {}'.format(e))
return None
こちらの関数をメイン関数内で呼び出して結果をprint関数で出力しています。
def main():
binance_set = BinanceAPI()
ticker = binance_set.get_ticker('BTCUSDT')
print(ticker['lastPrice'])
if __name__ == '__main__':
main()
出力結果
以下のように指定した通貨ペアの価格情報が返されます。
{
"highPrice": 過去24時間以内の最高値,
"count": 341081,
"priceChange": 過去24時間の価格変化(lastPrice - openPrice),
"quoteVolume": "514731576.00629553",
"lastId": 58860547,
"bidPrice": 買い注文の最安値,
"openTime": 日時(始値),
"prevClosePrice": 前足の最終価格(終値),
"lastQty": 最後の取引の数量,
"askQty": 売り注文の最安値の数量,
"askPrice": 売り注文の最安値,
"openPrice": 開始の価格(始値),
"symbol": 通貨ペア"BTCUSDT",
"volume": 過去24時間の出来高,
"weightedAvgPrice": "8150.30602838",
"firstId": 58519467,
"closeTime": 日時(終値),
"lastPrice": 最終の価格(終値),
"priceChangePercent": 過去24時間の価格変化率,
"lowPrice": 過去24時間以内の最安値,
"bidQty": 買い注文の最安値の数量
}
現在の自分の資産状況を取得
資産状況を取得するメインコードは下記の部分です。
from binance.client import Client
class BinanceAPI:
def __init__(self):
API_KEY = 'BINANCE_API_KEY'
API_SECRET = 'BINANCE_API_SECRET'
self.client = Client(API_KEY, API_SECRET)
def get_asset(self, symbol):
try:
value = self.client.get_asset_balance(asset=symbol)
return value
except Exception as e:
print('Exception Messege : {}'.format(e))
return None
こちらも価格情報と同じようにメイン関数内で呼び出して結果をprint関数で出力しています。def main():
binance_set = BinanceAPI()
asset_dict = prv_set.get_asset('BTC')
print(asset_dict['free'])
if __name__ == '__main__':
main()
出力結果
出力結果は以下のようになります。指定した通貨の資産の値が返されます。
{
"locked": 注文等でロックされている数量,
"free": 利用可能な数量,
"asset": 通貨
}
今日のdot
バイナンスのAPIでは、今回示したコードを元に下記の表のような機能を用意することができます。必要な機能をPyhonコードで用意して手動トレードのミスや負担を軽減しましょう。
またバイナンス用のbotを作成することも可能です。
主なAPIの機能一覧
関数 | 説明 | 引数 |
---|---|---|
get_all_tickers | 全通貨ペアの市場価格を取得 | |
get_ticker | 指定通貨ペアの24時間の価格変更の統計情報を取得 | symbol |
get_symbol_ticker | 指定通貨ペアの市場価格を取得 | symbol |
get_orderbook_ticker | 全通貨ペアの板情報を取得 (買い:最高値・数量、売り:最安値・数量) | |
get_order_book | 板情報を取得 | symbol, limit(MAX 1,000) |
get_recent_trades | 最新の全約定履歴を取得 | symbol, limit(MAX 500) |
create_order | オーダーを入れる | symbol, side, type, quantity, price |
order_limit | 指値オーダーを入れる | symbol, side, quantity, price |
order_limit_buy | 指値買いオーダーを入れる | symbol, quantity, price |
order_limit_sell | 指値売りオーダーを入れる | symbol, quantity, price |
order_market | 成行オーダーを入れる | symbol, side, quantity |
order_market_buy | 成行買いオーダーを入れる | symbol, quantity |
order_market_sell | 成行売りオーダーを入れる | symbol, quantity |
get_all_orders | 全アクティブオーダー情報を取得 | |
get_open_orders | 自分のアクティブオーダー情報を取得 | symbol |
cancel_order | オーダーをキャンセルする | symbol, orderId |
get_asset_balance | 資産情報を取得 | asset |
get_symbol_info | 通貨に関する情報を取得 | symbol |