【Python】ビットバンク(bitbank) APIの取得|自動売買を仮想通貨・ビットコイン取引で実現する方法解説

当ページには広告が含まれています。

こんにちは、DXCEL WAVEの運営者(@dxcelwave)です!

こんな方に向けた記事です
  • 仮想通貨の自動売買に興味がある
  • bitbankのAPI取得手順を知りたい
  • Python環境でAPI機能を利用する方法が知りたい
目次

仮想通貨の自動売買とは

仮想通貨の自動売買とは、通貨情報参照・決済・送金等の取引に関連する操作をプログラムで代替することを指します。

自動売買の実装は、取引操作の手間削減はもちろんのこと、仮想通貨収益化プロセスの効率化も期待できます。

仮想通貨の自動売買ツール実装手段には「取引所が提供するAPI」が欠かせません。

APIと聞くと、難しく感じるかもしれませんが、利用方法さえ分かれば意外と簡単に自作ツールにも取り入れられます。

本記事では仮想通貨の自動売買ツール作成に挑戦してみたい方向けに、bitbankのAPIを活用し、ビットコイン自動売買ツールを作成する方法について解説します。

なお、後述で紹介するプログラムは、ビットコイン以外の通貨にも横展開できるようになっているため、ビットコイン以外の自作ツールを作成したい方も必見です!

様々な仮想通貨の自動売買手法はこちらの記事で解説しています。合わせてご覧下さい。

ビットバンク(bitbank)取引所の概要・API取得手順

【引用】の公式HP

bitbank取引所のAPIを用いて自動売買ツールを作成する前に、bitbankの概要とAPIを利用する上で必要となる事前準備について言及します。

bitbankは「API機能が豊富」「最低取引単位を小さく設定できる」「取引時の手数料が低い」という特徴があるため、自動売買ツール作成に関して非常に適した取引所と言えます。

また仮想通貨取引量は国内No1とのことで、bitbankを用いた取引の信頼性も高いと言えます。

【参考】主要な仮想通貨取引所の比較情報

スクロールできます
取引所名最低取引量現物取引手数料*1入金手数料[円]入金手数料[BTC]出金手数料[円]送金手数料[BTC]信用取引API提供ccxt自動売買おすすめ
0.005 BTC無料無料無料407円0.0005 BTC×★★★★★
0.0001BTCMaker:-0.01%
Taker:0.05%
無料無料0円/
400円(大口出金)
無料×★★★★☆
0.0001BTCMaker:-0.02%
Taker:0.12%
無料無料550円/
770円(3万円以上)
0.0006 BTC×★★★★☆
0.0001 BTC無料無料無料330 円無料××★★★☆☆
表:暗号資産取引所の比較表(最低取引量の単位はBTCで記載)
補足
  1. 現物取引手数料の対象通貨はBTC/JPY。手数料は約定数量 × 上記記載の割合[%]として算出可能。

暗号資産の取引が初めての方には特に、bitbankのAPIをおすすめします。

即日口座開設ができ、他の取引所と比べて少額取引が可能です。そのため、万一のAPI取引失敗リスクを最小限に抑えることができるでしょう。

合わせて読みたい

暗号資産の取引経験があり、レバレッジ取引もしたい方には、のAPIがおすすめです。

レバレッジ取引のAPI機能を活用すると、自作ツールでできることが大幅に広がります。

bitbank同様「API機能が豊富」「最低取引単位を小さく設定できる」「取引時の手数料が低い」という特徴があるため、使い勝手が良いと言えます。

bitbankの口座開設

自動売買ツールの作成にはbitbank APIを用いる必要があります。

APIを使うには、bitbankの口座開設が必須です。

そのため、bitbankの口座開設が未済の方は事前に開設手続きを行いましょう。口座開設はスマホと本人確認書類さえあれば10分で手続き完了でき、即日口座開設および暗号資産取引が可能です。

アカウントをお持ちでない方はこちら

bitbankのAPIキー・シークレットを取得

口座開設が完了しましたらAPIを利用するための情報としてAPIキーとシークレットキーを取得します。

下記の手順で取得していきましょう!

