BOTのAPIのレートリミット、制限について

BOTトレードを行う際に、考慮する必要がるAPIのレート制限についてです。

APIのレート制限(リミット)とは?

ほとんどのAPIは好き放題に実行できません。
例えば、一定時間内に一定回数以上のアクセスを行うと
サービス提供側のサーバーがアクセス制限を行い
APIで実行したリクエストを処理してくれません。
(レートリミットにかかっているという内容の返事がきます)
つまりレートリミットを超えた場合は、APIから注文を入れても無視されます。

※但し、WebSocket通信など一部の通信方法にはレート制限がかかりません(後述)

 

自分のBOTで、よく利用しているAPIは以下の3つです。

  1. CryptoWatchのAPI(過去の価格取得用)
  2. bitflyerのAPI(注文、ポジション取得用)
  3. BitMEXのAPI(注文、ポジション取得用)

 

・各APIのレート制限は以下です

CryptoWatchのAPIレート制限について

CryptowatchのAPI レート制限は
一定時間で一定回数以内という制限ではなく
CPU処理時間によって制限されます。
CPU処理時間とはサーバーがAPIに対する
レスポンスを返すのに利用したCPUの処理時間です。
Cryptowatchが提供するAPIは何種類かあり、
実行するAPIによってサーバーでの処理の重さが異なります。

Cryptowatchのレートリミット
1時間でサーバーが返事を返すのにかかるCPUの処理時間の合計が8秒を超えた場合に発生します。
この合計時間は1時間毎にクリアされます。

・公式のドキュメントURL
https://cryptowatch.jp/docs/api

残りのCPU処理時間を知りたい場合、下記のURLにアクセスすればわかります。
https://api.cryptowat.ch/
“allowance”の”remaining”が残りCPU処理時間(単位はナノ秒)

bitFlyerのAPIレート制限について

~公式ドキュメントより引用~
API制限
HTTP API は、以下のとおり呼出回数を制限いたします。
Private API は 1 分間に約 200 回を上限とします。
IP アドレスごとに 1 分間に約 500 回を上限とします。

注文数量が 0.01 以下の注文を大量に発注するユーザーは、一時的に、発注できる注文数が 1 分間に約 10 回までに制限されることがあります。
システムに負荷をかける目的での発注を繰り返していると当社が判断した場合は、API の使用が制限されることがあります。ご了承ください。

注文を行うAPIは Private API のため
bitFlyerのレートリミットは 1 分間約 200 回となります。

・公式のドキュメントURL
https://lightning.bitflyer.com/docs?lang=ja

 

BitMEXのAPIレート制限について

~公式ドキュメントより引用~
REST API へのリクエストのレートは、5 分間あたり 300 リクエストに制限されています。 このカウンタは間断なく補充されます。 ログインしていない場合、レート制限は 5 分あたり 150 です。

**使用ツールが投入するエラーの数には十分な注意が必要です!**短時間に多数の 4xx または 5xx が返された場合、お使いの IP は 1 時間禁止されることがあります。 短期間に何度か禁止されると、禁止期間は 1 週間になります。

BOTにてトレードを行う場合、通常ログインしていない状態が想定されるため、BitMEXのAPIレートリミットは5 分間で 150 回となります。

・公式のドキュメントURL
https://www.bitmex.com/app/restAPI#%E5%88%B6%E9%99%90

 

APIレート制限の対象外!?WebSocket通信について

上記APIレート制限の対象外として、WebSocket通信というものがあります。

通常のREST APIは通信毎に、BOTと取引所が接続(コネクション)を繋ぐ処理を行っていますが、WebSocketの場合、一度接続を行うとその接続を繋ぎっぱなしにしてデータのやり取りを行います。

取引所のサーバーの接続処理のコストが減り、APIレート制限の対象外となることから、WebSocket通信で行える処理(価格やポジションの取得など、取引所によって異なる)については、積極的に利用するほうがいいといえます。

但し、そもそも高頻度で取引を行う必要がないBOTの場合は利用する必要はありません。処理が複雑になりやすいためです。

 

まとめ

・CryptoWatchのレート制限

1時間内のCPU処理時間の合計が8秒
同じAPIでも実行タイミングによってCPU処理時間が異なるため、
正確な時間は算出できませんでした。
※アクセス集中してると上がるかも?

・bitflyerのレート制限

1 分間に約 200 回 ≒ 約0.3秒に1回はアクセスOK

・BitMEXのレート制限

5 分間で 150 回 ≒ 2秒に1回はアクセスOK

・WebSocket通信

APIレート制限の対象外となる
高頻度で取引を行うBOTでない場合は利用する必要はない