BitMEXからお叱り(涙) ボットでAPIに負荷かけすぎるとbanされるよ

こんにちは、初心者だけどbot大好きココです。

「ドテン君」に代表されるような仮想通貨自動売買botが大流行していますが、bot開発者さんは要注意の条件があります。

自分でbotは作らないけど使ってるよという(私のような)ユーザーさんも知っておいた方がいい話です。

botコミュニティと取引所間の良好な関係を築いていくためにも、重要なことだと思います。

要点はこういうことです。すなわち、

botで取引所のAPIに負荷をかけすぎると、キレられてbanされるよ。

という話です。

自動で24時間365日働き続けてくれる便利なbotですが、取引所に注文を送ったり情報を取得する時にAPIというものを使っています。

まあ、アカウントごとに割り振られた固有の電話回線みたいなものだとイメージしましょう。

これを経由してbotと取引所がつながっているのですが、botのプログラムやパラメータによってはやたらと短時間に大量のアクセスを繰り返すとかいう場合があります。

たいていは予期せぬエラーや開発者の意図しない動作によって無効な注文を繰り返してしまうケースが多いようです。

つまり、取引所側がエラーだよと言ってるのに、bot的には無限ループしてしまっている状態ですね。

bot「注文します」

取引所「エラーです」

bot「注文します」

取引所「エラーです」

bot「注文します」

取引所「エラーです」

bot「注文します」

きっと取引所から「やめてね」とメールが来ることでしょう。

それでも、よく分からないからそのままにしとこう。bot is 放置。とかなりがちですよね。

そうすると、最終的には取引所側がキレてban(アカウント凍結・制限)してきます。

個別のペナルティならまだしも、社会的に大きな問題となればそもそもbotの利用お断り等、よろしくない状況もありえますし、風評被害にもつながりかねません。

bot黎明期に参加しているからこそ、いいbot文化を作って行きたい!(私はbot開発者と言えるレベルではないですが)そういう思いでここに書き留めておきます。

具体的には今回、BitMEXからこんな連絡がありました。

お問い合わせの件につきまして、アカウントをお調べさせていただいたところ、次の理由で制限をされています。

Disabled for ignoring ‘Invalid orderQty’. Do not re-enable until the bot developer has fixed this.
(無効な数量の注文というエラーが出ていたにも関わらず注文を続けたため。Botの開発者が修正を行うまで制限を外すことができません)

(中略)

現在、BitMEXでは、取引エンジンに負荷をかける行為を見直しており、該当する行為は制限させていただいております。

お手数をお掛けし恐縮でございますが、何卒ご理解をいただくようお願いいたします。

渡辺
BitMEXサポートチーム

普段は温厚な渡辺さんがキレかけている…!これは、まずい。

この問題はドテン君コミュニティでも話題になっており、AKAGAMIさんとコミュニティ開発メンバーが対策を行い、現在BitMEXとコンタクト中のようです。

1. If your bot receives a 4xx error, e.g. 400, 401, 402, 403, 404, 429 then that means the request is bad. The bot should not re-try the request. Please make the bot stop if it receives an error. If you keep sending bad requests the user gets an API ban

2. The bot should subscribe to margin via WebSocket and only submit orders when margin.excessMargin > 0

3. The bot should never send an order with orderQty = 0

4. The bot should only submit orders when it has enough margin: For contracts with instrument.multiplier > 0: Math.abs(orderQty * instrument.multiplier * price) * position.initMarginReq < margin.excessMargin For contracts with instrument.multiplier < 0: Math.abs(orderQty * instrument.multiplier / price) * position.initMarginReq < margin.excessMargin

特に①の400系エラーに対する処理が一番優先っぽいです。

ドテン君に限らず、bot開発者・ユーザーのみなさんで共有していきたい問題ですね。

※こちらの記事も読まれています↓

今までにブログ記事で書いた「ドテン君」関連記事をこちらにまとめました。 気になるタイトルがあればクリックして読んでみてください。 ブログ記事なのでもちろん無料。 超初心者がbotトレードで自動売買するための最短ルートとは? ドテン君運用 「ドテン君狩り」は原理的に不可能。BTC相場は...
【登録方法はこちらの記事で解説してます↓】 botで自動売買するならBitMEXは外せない ...