MagicTradeBot разработан для поддержки автоматической торговли 24/7 по сотням криптовалютных пар. Однако большинство централизованных бирж (CEX) устанавливают строгие ограничения на частоту запросов к API, и превышение этих лимитов может привести к временной блокировке, ограничению IP-адреса или снижению производительности.
⚠️ Проблема с лимитами частоты запросов
Каждая биржа накладывает ограничения на количество запросов в секунду. Непрерывное сканирование сотен торговых пар на нескольких биржах в реальном времени может легко привести к превышению этих лимитов.
Чтобы избежать блокировок или проблем с производительностью, MagicTradeBot использует продвинутые механизмы контроля лимитов, автоматически соблюдая ограничения API бирж.
🛠️ Управление лимитами в MagicTradeBot
- ⏱️ Использует планирование API-запросов с ограничением частоты, которое динамически регулирует скорость
- 📊 Отслеживает заголовки ответов (например,
X-RateLimit-Remaining
) для определения приближения к лимиту - 🧠 Автоматически вводит задержки при приближении к предельным значениям
- 🔁 Делит большие списки торговых пар на мелкие блоки для пошагового сканирования
- 🕐 Использует параметр
refreshRate
(например, каждые 5 секунд) для последовательного сканирования каждого блока
✅ Рекомендуемая стратегия развертывания
Для обеспечения оптимальной производительности и соблюдения лимитов API рекомендуется следующее:
1️⃣ Разделяйте пары между несколькими аккаунтами
- Создайте отдельные аккаунты или суб-аккаунты на биржах (например, Binance Main, Bybit Sub1, Bitget Spot, OKX Futures)
- Назначьте разные группы торговых пар каждому аккаунту
- Это снижает нагрузку на один ключ API
2️⃣ Запускайте несколько экземпляров бота
- Создайте отдельные инстансы MagicTradeBot для каждой биржи/аккаунта
- Пример:
bot-binance-main
,bot-bybit-sub1
,bot-okx-spot
- Каждый бот обрабатывает ограниченное количество пар — это повышает стабильность и скорость отклика
3️⃣ Умело используйте частоту обновления
- Установите значение
refreshRate
вconfig.yaml
(например, 5 секунд) - Избегайте слишком малых интервалов, если один экземпляр обрабатывает сотни пар
📦 Пример конфигурации: 500 криптовалютных пар
Допустим, вы хотите сканировать и торговать по 500 парам. Нагрузку можно распределить следующим образом:
Экземпляр бота | Аккаунт биржи | Крипто-пары |
---|---|---|
bot-binance-main | Основной аккаунт Binance | 50 пар |
bot-bybit-sub1 | Суб-аккаунт Bybit 1 | 50 пар |
bot-okx-spot | Спотовый аккаунт OKX | 50 пар |
bot-bitget-main | Основной аккаунт Bitget | 50 пар |
... (повторить) | Другие биржи/аккаунты | По 50 пар |
Такой модульный подход позволяет каждому боту обрабатывать меньше запросов, оставаться в рамках лимитов и снижать задержки.
🧩 Устойчивость к сбоям
При распределении стратегии между несколькими аккаунтами и ботами:
- 🛑 Если один из экземпляров выйдет из строя (например, из-за сбоя биржи или внутренней ошибки), остальные продолжат работать независимо
- ⚙️ Упрощается масштабирование и изоляция узких мест
- 📉 Снижается риск полной блокировки API из-за чрезмерного использования