MagicTradeBot は、24時間365日自動取引を数百の暗号通貨ペアに対応するよう設計されています。ただし、多くの中央集権型取引所(CEX)は厳格な API レート制限を設けており、これを超えると一時的な停止、IP ブロック、またはパフォーマンスの低下が発生する可能性があります。
⚠️ レート制限の課題
各取引所は、秒あたりのリクエスト数に制限を設けています。複数の取引所にまたがって数百の取引ペアをリアルタイムで継続的にスキャンすると、これらの制限を簡単に超えてしまうことがあります。
API の使用禁止や性能低下を防ぐために、MagicTradeBot は高度なレート制限管理機能を実装しており、取引所の制限に自動的に準拠します。
🛠️ MagicTradeBot のレート制限管理
- ⏱️ リクエスト速度を動的に調整するレート制限付き API スケジューリングを使用
- 📊
X-RateLimit-Remaining
などのレスポンスヘッダーを監視して、制限が近いことを検知 - 🧠 API 使用率が閾値に近づくと自動的に遅延を挿入
- 🔁 大量の取引ペアリストを小さなチャンクに分割して段階的にスキャン
- 🕐
refreshRate
設定(例:5秒ごと)を使って1チャンクずつスキャン
✅ 推奨されるデプロイ戦略
最適なパフォーマンスと API 準拠を実現するには、以下のベストプラクティスに従ってください:
1️⃣ 複数のアカウントにシンボルを分割
- 取引所に個別のアカウントまたはサブアカウントを作成(例:Binance メイン、Bybit サブ1、Bitget 現物、OKX 先物)
- 異なる取引ペアのグループを各アカウントに割り当て
- 1つの API キーに対するリクエストの集中を回避
2️⃣ 複数の Bot インスタンスを実行
- 各取引所/アカウントごとに MagicTradeBot の個別インスタンスを起動
- 例:
bot-binance-main
、bot-bybit-sub1
、bot-okx-spot
- 各 Bot は限られた数のペアのみを処理 — 信頼性と応答速度を向上
3️⃣ refresh rate を賢く設定
config.yaml
にてrefreshRate
を適切に設定(例:5秒)- 1インスタンスで数百のペアを監視する場合、短すぎる間隔は避ける
📦 構成例:500 の暗号通貨ペア
500 の暗号通貨ペアをスキャンして取引したいと仮定します。その場合、以下のように負荷を分割できます:
Bot インスタンス | 取引所アカウント | 暗号通貨ペア |
---|---|---|
bot-binance-main | Binance メインアカウント | 50 ペア |
bot-bybit-sub1 | Bybit サブアカウント1 | 50 ペア |
bot-okx-spot | OKX 現物アカウント | 50 ペア |
bot-bitget-main | Bitget メインアカウント | 50 ペア |
...(繰り返し) | 他の取引所/アカウント | 各50ペア |
このモジュール式のアプローチにより、各 Bot がより少ないリクエストを処理し、レート制限内で稼働し、遅延を削減できます。
🧩 フォールトトレランス(耐障害性)
戦略を複数のアカウントやインスタンスに分散することで:
- 🛑 1つの Bot インスタンスが障害(取引所障害や内部エラー)で停止しても、他のインスタンスは独立して動作を継続
- ⚙️ 拡張やボトルネックの切り分けが容易に
- 📉 過剰な使用による取引所 API 全体からのブロックリスクを最小化