こんにちは、DXCEL WAVEの運営者(@dxcelwave)です!
- 仮想通貨の自動売買に興味がある
- bitbankのAPI取得手順を知りたい
- Python環境でAPI機能を利用する方法が知りたい
仮想通貨の自動売買とは
仮想通貨の自動売買とは、通貨情報参照・決済・送金等の取引に関連する操作をプログラムで代替することを指します。
自動売買の実装は、取引操作の手間削減はもちろんのこと、仮想通貨収益化プロセスの効率化も期待できます。
仮想通貨の自動売買ツール実装手段には「取引所が提供するAPI」が欠かせません。
APIと聞くと、難しく感じるかもしれませんが、利用方法さえ分かれば意外と簡単に自作ツールにも取り入れられます。
本記事では仮想通貨の自動売買ツール作成に挑戦してみたい方向けに、bitbankのAPIを活用し、ビットコイン自動売買ツールを作成する方法について解説します。
なお、後述で紹介するプログラムは、ビットコイン以外の通貨にも横展開できるようになっているため、ビットコイン以外の自作ツールを作成したい方も必見です!
様々な仮想通貨の自動売買手法はこちらの記事で解説しています。合わせてご覧下さい。
【仮想通貨】自動売買ツールの自作方法とおすすめ暗号資産取引所|無料で実践できるビットコイン自動取引の仕組みも徹底解説
「仮想通貨(暗号資産)の自動売買ツール作成に興味がある」「自動売買の仕組み・作り方を知りたい」「どこの仮想通貨取引所がおすすめなのか知りたい」本記事ではこのような要望にお応えします。
ビットバンク(bitbank)取引所の概要・API取得手順
bitbank取引所のAPIを用いて自動売買ツールを作成する前に、bitbankの概要とAPIを利用する上で必要となる事前準備について言及します。
bitbankは「API機能が豊富」「最低取引単位を小さく設定できる」「取引時の手数料が低い」という特徴があるため、自動売買ツール作成に関して非常に適した取引所と言えます。
また仮想通貨取引量は国内No1とのことで、bitbankを用いた取引の信頼性も高いと言えます。
【参考】主要な仮想通貨取引所の比較情報
取引所名 | 最低取引量 | 現物取引手数料*1 | 入金手数料[円] | 入金手数料[BTC] | 出金手数料[円] | 送金手数料[BTC] | 信用取引 | API提供 | ccxt | 自動売買おすすめ |
---|---|---|---|---|---|---|---|---|---|---|
Coincheck | 0.005 BTC | 無料 | 無料 | 無料 | 407円 | 0.0005 BTC | × | ○ | ○ | ★★★★★ |
GMOコイン | 0.0001BTC | Maker:-0.01% Taker:0.05% | 無料 | 無料 | 0円/ 400円(大口出金) | 無料 | ○ | ○ | × | ★★★★☆ |
bitbank | 0.0001BTC | Maker:-0.02% Taker:0.12% | 無料 | 無料 | 550円/ 770円(3万円以上) | 0.0006 BTC | × | ○ | ○ | ★★★★☆ |
BITPOINT | 0.0001 BTC | 無料 | 無料 | 無料 | 330 円 | 無料 | × | ○ | × | ★★★☆☆ |
- 現物取引手数料の対象通貨はBTC/JPY。手数料は約定数量 × 上記記載の割合[%]として算出可能。
暗号資産の取引が初めての方には特に、bitbankのAPIをおすすめします。
即日口座開設ができ、他の取引所と比べて少額取引が可能です。そのため、万一のAPI取引失敗リスクを最小限に抑えることができるでしょう。
暗号資産の取引経験があり、レバレッジ取引もしたい方には、GMOコインのAPIがおすすめです。
レバレッジ取引のAPI機能を活用すると、自作ツールでできることが大幅に広がります。
bitbank同様「API機能が豊富」「最低取引単位を小さく設定できる」「取引時の手数料が低い」という特徴があるため、使い勝手が良いと言えます。
【Python】GMOコインAPIで仮想通貨取引の自動売買|ビットコイン等の板情報・残高・現物信用注文の自動化方法解説
本記事は「仮想通貨の自動売買に興味がある」「自動売買ツールを自作したい」という方を対象としたプログラム解説記事です。
bitbankの口座開設
自動売買ツールの作成にはbitbank APIを用いる必要があります。
APIを使うには、bitbankの口座開設が必須です。
そのため、bitbankの口座開設が未済の方は事前に開設手続きを行いましょう。口座開設はスマホと本人確認書類さえあれば10分で手続き完了でき、即日口座開設および暗号資産取引が可能です。
bitbankのAPIキー・シークレットを取得
口座開設が完了しましたらAPIを利用するための情報としてAPIキーとシークレットキーを取得します。
下記の手順で取得していきましょう!
bitbankでAPI情報を取得する手順
(1) 会員ページにログイン
(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 | ボリンジャーバンド | オシレータ |
Python | MACD | オシレータ |
Python | RSI | オシレータ |
Python | 時系列予測モデルの構築 | 機械学習・AI |
【オシレータ】:現在の相場に対する買われすぎ・売られすぎの判断に有効
その他仮想通貨自動トレード解説記事
対応言語 | 記事名 |
---|---|
Python | 【データ収集】仮想通貨の過去データを大量取得する方法 |
Python | 【初心者向け】ccxtを活用した仮想通貨の自動取引 |
Node.js | 【初心者向け】ccxtを活用した仮想通貨の自動取引 |
最後に
お問い合わせフォーム
上記課題に向けてご気軽にご相談下さい。
お問い合わせはこちら