bitbankでAPI情報を取得する手順
(1) 会員ページにログイン
bitbankログインページ(https://app.bitbank.cc/login)
(2) チャート画面右上のアカウントアイコンから「設定」を選択
(3) 2段階認証とSMS認証を行う
(4) APIタグを開き「APIキーの発行」をクリック
(5)API取得に必要な情報を入力
(6) APIキーとシークレットキーが取得できたことを確認

APIキーとAPIシークレットは、後ほど活用するためメモを残しておきましょう!

【Python・実践】bitbank APIの使い方と自動売買ツールの作成方法解説

実際にbitbankのAPIで自動売買ツール作成します!下記機能をPythonで実装できるようになりましょう。

No作成する自動売買機能
必須APIキー・シークレットキー設定
1通貨情報の取得
2板情報の取得
3残高情報の取得
4仮想通貨の注文する
5仮想通貨の注文内容キャンセル
6未約定の注文状況確認
7約定した取引確認

※bitbankのAPIはccxtという暗号資産APIを容易に扱えるパッケージに対応しているため、そちらを用いることします。

事前にccxtをインストールしておきましょう!

pip install ccxt

APIキー・シークレットキーの設定

ビットコイン自動売買ツールの動作実行に必要なAPIキー・シーレットキーを定義します。必要となるライブラリも合わせてインポートしましょう。

import ccxt
from pprint import pprint

# APIキー&シークレットキー
apiKey  = "APIキーを入力"
secret  = "シークレットキーを入力"

# bitbank取引所とAPI呼出
bitbank = ccxt.bitbank({'apiKey':apiKey,'secret':secret})

通貨情報の取得

bitbankが取り扱う通貨情報(銘柄情報)は下記で取得可能です。

def markets():
    result = bitbank.load_markets() 
    return result
#出力
pprint(markets())
# 出力イメージ
# {'BTC/JPY': {'active': True,
#              'base': 'BTC',
#              'baseId': 'btc',
#              'id': 'btc_jpy',
#              'info': {'amount_digits': '4',
#                       'base_asset': 'btc',
#                       'is_enabled': True,
#                       'limit_max_amount': '1000',
#                       'maker_fee_rate_base': '0',
#                       'maker_fee_rate_quote': '-0.0002',
#                       'market_allowance_rate': '0.2',
#                       'market_max_amount': '10',
#                       'name': 'btc_jpy',
#                       'price_digits': '0',
#                       'quote_asset': 'jpy',
#                       'stop_order': False,
#                       'stop_order_and_cancel': False,
#                       'taker_fee_rate_base': '0',
#                       'taker_fee_rate_quote': '0.0012',
#                       'unit_amount': '0.0001'},
#              'limits': {'amount': {'max': 1000.0, 'min': 0.0001},
#                         'cost': {'max': None, 'min': 0.0001},
#                         'price': {'max': None, 'min': 1.0}},
#              'maker': -0.0002,
#              'percentage': True,
#              'precision': {'amount': 4, 'price': 0},
#              'quote': 'JPY',
#              'quoteId': 'jpy',
#              'spot': True,
#              'symbol': 'BTC/JPY',
#              'taker': 0.0012,
#              'type': 'spot'},}
#

板情報の取得

各種通貨の板情報は下記より取得可能です。関数の引数には、通貨情報(symbol)を指定しましょう。

下記の例はsymbolをビットコイン(BTC/JPY)としていますが、他の通貨コードを指定してお好みの暗号資産情報を出力することも可能です。

def ticker(symbol):
    result = bitbank.fetch_ticker(symbol=symbol)
    return result

#出力
pprint(ticker(symbol='BTC/JPY'))
# 出力イメージ
# {'ask': 5080455.0,
#  'askVolume': None,
#  'average': None,
#  'baseVolume': 607.0758,
#  'bid': 5078858.0,
#  'bidVolume': None,
#  'change': None,
#  'close': 5079303.0,
#  'datetime': '2022-03-02T12:20:57.590Z',
#  'high': 5163537.0,
#  'info': {'buy': '5078858',
#           'high': '5163537',
#           'last': '5079303',
#           'low': '4971189',
#           'open': '5088435',
#           'sell': '5080455',
#           'timestamp': '1646223657590',
#           'vol': '607.0758'},
#  'last': 5079303.0,
#  'low': 4971189.0,
#  'open': None,
#  'percentage': None,
#  'previousClose': None,
#  'quoteVolume': None,
#  'symbol': 'BTC/JPY',
#  'timestamp': 1646223657590,
#  'vwap': None}

残高情報の取得

bitbankに預けている残高情報(日本円、仮想通貨の残高)は下記で取得可能です。

def balance():
    result = bitbank.fetch_balance()
    return result

#出力
pprint(balance())
# 出力イメージ
# {'BAT': {'free': 10000, 'total': 40000, 'used': 10000},
#  'BCH': {'free': 0.0, 'total': 0.0, 'used': 0.0},
#  'BTC': {'free': 10000, 'total': 40000, 'used': 10000},
#  'ETH': {'free': 0.0, 'total': 0.0, 'used': 0.0},
#  'JPY': {'free': 0.0, 'total': 0.0, 'used': 0.0},
#  'LINK': {'free': 0.0, 'total': 0.0, 'used': 0.0},
#  'LTC': {'free': 0.0, 'total': 0.0, 'used': 0.0},
#  'MKR': {'free': 0.0, 'total': 0.0, 'used': 0.0},
#  'MONA': {'free': 0.0, 'total': 0.0, 'used': 0.0},
#  'OMG': {'free': 0.0, 'total': 0.0, 'used': 0.0},
#  'QTUM': {'free': 0.0, 'total': 0.0, 'used': 0.0},
#  'XLM': {'free': 0.0, 'total': 0.0, 'used': 0.0},
#  'XRP': {'free': 0.0, 'total': 0.0, 'used': 0.0},
#  'XYM': {'free': 0.0, 'total': 0.0, 'used': 0.0},

仮想通貨(ビットコインの場合)を注文

ビットコインを注文するコードを下記に示します。

コード実行で実際に注文が走ります。取り扱いには十分注意です。

注文に用いる関数

order = bitbank.create_order(
                symbol = 'BTC/JPY',    #通貨
                type   = 'limit',      #注文方法:market(成行)、limit(指値)
                price  = 4000000,      #指値の場合価格を指定
                side   = 'buy',        #購入(buy) or 売却(sell)
                amount = 0.005,        #購入数量[BTC]
                )
# 出力
pprint(order)

暗号資産の注文にはcreate_order()メソッドを用います。引数には下記を設定しましょう。

引数名 概要 必須or任意
symbol 通貨レート 必須
type 注文方法:limit(指値),market(成行) 必須
price 指値価格 指値注文(limit)では必須
side 売買方法(buy or sell) 必須
amount(またはquantity) 仮想通貨取引数量 必須

ビットコインの注文内容キャンセル

注文をキャンセルしたい場合、注文した取引IDを引数に指定して実行します。

#注文した際のID
order_id = '111111111'
symbol =   'BTC/JPY'

def cancel_order(order_id,symbol):
    result = bitbank.cancel_order(
                    symbol = symbol,  # 通貨
                    id = order_id,    # 注文ID
                    )
    return result

#出力
pprint(cancel_order(order_id,symbol))

未約定の注文状況確認

指値注文した際、約定せずに注文が残り続ける場合があります。そのような未約定の注文状況は、下記で確認できます。

関数の引数には、通貨情報(symbol)を指定しましょう。

def open_order(symbol):
    result = bitbank.fetch_open_orders(symbol = symbol)
    return result

pprint(open_order(symbol='BTC/JPY'))
# 出力イメージ
# [{'amount': 0.0001,
#   'cost': 508.532,
#   'datetime': '2022-03-02T12:26:09.849Z',
#   'fee': None,
#   'fees': [],
#   'id': '1106579689',
#   'info': {'amount': '0.0001',
#            'executed_at': '1646223969849',
#            'price': '5085320',
#            'side': 'sell',
#            'transaction_id': '1106579689'},
#   'order': None,
#   'price': 5085320.0,
#   'side': 'sell',
#   'symbol': 'BTC/JPY',
#   'takerOrMaker': None,
#   'timestamp': 1646223969849,
#   'type': None},

約定した取引確認

約定した取引情報の確認には、下記のコードを用います。

関数の引数には、通貨情報(symbol)を指定しましょう。

def trades(symbol):
    result = bitbank.fetch_my_trades(symbol = symbol)
    return result

#出力
pprint(trades(symbol='BTC/JPY'))
# 出力イメージ
# {
#   "status": 0,
#   "data": {"約定した取引一覧情報が表示される"},
#   "responsetime": "2022-01-15T02:51:44.183Z"
# }

【仮想通貨・ビットコイン】自動取引実践法・その他優良情報

最後までご覧いただきありがとうございました。当サイトでは仮想通貨・ビットコインにおける多様な自動取引手法の解説記事を多数取り扱っております。

取引所別:APIの取得手順と使い方の解説記事

スクロールできます
対応言語記事名
Python【GMOコイン】 APIで仮想通貨取引の自動化
Python【BitTrade】 APIで仮想通貨取引の自動化
Python【bitbank】 APIで仮想通貨取引の自動化
Python【Coincheck】APIで仮想通貨取引の自動化
Python【bitFlyer】APIで仮想通貨取引を自動化
Python【BITPOINT】APIで仮想通貨取引の自動化

機械学習やテクニカル分析を採用した仮想通貨取引の解説記事

スクロールできます
対応言語記事名指標
共通自動売買の種類・自作時のポイント全て
Pythonリアルタイムチャート分析基礎トレンド
Python移動平均線トレンド
Pythonゴールデンクロス・デッドクロストレンド
Pythonアービトラージ(裁定取引)時間・値幅
Pythonボリンジャーバンドオシレータ
PythonMACDオシレータ
PythonRSIオシレータ
Python時系列予測モデルの構築機械学習・AI
【トレンド】:値動きが上昇・下降どちらのトレンドなのか判断に有効
【オシレータ】:現在の相場に対する買われすぎ・売られすぎの判断に有効

その他仮想通貨自動トレード解説記事

スクロールできます
対応言語記事名
Python【データ収集】仮想通貨の過去データを大量取得する方法
Python【初心者向け】ccxtを活用した仮想通貨の自動取引
Node.js【初心者向け】ccxtを活用した仮想通貨の自動取引

最後に

この記事が気に入ったら
フォローしてね!

本記事をシェア!
目次