バイナンス(BINANCE)APIをPythonで使いこなす【初心者向け】

プログラミング 仮想通貨

あなた

あなた
「バイナンス(BINANCE)のAPIを使って仮想通貨のプログラミング取引を体験してみたいな。具体的な手順を解説してる参考情報ってないかな。」

そんな悩みを解決します。

バイナンスAPIの使い方を、一つずつ動かしながら徹底解説。プログラミングでもっと自由に仮想通貨に触れてみましょう。

ご注意
本記事は、プログラミングでAPIを活用する知識を学ぶことを目的としています。バイナンスでの仮想通貨の取引をおすすめしているわけではありません。この記事や本サイトの情報を参考に仮想通貨のプログラムを動かす場合は、全て自己責任でお願いいたします。免責事項に記載の通り、本サイトの情報を参考にして発生したいかなる損害も責任を負いません。

この記事で分かること

  • バイナンス(BINANCE)APIの使い方
  • バイナンス(BINANCE)APIを活用したプログラムの作り方

バイナンス(BINANCE)APIをPythonで使うと何ができるのか

バイナンスAPIでできること

あなた

あなた
「バイナンスAPIで仮想通貨の取引を試してみたい!」

そんな風に考えられるということは、あなたはもう仮想通貨についてある程度の知識がありますね?

バイナンスは、日本の取引所に比べて、取り扱う仮想通貨の銘柄数も取引量も圧倒的。取引がとても活発に行われているので、バイナンスAPIを活用すればよりチャンスを掴む可能性が上がります。

そのバイナンスのAPIを使って何ができるのか、まずは自動売買botの作成や積立投資の自動化などをまとめた記事をぜひ参考にしてみてください。

先にやりたいことをイメージしておけば、バイナンスAPIの使い方が分かった後にいろいろカスタマイズができるようになります。

BTCやETHなら国内取引所のAPIでも十分

バイナンスは取り扱う仮想通貨の銘柄が多いので、BTCやETH以外の色々な通貨に興味があるならバイナンスAPIを使うのが一番。

でも、ビットコインやイーサリアムをメインに取引したいのであれば、国内取引所のビットバンクやコインチェックのAPIも十分に活用できますよ。

バイナンスAPIを使う前に、まずビットバンクやコインチェックのAPIを使うと理解も深まります。

先に国内取引所でAPIを試してみたい場合は、以下の解説記事も参考にしてみてくださいね。

バイナンス(BINANCE)APIをPythonで使うには

バイナンスAPIの使い方を学ぶ

それでは、早速バイナンスAPIの使い方を学んでいってみましょう。流れは以下の通りです。

  1. バイナンスAPIのAPIキーを発行する
  2. バイナンスAPIのライブラリをインストールする
  3. バイナンスAPIを実際に動かしてみる

今回、PythonでバイナンスAPIを動かします。もしまだPythonのプログラミング環境がない場合は、Python入門チュートリアルの記事を参考してみてください。

また、APIキーを発行するにはバイナンスの口座開設が必要なので、まだ口座を持っていない方はバイナンスのサイトで事前に開設しておいてくださいね。

バイナンスで口座を開設する(公式サイトリンク)

それでは、早速やってみましょう。

APIキーを発行する

最初に、バイナンスAPIを使うためにAPIキーを発行します。

バイナンス(BINANCE)にログインして、右上のメニューからAPI Managementを選択。

バイナンスのAPIマネジメントメニュー

適当なラベル(ProgrammingとかでOK)をつけて、Create APIボタンを押します。

バイナンスでAPIキーを作成する画面

認証処理を終えると、APIキーが生成されます。シークレットキーは1回しか表示されないので、保存しておくのを忘れずに。忘れたら作り直せばOKです。

バイナンスでAPIキーを表示する画面

APIキーは超大事なので、取り扱いに注意してくださいね。

続いて、右上のEdit Restrictionsをクリック。APIを使ってオーダーを入れてみるので、Enable Spot & Margin Trading にチェックを入れてSaveボタンを押します。

バイナンスAPIで現物注文を有効にする

これにて、APIキーの準備完了です。

APIをもっと安全に使うには?

セキュリティを上げるために、APIを使うことのできるIPアドレスを制限することもできます。

必要に応じて、この欄にあなたのパソコンのIPアドレスを設定しておいてくださいね。

バイナンスAPIでIPアドレスを制限する

バイナンスAPIのライブラリをインストール

続いて、python-binanceというバイナンスAPIを簡単に扱えるPythonライブラリをインストールします。

python-binanceは、GitHubリポジトリに書いてある通り、バイナンスAPIのアンオフィシャルなラッパー(バイナンスAPIを使いやすくしてくれる便利ツール)。

アンオフィシャルとは書いてありますが、見ての通りStarやForkの数がとても多く、もう実質オフィシャルなくらい多くの人が活用しています。

我々も、ありがたくこのpython-binanceを使っちゃいましょう。

python-binanceをインストールする前に

