【bitbank自動売買#3】python_bitbankccの使い方学習(プライベートAPI)
ここでは,【bitbank自動売買#2】に引き続きプライベートAPIについて学習する。
プライベートAPIを使用する際には「APIキー」「シークレット」が必要。
これらの情報は決して他人に公開してはダメ。
#AIPキー API_KEY = 'BITBANK_API_KEY' #シークレット API_SECRET = 'BITBANK_API_SECRET'
これらの情報は,bitbankのAPIから確認可能。
さて,ここから実際にプログラムを動かしてみる。
1. アセット情報の取得
#python_bitbankccのパッケージをインポート import python_bitbankcc #APIキー,シークレットの設定 API_KEY = 'BITBANK_API_KEY' API_SECRET = 'BITBANK_API_SECRET' #privte API classのオブジェクトを取得 prv = python_bitbankcc.private(API_KEY, API_SECRET) #アセット一覧の取得 value = prv.get_asset() #アセット情報の一例 asset_ex = value['assets'][5] print('通貨名:' + asset_ex['asset']) print('保有量:' + asset_ex['onhand_amount']) print('ロックされている量:' + asset_ex['locked_amount']) print('利用可能な量:' + asset_ex['free_amount']) print('引き出し手数料:' + asset_ex['withdrawal_fee'])
《出力結果》 通貨名:mona 保有量:3.55940000 ロックされている量:0.00000000 利用可能な量:3.55940000 引き出し手数料:0.00100000
get.assetを用いることで,アセット*1情報が取得可能となる。
今回は「MONA」の情報を出力している。
変数valueには「JPY」「BTC」「LTC」「XRP」「ETH」「MONA」「BCC」の順で格納されているので,「JPY」の情報を取得したい場合は以下の様にすればよい。
#BTC ⇒ JPY asset_ex = value['assets'][5] ⇒ asset_ex = value['assets'][0]
2. 注文IDを指定して注文情報を取得
#python_bitbankccとdatetimeのパッケージをインポート import python_bitbankcc import datetime #APIキー,シークレットの設定 API_KEY = 'BITBANK_API_KEY' API_SECRET = 'BITBANK_API_SECRET' #privte API classのオブジェクトを取得 prv = python_bitbankcc.private(API_KEY, API_SECRET) #注文情報の取得 value = prv.get_order( 'bcc_jpy', '14288606' )#'ペア', '注文ID' #注文情報の一例 print('取引ID:' + str(value['order_id'])) print('通貨ペア:' + value['pair']) print('売買情報:' + value['side']) print('注文タイプ:' + value['type']) print('注文時の数量:' + value['start_amount']) print('未約定の数量:' + value['remaining_amount']) print('約定済の数量:' + value['executed_amount']) print('注文価格:' + value['price']) print('平均約定価格:' + value['average_price']) print('注文状態:' + value['status']) print('注文日時:' + str(datetime.datetime.fromtimestamp(value['ordered_at']/1000))) print('約定日時:' + str(datetime.datetime.fromtimestamp(value['executed_at']/1000)))
《出力結果》 取引ID:14288606 通貨ペア:bcc_jpy 売買情報:sell 注文タイプ:limit 注文時の数量:0.07260000 未約定の数量:0.00000000 約定済の数量:0.07260000 注文価格:165000.0000 平均約定価格:165000.0000 注文状態:FULLY_FILLED 注文日時:2018-05-13 21:48:23.977000 約定日時:2018-05-14 06:12:58.246000
get_orderを用いることで,指定したIDの注文情報が取得可能となる。
また,prv.get_orders_infoを用いることで,複数の注文IDを指定することが可能となる。
使い方 単数:prv.get_order( 'ペア', '注文ID' ) 複数:prv.get_orders_info( 'ペア', ['注文ID', '注文ID', .....] )
「注文状態」には,「UNFILLED(注文中)」「PARTIALLY_FILLED(注文中(一部約定))」「FULLY_FILLED(約定済み)」「CANCELED_UNFILLED(取消済)」「CANCELED_PARTIALLY_FILLED(取消済(一部約定))」の5種類存在する。
3. アクティブな注文情報を取得
#python_bitbankccとdatetimeのパッケージをインポート import python_bitbankcc import datetime #APIキー,シークレットの設定 API_KEY = 'BITBANK_API_KEY' API_SECRET = 'BITBANK_API_SECRET' #privte API classのオブジェクトを取得 prv = python_bitbankcc.private(API_KEY, API_SECRET) #アクティブな注文一覧の取得 value = prv.get_active_orders( 'bcc_jpy' ) #注文一覧の一例 order_ex = value['orders'][0] print('取引ID:' + str(order_ex['order_id'])) print('通貨ペア:' + order_ex['pair']) print('売買情報:' + order_ex['side']) print('注文タイプ:' + order_ex['type']) print('注文時の数量:' + order_ex['start_amount']) print('未約定の数量:' + order_ex['remaining_amount']) print('約定済の数量:' + order_ex['executed_amount']) print('注文価格:' + order_ex['price']) print('平均約定価格:' + order_ex['average_price']) print('注文状態:' + order_ex['status']) print('注文日時:' + str(datetime.datetime.fromtimestamp(order_ex['ordered_at']/1000)))
《出力結果》 取引ID:14771060 通貨ペア:bcc_jpy 売買情報:sell 注文タイプ:limit 注文時の数量:0.07270000 未約定の数量:0.07270000 約定済の数量:0.00000000 注文価格:200000.0000 平均約定価格:0.0000 注文状態:UNFILLED 注文日時:2018-05-16 23:04:37.516000
get_active_ordersを用いることで,アクティブな注文情報が取得可能となる。
4. 新規注文を行う
本当に注文が通るので,注意して自己責任でプログラムを実行してください。
#python_bitbankccとdatetimeのパッケージをインポート import python_bitbankcc import datetime #APIキー,シークレットの設定 API_KEY = 'BITBANK_API_KEY' API_SECRET = 'BITBANK_API_SECRET' #privte API classのオブジェクトを取得 prv = python_bitbankcc.private(API_KEY, API_SECRET) #新規注文を行う:'ペア', '価格', '注文枚数', '売or買', '指値or成行' value = prv.order( 'bcc_jpy', '200000', '0.07', 'sell', 'limit' ) #新規注文内容 print('取引ID:' + str(value['order_id'])) print('通貨ペア:' + value['pair']) print('売買情報:' + value['side']) print('注文タイプ:' + value['type']) print('注文時の数量:' + value['start_amount']) print('未約定の数量:' + value['remaining_amount']) print('約定済の数量:' + value['executed_amount']) print('注文価格:' + value['price']) print('平均約定価格:' + value['average_price']) print('注文状態:' + value['status']) print('注文日時:' + str(datetime.datetime.fromtimestamp(value['ordered_at']/1000))) #注文のキャンセル(ここでは,上記の注文を即時にキャンセルしている) prv.cancel_order( value['pair'], str(value['order_id']) ) #'ペア', '注文ID'
《出力結果》 取引ID:14779241 通貨ペア:bcc_jpy 売買情報:sell 注文タイプ:limit 注文時の数量:0.07000000 未約定の数量:0.07000000 約定済の数量:0.00000000 注文価格:200000.0000 平均約定価格:0.0000 注文状態:UNFILLED 注文日時:2018-05-17 00:29:48.840000
orderにより,新規注文が可能となる。
一方で,cancel_orderにより,注文をキャンセル可能となる(複数キャンセルも可能)。
使い方 単数:cancel_order( 'ペア', '注文ID' ) 複数:cancel_order( 'ペア', ['注文ID', '注文ID', .....] )
ただし,以下の様に「取引」を選択したAPIキーを発行・使用する必要があることに注意。
「取引」を選択していないAPIキーを用いると,「エラーコード: 20001 内容: API認証に失敗しました」となる。
5. 約定履歴を取得する
#python_bitbankccのパッケージをインポート import python_bitbankcc #APIキー,シークレットの設定 API_KEY = 'BITBANK_API_KEY' API_SECRET = 'BITBANK_API_SECRET' #privte API classのオブジェクトを取得 prv = python_bitbankcc.private(API_KEY, API_SECRET) #約定履歴を取得する: 'ペア', '取得する約定数' value = prv.get_trade_history( 'bcc_jpy', '10' )
この時「エラーコード: 20001 内容: API認証に失敗しました」を吐いてしまうので原因分析中。
(自動売買プログラムに使う時まで眠らす可能性も)
何か心当たりある方教えて頂けるとありがたいです。
もしかしたら,まだ制限されている可能性あり(以下参照)。
bitbank.cc
では,次回はいよいよ自動売買プログラムにとりかかります。