Binance(バイナンス)の公式APIの始め方(Python用コード)のイメージ画像

Binance(バイナンス)の公式APIの始め方(Python用コード)

  • 公開日:2018/07/25
  • 更新日:2018/10/19
  • 投稿者:n bit

Pythonを使ってBinance(バイナンス)の公式APIを利用する方法を解説します。APIを利用することで通常使用することのできないオーダーの利用や、トレードを自動化したり出来ます。Binanceをメイン取引所として利用する方はAPIも使えるようになっておくと大変便利です。

  • Python
  • ブロックチェーン
  • 仮想通貨
  • 取引所
  • bitbank

この記事は約 分で読めます。(文字)

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キーとシークレットキーを最初に取得します。バイナンスにログインしたら右上メニューからアカウントページにお進み下さい。

Binance API アカウントページに遷移

APIセクションのところに表示されている「Enable」ボタンをクリックしてください。

Binance API 発行ボタン

APIキー発行画面が表示されます。任意でAPIキーに付けるラベル名を入力して『Create new key』ボタンをクリックします。

  • ラベル:任意

Binance API ラベルの設定

2段階認証コード入力画面が表示されますので認証コードを入力してください。入力できましたら『Submit』ボタンをクリックします。

Binance API 2段階認証

設定内容に問題がなければ仮登録完了画面が表示されます。メールを確認するように指示されていますのでバイナンスに登録しているメールの受信ボックスを確認してください。

Binance API 仮登録完了画面

メール内の『Confirm Create』ボタンをクリックしてAPIキー発行を認証します。

Binance API メール認証

以下の画面が表示されれば設定完了です。

Binance API 発行完了

『Close』ボタンをクリックしますとAPIキーとシークレットキーが表示されます。(下図の赤線部分)どこかにメモしておきましょう。

Binance 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