FX・ビットコイン・オプションのシステムトレード開発と取引録

FXとビットコインのシステムトレードの開発録、オプション取引の履歴を書き連ねています。MT4, Pythonで開発しています。

Python システムトレード ビットコイン

ZaifのAPIを使ってPythonでビットコインの取引プログラムを作成してみたよ

ZaifのAPIを使ってビットコインの取引プログラムを作成

今回は、ビットコイン取引所のZaifのAPIを使って
板情報とアカウント情報の取得、
注文を出す処理を実装します。

モジュールを使う

ZaifのAPIを簡単に使えるように
モジュールを公開されている方
いらっしゃいますので、
今回はこれを使わせてもらいます。

このモジュールのおかげで非常に簡単に
プログラムできたので感謝、感謝です。

最初にモジュールをインストールします。

プログラミング

後はプログラムをコーディングするだけです。

実行時の注意点

上記のget_infoとtradeを同時に実行すると
(get_infoの後に続けてtradeを実行するなど)
以下のエラーが発生しました。

「nonce」は、1以上の数字でアクセスの都度
増分する必要があります。
同一プログラム内で続けて接続した場合は
これが増分しないままアクセスしてしまうためです。

完成までのあれやこれや

モジュールのおかげで非常にシンプルに
実装できたのですが、
実は完成するまでに色々と試行錯誤しました。

実は、tradeに渡す引数をどのように指定するかが
最初分かりませんでした。

当初、

という辞書型で変数を作って、これを

というように渡そうとしたのですが、

というエラーが発生して処理が進みません。

困ってモジュールのソースを見てみました。
すると、「impl.py」内で以下のように定義されています。

実はPythonにまだあまり慣れていないので
**kwargs」というのを初めて見ました。

何これ?ということで調べてみると、
可変長引数だったんですね。
**kwargs」は辞書型で保存するらしいです。

そこでtradeの引数を

としました。

すると、以下のエラーが出ます。

よくよく見ると、keywordの部分は「"」で
囲まないということのようです。

とすると、今度は以下のエラーが出ます。

これは分かりやすい。priceとamountの「"」を外します。

というように修正しました。

しかしまだエラーが出ます。

priceのパラメーターがおかしいようです。

「5000.0」という金額が実態と離れすぎているからかと思い
金額を調整してみてもエラーは変わりません。

「5000.0」を「5000」に変えてみると、
insufficient funds(残高不足)となります。

今、Zaifの口座残高は0円なので、
当然表示の通りになります。

ここまでできれば大丈夫でしょう。

モジュールのおかげでプログラムは非常に簡単にできましたが、
パラメーターの指定で以外に時間がかかってしまいました。
(ドキュメント読めよっていう話ですが)

APIの仕様を見てみると、
価格(priceおよびlimit) btc_jpy : 5円単位
数量(amount) btc_jpy : 0.0001BTC単位
となっていました。

価格の指定が小数点だとエラーになって当然でした。

しかし価格は5円単位でしか指定できないんですね・・・。

Zaifの口座をお持ちでない方は、以下から登録ください。

スポンサードリンク

-Python, システムトレード, ビットコイン
-, , ,