Python環境を汚したくない人は、仮想環境を立てるのを忘れずに!よく分からない場合は、無視してもOKです。

まず、Macならターミナル、Windowsならコマンドプロンプトを開いて、以下のコマンドを実行します。

pip install python-binance

実は、インストールはこれだけで終わり。超簡単ですね。

バイナンスAPIを実際に動かしてみる

それでは、python-binanceを使って適当なオーダーを入れてみましょう。

まず、以下のコマンドでPythonを起動します。

python3

すると、このようなコマンドを入力していく画面になります。

>>> (ここにコマンドを入力していく)

GitHubリポジトリの説明にしたがって、このコマンドでpython-binanceのライブラリをインポートします。

>>> from binance.client import Client

続いて、先ほど作ったAPIキーを使って、python-binanceのクライアントオブジェクトを作ります。

>>> client = Client('あなたのAPIキー', 'あなたのシークレットキー')

あとは、python-binanceのドキュメントで説明されている通り、簡単な指値注文をいれてみましょう。

>>> order = client.order_limit_buy(symbol='ADAUSDT', quantity=10, price=2)

カルダノADAコインを、USDTで、10枚、2ドルで買う、という注文です。

APIの使い方を学ぶための実験的な注文なので、約定しなさそうな注文、あるいは約定しても問題ない程度の注文になるように注意してくださいね。

バイナンスAPIが動いていることを確認する

バイナンスAPIを使って入れたオーダー、ちゃんと入っているかバイナンスの画面上で確認してみましょう。

まずバイナンス(BINANCE)にログインして、右上のOrders(注文)からSpot Order(現物注文)をクリック。

バイナンスの現物注文メニュー

すると、以下の通り注文が入っていることが確認できますね。

バイナンスで実際に入った現物注文を確認する

意図せず約定してしまわないように、確認が終わったらキャンセルしておくのを忘れずに!

最小注文数量に注意

最初、適当に以下のオーダー(ADAを、USDTで、1枚、1ドルで買う)を入れてみるとエラーが返ってきました。

>>> order = client.order_limit_buy(symbol='ADAUSDT', quantity=1, price=1)

エラーの内容はこんな感じ。

APIError(code=-1013): Filter failure: MIN_NOTIONAL

MIN_NOTIONALということで、要は注文数量が少なすぎますよ、という意味。バイナンス公式にある通り、最小注文数量の条件が設定されています。

バイナンスの最小注文数量

バイナンスに限らず、どこの取引所でも最小注文数量は設定されていることが多いです。

この条件も今後また変わっていく可能性があるので、思った通りにオーダーが通らない時はこの点に注意してみてくださいね。

他にもエラーが出た場合は、公式APIドキュメントのエラーコード一覧から確認可能です。

バイナンス(BINANCE)APIでPythonプログラムを作ってみよう

バイナンスAPIを使ってプログラムを作成する

バイナンスAPIの使い方が分かったところで、APIの機能を組み合わせた簡単なプログラムも作ってみましょう。

ついに日本の取引所での上場も決まった、カルダノADAコインの自動積立購入プログラムです。

こちらの記事で紹介した、ビットバンクAPIによる積立購入プログラムを、バイナンスAPIで使えるようにカスタマイズしてみます。

まず、プログラム全体はこんな感じになりました。

from binance.client import Client

API_KEY = 'XXXXX'		# APIキーを入れる
SECRET_KEY = 'XXXXX'		# シークレットキーを入れる

client = Client(API_KEY, SECRET_KEY)

ticker = 'ADAUSDT'        # 積立する通貨ペア
interval = 60*60*24*15    # 積立周期(sec * min * hour * day)
periodic_amount = 100     # 積立金額(ドル)

while True:
  time.sleep(interval)

  avg_price = client.get_avg_price(symbol=ticker)
  price = float(avg_price['price'])
  amount = round(periodic_amount / price, 0)

  order = client.order_market_buy(symbol=ticker, quantity=amount)

なるべく簡単に理解できるように、エラー処理とかは入れていません。後で追加してみましょう。

まずは、上から順に一つずつ内容を理解していきます。

必要なライブラリをインポートする

from binance.client import Client

1行目では、python-binanceのライブラリをインストールしています。

これは、さっきバイナンスAPIを試しに動かしてみる時も使いましたね。

APIキーを使ってオブジェクトを作成する

API_KEY = 'XXXXX'		# APIキーを入れる
SECRET_KEY = 'XXXXX'		# シークレットキーを入れる

client = Client(API_KEY, SECRET_KEY)

ここでは、あなたのAPIキーとシークレットキーを使って、バイナンスAPIを処理するクライアントのオブジェクトを生成しています。

例えば、あなたのAPIキーが 123 で、シークレットキーが 456 なら、以下のように書きます。

API_KEY = '123'			# APIキーを入れる
SECRET_KEY = '456'		# シークレットキーを入れる

シングルクオーテーション(’ ‘)は消さないように注意してくださいね。

