世界的に有名なBitcoin Binances取引所で自動的に売買するためのAPIの使い方を紹介します。
API申請
Binancesアプリを起動し、SearchにAPIを入力します。
機能カテゴリにAPI管理エントリを選択します。
Create APIエントリを選択します。
適切にキーラベルを入力して[次へ]ボタンを選択します。
セキュリティのためにパズルを合わせます。
その後、電話文字認証と電子メール認証を行います。
完了すると、API Key と Secret Key を取得できます。
私は先物取引のために有効な財務項目をチェックし、現物取引と先物取引の間の入金と出金のためのパーミッツユニバーサル転送項目もチェックしました。
ccxtライブラリのインストール
次に、Binance APIを簡単に使用するためにPythonライブラリccxtをインストールしてみましょう。
Pythonの使い方はわかっているとします。
次のサイトで説明とインストール方法を確認できます。
CCXT – CryptoCurrency eXchange Trading Library
次のコマンドでインストールできます。
pip install ccxt
Binances APIの使用準備
まずccxtライブラリをインポートします。
import ccxt
以前に適用された API Key 値を使用して Binance インスタンスを生成するコードです。 options 部分の defaultType は spot で、future と入力すると先物取引が可能です。
binance_access_key = "xxxxxxxxx"
binance_secret_key = "yyyyyyyyy"
binance = ccxt.binance(config={
'apiKey': binance_access_key,
'secret': binance_secret_key,
'enableRateLimit': True,
'options': {
'defaultType': 'future'
}
})
現在のビュー
次のように簡単に照会が可能です。
binance.fetch_ticker('BTC/USDT')
残高照会
まず、先物取引のUSDT残高を照会するコードを見てみましょう。 paramsのtypeにfutureを入力します。 spotと入力すると、現物取引残高を照会できます。
balance = binance.fetch_balance(params={"type": "future"})
print(balance['USDT']['free'])
現物取引で保有したコインのボリュームを持ってくるコードも書いてみましょう。
balance_info = binance.fetch_balance(params={"type": "spot"})
for balance in balance_info['info']['balances']:
if market['id'].find(balance['asset']) > -1:
print(abs(float(balance['free'])))
以下は、先物取引でショートポジションに入ったコインのボリュームを取得するコードです。現物取引のコードとの違いをよくご確認ください。
balance_info = binance.fetch_balance(params={"type": "future"})
for position in balance_info['info']['positions']:
if position['symbol'] == market['id']:
print(abs(float(position['positionAmt'])))
先物取引の参入と整理
以下はショートポジションエントリーコードです。市場価格と指定価格取引の両方が可能です。
symbol='BTC/USDT'
# market sell order
sell_order = binance.create_market_sell_order(symbol=symbol, amount=0.1)
# limit sell order
btc = binance.fetch_ticker(symbol)
sell_order = binance.create_limit_sell_order(symbol=symbol, amount=0.1, price=btc['last'])
そしてショートポジション整理コードです。同様に、市場価格と指定価格で取引することができます。
symbol='BTC/USDT'
# market buy order
buy_order = binance.create_market_buy_order(symbol=symbol, amount=0.1)
# limit buy order
btc = binance.fetch_ticker(symbol)
buy_order = binance.create_limit_buy_order(symbol=symbol, amount=0.1, price=btc['last'])
ロングポジションの進入と整理は逆に進めばいいし現物取引も同じマソードで進行が可能です。
現物とギフト間の口座振替
まず、現物からギフト口座に振り込むために、現物口座残高の金額を照会し、その値をそのままギフト口座に転送します。バイナンス取引所内の口座から振込時に手数料はありません。
balance_spot = binance.fetch_balance(params={"type": "spot"})
balance_spot_free = balance_spot['USDT']['free']
if balance_spot_free > 0:
transfer = binance.transfer('USDT', balance_spot_free, 'spot', 'future')
逆の場合も同様です。
balance_future = binance.fetch_balance(params={"type": "future"})
balance_future_free = balance_future ['USDT']['free']
if balance_future_free > 0:
transfer = binance.transfer('USDT', balance_future_free, 'future', 'spot')
レバレッジ設定
ギフト取引の場合、レバレッジ設定が可能です。コードは次のとおりです。 leverage部分の数字を変更するだけです。
markets = binance.load_markets()
market = binance.market('BTC/USDT')
resp = binance.fapiPrivate_post_leverage({
'symbol': market['id'],
'leverage': 2
})
取引データを見る
次のようにコードを書くと、BTC 1 日の取引データを 1,000 件検索できます。
candles = binance.fetch_ohlcv(
symbol='BTC/USDT',
timeframe='1d',
since=None,
limit=1000)