bitbank用のPython APIを使ってみた

こちらの「独自に編み出したbitcoinのアービトラージ(裁定取引)の戦略を公開します」に書いた通り、アービトラージに使う取引所をGMOコインとbitbankに絞ることにしました。なので、各取引所のAPIを共通コマンドで使用できるccxtライブラリを使うのはやめて、公式のAPIを使用することにしました。GMOコインは何度か過去にご紹介した通り使ったことがあるので、今回はbitbankに挑戦します。

今回いくつかのページを参考にしました。
bitbankでPythonを使う方法について下記で詳しく解説されています。
https://dot-blog.jp/news/bitbank-api-beginners-haw-to/
こちらを参考にbitbank公式APIライブラリをインストールしようとしたところ、いきなり躓いてしまいました。

python -m pip install git+https://github.com/bitbankinc/python-bitbankcc.git
Collecting git+https://github.com/bitbankinc/python-bitbankcc.git
Cloning https://github.com/bitbankinc/python-bitbankcc.git to c:\users\oshiro\appdata\local\temp\pip-req-build-ucm89olb
Running command git clone -q https://github.com/bitbankinc/python-bitbankcc.git 'C:\Users\oshiro\AppData\Local\Temp\pip-req-build-ucm89olb’
ERROR: Error [WinError 2] 指定されたファイルが見つかりません。 while executing command git clone -q https://github.com/bitbankinc/python-bitbankcc.git 'C:\Users\oshiro\AppData\Local\Temp\pip-req-build-ucm89olb’
ERROR: Cannot find command 'git’ – do you have 'git’ installed and in your PATH?

エラーコードで検索したところ、下記をみつけました。
https://teratail.com/questions/114113
どうやらgitをインストールする必要があるようです。それで次に参考にしたのがこちら。
https://qiita.com/toshi-click/items/dcf3dd48fdc74c91b409
インストール後再度コマンドを試してみたのですが、再度同じエラーが出てしまいました。ただインストールが反映されてなかっただけのようでコマンドラインを開きなおしたら無事bitbank APIをインストールすることができました。

最初に紹介したこちらのページにある基本的なコードを実際に組んで動かしてみました。ソースコード自体はコピペなのでここには記載しません。実行結果は下記のような感じです。

python bitbank_test.py
987656
[{'asset’: 'jpy’, 'amount_precision’: 4, 'onhand_amount’: '0.7740’, 'locked_amount’: '0.0000’, 'free_amount’: '0.7740’, 'stop_deposit’: False, 'stop_withdrawal’: False, 'withdrawal_fee’: {'threshold’: '30000.0000’, 'under’: '550.0000’, 'over’: '770.0000’}}, {'asset’: 'btc’, 'amount_precision’: 8, 'onhand_amount’: '1.10000000’, 'locked_amount’: '0.00000000’, 'free_amount’: '1.10000000’, 'stop_deposit’: False, 'stop_withdrawal’: False, 'withdrawal_fee’: '0.00100000’}, {'asset’: 'ltc’, 'amount_precision’: 8, 'onhand_amount’: '0.00000000’, 'locked_amount’: '0.00000000’, 'free_amount’: '0.00000000’, 'stop_deposit’: False, 'stop_withdrawal’: False, 'withdrawal_fee’: '0.00100000’}, {'asset’: 'xrp’, 'amount_precision’: 6, 'onhand_amount’: '0.000000’, 'locked_amount’: '0.000000’, 'free_amount’: '0.000000’, 'stop_deposit’: False, 'stop_withdrawal’: False, 'withdrawal_fee’: '0.150000’}, {'asset’: 'eth’, 'amount_precision’: 8, 'onhand_amount’: '0.00000000’, 'locked_amount’: '0.00000000’, 'free_amount’: '0.00000000’, 'stop_deposit’: False, 'stop_withdrawal’: False, 'withdrawal_fee’: '0.00500000’}, {'asset’: 'mona’, 'amount_precision’: 8, 'onhand_amount’: '0.00000000’, 'locked_amount’: '0.00000000’, 'free_amount’: '0.00000000’, 'stop_deposit’: False, 'stop_withdrawal’: False, 'withdrawal_fee’: '0.00100000’}, {'asset’: 'bcc’, 'amount_precision’: 8, 'onhand_amount’: '0.00000000’, 'locked_amount’: '0.00000000’, 'free_amount’: '0.00000000’, 'stop_deposit’: False, 'stop_withdrawal’: False, 'withdrawal_fee’: '0.00100000’}]

通貨毎に保有状況を読み取ることができました。

ところで、ソースコードの最後のこちらが気になりました。nameがmainならmainを実行する・・?

if __name__ == '__main__':
    main()

ググってみると混乱している人が結構いるようでした。
色々調べてみて、こちらのサイトがわかりやすかったです。
https://blog.pyq.jp/entry/Python_kaiketsu_180207
作ったこのpythonファイルを他のpythonファイルでimportしたときに、import先のプログラムでimport処理が走った時点でmain関数が実行されることを防ぐための処理だそうです。
(一文で説明しようとするとわかりづらい。。)

そろそろ発注もプログラムでできるようになりたい。。数日中目標。。