bitcoinの注文をGMOコインAPI(Python)でやってみた

仮想通貨取引を始めて1か月が過ぎました。今のところ手動で取引していますが、いい感じで利益が増えてきています。累計損益は下のように推移しています。

この利益に加えて、ゼロ送金時間アービトラージの為に塩漬け覚悟で購入した1BTCの含み益が10万円ほどあります。これは単純にラッキーでした。

さて本題に入りますが、これまで自動売買を実現すべくPythonを使って差額計算等のプログラムを組んできました。今回は実際にGMOコインで発注をしてみようと思います。参考にしたサイトはこちら。
https://qiita.com/tasakii/items/d5bee3acff01dd71e89e
まずはリンク先の注文用サンプルコードをそのまま実装しました。
注文情報を格納する部分はこちら。

reqBody = {
    "symbol": "BTC_JPY",
    "side": "BUY",
    "executionType": "LIMIT",
    "price": "430001",
    "size": "0.02"
}

早速実行してみたところ、エラーが返ってきてしまいました。

{
“status": 1,
“messages": [
{
“message_code": “ERR-5121",
“message_string": “Too low price."
}
],
“responsetime": “2020-02-01T07:18:35Z"
}

どうやら指値注文の価格が現在価格から乖離し過ぎているようです。そこで次は90万円くらいで指定しました。ただ何かのミスで約定してしまっても大丈夫なように最小発注単位の0.0001BTCに指定しました。ところが今度は別のエラーが。。

{
“status": 1,
“messages": [
{
“message_code": “ERR-5114",
“message_string": “Decimal digits of size is invalid."
},
{
“message_code": “ERR-5126",
“message_string": “Size is invalid."
}
],
“responsetime": “2020-02-01T07:20:18Z"
}

“size" に関するエラー?のようです。 https://api.coin.z.com/docs/ こちらにAPIドキュメントがあるのでエラーコード5114と5126で調べてみることにしました。

無い。。。ただ、"size"=発注数量の値が不適切、みたいなことを言われているので、試しに0.01にしてみたところやっとエラーが消えました。

{
“status": 0,
“data": “704131192",
“responsetime": “2020-02-01T07:26:52Z"
}

実際に発注が出ているか取引画面を確認してみたところ、発注が出ていない。。
そして気が付いたのですが、現物取引ではなく信用取引の方で発注していたようでした。
BTCが現物取引、BTC_JPYが信用取引でした。そういうことだったのか。。
最小発注数量は信用取引が0.01で、現物取引が0.0001なので、前述の"size"エラーも納得です。

BTC_JPYをBTCに修正して実行したところ、今度はちゃんと注文履歴にAPIからの注文が表示されました。
いろいろ手こずってしまいましたが、なんとかGMOコインのAPIで買い注文を出すことができました。