Pythonで資産残高に変化があったら音で知らせてもらうようにしました(bitbank編)

2月 16, 2020

最近bitcoinがまた100万円を超えましたね。なんとなく差額も開きやすくなってきた気がするので、アービトラージには好都合です。
さて、最近はこちらの記事で紹介したゼロ送金時間アービトラージを実践しているのですが、一回の取引の送金時間はゼロでも、次の取引の為にBTCを売却先の取引所に送金する時間はやはり数十分かかってしまいます。早く次の取引をしたいと思って何度も残高をチェックするのは時間の無駄なので、これをPythonプログラムに任せることにしました。今回はbitbankで、通知は以前実装した差額計算と同様に音で行います。

下記に今回のプログラムのソースコードを記載しました。残高をチェックするのでprivate APIが必要になります。参考にしたサイトはこちらです。

import python_bitbankcc
import time
import winsound
class BitBankPrvAPI:
    def __init__(self):
        API_KEY = '*************'
        API_SECRET = '*************'
        self.prv = python_bitbankcc.private(API_KEY, API_SECRET)
    def get_asset(self):
        try:
            value = self.prv.get_asset()
            return value
        except Exception as e:
            print(e)
            return None
prev_JPY=0
prev_BTC=0
while 1:
    prv_set = BitBankPrvAPI()
    asset_dict = prv_set.get_asset()
    current_JPY = asset_dict['assets'][0]['onhand_amount']
    print('JPY=',current_JPY)
    current_BTC = asset_dict['assets'][1]['onhand_amount']
    print('BTC=',current_BTC)
    if prev_JPY != current_JPY or prev_BTC != current_BTC:
    	print('asset changed')
    	winsound.Beep(1000, 1500)
    prev_JPY = current_JPY
    prev_BTC = current_BTC
    time.sleep(10)

残高を取得している部分がこちらです。

'assets’に対応する配列の[0]番目にJPYの辞書データ、[1]番目にBTCの辞書データが格納されています。JPY/BTCそれぞれの’onhand_amount’に対応する数値が残高になります。 print(asset_dict) を実行してみればデータ構造がわかるかと思います。
そして下記の部分で取得した値が前回の取得から変わっているかチェックし、変わっていれば音を鳴らすようにしています。比較用のprev_JPY/BTCの初期値が0なので、プログラム開始時に音が鳴ってしまう制限があります。

簡単なプログラムですが、これでそこそこ効率が上がりました。