積立購入の条件を設定する

ticker = 'ADAUSDT'        # 積立する通貨ペア
interval = 60*60*24*15    # 積立周期(sec * min * hour * day)
periodic_amount = 100     # 積立金額(ドル)

続いて、積立購入する条件を設定していきます。

ticker は、文字通り銘柄。ここではUSDTでADAを買うように設定しています。BTCにするならBTCUSDTと書き直したり、自由にカスタマイズ可能です。

interval は、積立周期。秒に換算しています。この例では15日ごとに設定していますが、1週間毎にするなら、15(日)を 7(日)に書き換えればOK。

periodic_amount は、積立購入する金額。単位はドルです。10,000円積立しようとして10,000って書くと、10,000ドル = 約1,100,000円(USD/JPY=110円の時)になるのでご注意を。

定期的な購入処理を発生させる

while True:
  time.sleep(interval)

まず、while True でプログラムが動き続けるように設定。

そして、sleep の引数にいれた数字の秒数、すなわち積立周期の秒数を待ってからプログラムが走るようにしています。

積立金額分を購入する

avg_price = client.get_avg_price(symbol=ticker)
price = float(avg_price['price'])
amount = round(periodic_amount / price, 0)

order = client.order_market_buy(symbol=ticker, quantity=amount)

最後に、実際に注文を入れるためのプログラムです。

まず1行目、python-binanceを使って、バイナンスAPIから銘柄の平均価格を取得して avg_price に入れます。

2行目、avg_price にはdict型が返ってくるので、その中の’price’キーの値をfloat型に変換して price に入れます。

3行目、積立金額分(periodic_amount)の仮想通貨の枚数を計算して、amount に入れます。

最後に、銘柄の情報(ticker)と購入枚数(amount)で成行買い(market buy)注文を入れれば完了。

この購入処理が、積立周期(interval)に設定した間隔で自動的に発生していくわけですね。

カスタマイズ:購入した枚数を表示する

ちゃんと買えているのかどうか、いちいちバイナンスの画面で確認するのって面倒です。

そんな場合は、購入した時の状態を出力してあげれば便利そうですね。例えば、こんな感じのコードを最後に加えてみます。

message = 'buy ' + str(amount) + ticker + ' @' + str(round(price,3))
print(message)

すると、こんな形でメッセージが出力されます。

buy 35.0ADAUSDT @2.829

2.829ドルで、35ADAコインを買いましたよ!っていう感じ。ずいぶん分かりやすくなりました。

35 x 2.829 で、合計99.015ドル。periodic_amount に入れた積立金額の100ドル分、ちゃんと買えてますね。

カスタマイズ:買えない時にプログラムを停止する

積立投資は、意識せずに買い増していけるのが魅力。でも、買えない状態の時にプログラムを動かすわけにはいかないですよね。

そんな時は、自分の口座に買えるだけの余力があるのか、注文前に確認するコードを入れると良さそうです。

balance = client.get_asset_balance(asset='USDT')
if float(balance['free']) < periodic_amount:
	raise

1行目、python-binanceでバイナンスAPIを使って、あなたの口座のUSDTの余力データを取得します。

2行目、balanceはdict型で返ってくるので、その中の'free'キー(買付余力)の数字が、積立したい金額を下回っているかチェック。

3行目、もし下回っていたらraiseでプログラムを停止させる。

このコードを、購入処理が動く前(avg_priceの計算前)に挿入すれば、お金がない時はプログラムが止まってくれるので安心です。

カスタマイズ:プログラムを動かし続ける

ここまで理解したプログラム、あとは実行すればカルダノADAコイン積立購入の設定完了です。

プログラムを main.py といったファイルに保存したら、このコマンドで実行させましょう。

python3 main.py
あなた

あなた
「動かしておくにはパソコンつけっぱなし?」

一番簡単な方法はパソコンを立ち上げたまま放置すること。でも、それだと何か不安になりますよね。

そんな時は、VPS(サーバー)を活用して24時間動かし続けてみましょう。詳細な手順はこの記事で解説しているので、参考にしてみてください。

バイナンス(BINANCE)APIをPythonで使いこなして仮想通貨をもっと自由に

仮想通貨を自由に楽しむ

バイナンスは、名実ともに世界一の仮想通貨取引所。そのAPIを使いこなすことで、仮想通貨の世界も広がります。

本記事で作った仮想通貨の積み立てプログラムでは、この4つのバイナンスAPIを使いました。

  • order_market_buy:成行で買う
  • order_limit_buy:指値で買う
  • get_avg_price:銘柄の平均価格を取得する
  • get_asset_balance:口座の情報を取得する

そして、これ以外にも使えるAPIはたくさんあります。注文をキャンセルしたり、取引履歴をみたり、ほぼ全てと言っていいほどプログラミングで操作可能。

バイナンスAPIを使って自動売買botを作ることだってできちゃいます。

バイナンスAPIを駆使して、自己責任であなただけのプログラムを組み立ててみてくださいね。