見出し画像

GMOコインのPython用自動取引モジュール - gmocoiner

こんにちは、まちゅけん(@mtkn1btcfx)です。
先日リリースされた、GMOコインのAPIのPython用クライアント【gmocoiner】を作ってみました。
以下、botter(Twitterの仮想通貨界隈で自動取引プログラムの開発を行う人たち)向けな記事になります。興味のある方は是非使って見て下さい。
APIの概要(公式)はこちら。

【更新履歴】

2019/06/16 決済注文のパラメーターが間違っていた為修正しました。
更新方法

pip install -U git+https://github.com/MtkN1/gmocoiner.git

APIでできること

Public API
・取引所ステータス
・最新レート
・板情報
・取引履歴

Private API
・余力情報を取得
・資産残高を取得
・注文情報取得
・有効注文一覧
・約定情報取得
・最新の約定一覧
・建玉一覧を取得
・建玉サマリーを取得
・注文
・注文変更
・注文キャンセル
・決済注文
・一括決済注文
・ロスカットレート変更

※各APIの詳細な仕様は公式ドキュメントを参照してください。

はじめに

インストールを行う前に、GMOのAPI・取引所特性としてbotterが知っておくべき情報をまとめておきます。
・REST APIのみ、WebScoket APIはなし
レート制限の存在するREST APIのみで、購読したデータの差分情報が送られてくるWebScoket APIはありません。
!! レート制限は1秒に1回が上限 !!
なんとAPIのレート制限の上限が「1秒に1回」です。5分に何百回とかじゃなく本当に1秒に1回なので、1回目のリクエスト後0.5秒の間隔で次のリクエストを行った場合Too many requestsになります。
これは他の取引所とは大きく異なる仕様です。もしかしたら、高速なマーケットメイキングができないように制限しているのかもしれません。
ちなみに本APIクライアントには自動的にレート制限に引っかからないようにするオプションがあります。bot製作者が1秒制限を考慮することなくAPIを利用できます。
・現物はメイカー報酬あり、レバレッジ取引は手数料無料
現物はメイカーが-0.01%、テイカーが0.05%の手数料になります。現物を対象にマーケットメイキングを行うのもありかもしれません。
・両建てが可能
買いと売り両方のポジションを持てるようです。まだGMOを使いこなしてないのでメリットは分かりません。(デメリットとしては証拠金が無駄に拘束される、レバレッジ手数料がより多く発生する)

gmocoinerのインストール方法

pip install git+https://github.com/MtkN1/gmocoiner.git

※Cloud9
sudo pip-3.6 install git+https://github.com/MtkN1/gmocoiner.git

使い方

3行目でクラスをインポート、9行目でインスタンスを生成しています。
late_limit=Trueで自動レート制限が有効になります。これが有効の場合は連続してリクエストを行ってもAPIクライアント側が1秒制限に引っかからないようにsleepします。
logger=に定義したロガーを渡すことでリクエスト情報とレスポンス情報をログ出力することができます。
それ以降の行ではメソッドレベルで定義してあるAPIをリクエストしてレスポンスを表示しています。
レスポンスはrequestsモジュールのResponseオブジェクトそのままなので.json()でPythonオブジェクト(辞書かリスト)に変換してあげてください。

まず使いたいAPIを探す場合は、
公式ドキュメント
https://api.coin.z.com/docs/?python

gmocoinerのapi.py
https://github.com/MtkN1/gmocoiner/blob/master/gmocoiner/api.py
を見比べて対応するAPIを見つけてください。通常、APIのURLをメソッド名として定義しています。
例:

GET /private/v1/account/assets = gmo.account_assets()

おわり

gmocoinnerの説明は以上です。質問があったりやバグを発見した、またはツッコミを入れたい場合はTwitter(@mtkn1btcfx)にお気軽にリプかDMを下さい。
弱botterのコードなのでバグやコードの堅牢性などについてはご容赦ください。
このモジュールによって損失が発生しても当方は責任を負いません的な云々以下略。

今後の予定
・公式APIには書かれていないがローソク足データを取得できそう

もしこのモジュールで儲かって良い気分になった方はtipいただけると幸いです。
BTCアドレス:
33cQxknWWwz4oAddWTKWvEFDpigq6DG34F

フォローお願いします!


この記事が気に入ったら、サポートをしてみませんか?気軽にクリエイターを支援できます。

46

まちゅけん

仮想通貨

3つ のマガジンに含まれています

コメント1件

gmocoinerいつも使わせていただいております。ありがとうございます!
最近API制限が300ミリ秒に緩和されたようなので、このあたり⬇︎の処理を更新していただけると幸いです。

if self.last_req_time + 1 > now:
wait_time = self.last_req_time + 1 - now
     time.sleep(wait_time)
コメントを投稿するには、 ログイン または 会員登録 をする必要があります。