Binance APIでクオンツ取引やデータ分析を行う際、リクエスト頻度制限は必ず理解しておくべき内容です。制限を超えると一時的にIPがブロックされ、通常の取引に影響が出ます。
まだBinanceアカウントをお持ちでない方は、まずBinance登録からご登録の上、API Keyを作成してください。スマートフォンでもAPIを管理できますので、BinanceアプリをDLをお勧めします。
頻度制限の基本ルール
Binance APIには2つの主要な頻度制限があります:
リクエストウェイト制限:各APIエンドポイントには異なるウェイト値があります。通常のインターフェースのウェイトは1、複雑なクエリは5または10の場合があります。1分あたりの総ウェイトが上限(通常1200)を超えてはなりません。
注文頻度制限:1秒あたりと1日あたりの注文回数に上限があります。1秒あたり最大10注文、1日あたり最大20万注文です。
エンドポイントと権限の組み合わせによって制限値が異なる場合があります。詳細は公式APIドキュメントをご確認ください。
使用状況の確認方法
各APIリクエストのレスポンスヘッダーに、現在のウェイト使用状況が含まれます。以下のフィールドに注目してください:
X-MBX-USED-WEIGHT-1M:現在の1分間で使用済みのウェイト。
X-MBX-ORDER-COUNT-1S:現在の1秒間の注文回数。
X-MBX-ORDER-COUNT-1D:当日の注文総数。
プログラムでこれらの値を監視し、上限に近づいたら自発的にペースを落としましょう。
超過するとどうなるか
リクエストウェイト制限を超過すると、HTTP 429エラーコードを受信し、IPが一時的にブロックされます。通常数分間持続します。ブロック期間中はすべてのリクエストが拒否されます。
深刻な超過や頻繁な制限トリガーの場合、ブロック時間がさらに長くなり、数時間ブロックされる可能性もあります。
超過を避ける方法
合理的なリクエスト頻度の設計:相場データを無限ループでリクエストせず、合理的な間隔を設定しましょう。
ポーリングの代わりにWebSocketを使用:リアルタイム相場データはWebSocketサブスクリプションを使用すれば、リクエストウェイトを消費しません。
バッチ処理:一部の操作はバッチインターフェースに対応しています。例えばバッチ注文では、1回のリクエストで複数の注文を送信できます。
データキャッシュ:リアルタイム更新が不要なデータはローカルにキャッシュし、重複リクエストを減らしましょう。
ブロックの解除方法
短時間のブロックは自動的に解除されます。数分待ってから再試行してください。長時間ブロックされた場合は、Binance APIサポートチームに連絡して対応してもらえます。
取引への影響を避けるため、プログラムにリトライロジックを組み込み、429エラーに遭遇した場合は一定時間待ってから自動的にリトライすることをお勧めします。