MagicTradeBot 및 환율 제한 준수

MagicTradeBot은 24시간 365일 자동 거래수백 개의 암호화폐 페어에 대해 지원하도록 설계되었습니다. 하지만 대부분의 중앙화 거래소(CEX)는 엄격한 API 속도 제한을 적용하며, 이를 초과하면 일시적인 차단, IP 차단 또는 성능 저하가 발생할 수 있습니다.


⚠️ 속도 제한의 도전 과제

각 거래소는 초당 요청 수에 대한 제한을 설정합니다. 여러 거래소에서 수백 개의 거래쌍을 실시간으로 지속적으로 스캔하는 것은 이러한 제한을 쉽게 초과할 수 있습니다.

API 차단이나 성능 저하를 방지하기 위해, MagicTradeBot은 고급 속도 제한 제어 기능을 통해 거래소의 제한을 자동으로 준수합니다.


🛠️ MagicTradeBot의 속도 제한 관리

  • ⏱️ 요청 속도를 동적으로 조절하는 속도 제한 기반 API 스케줄링 사용
  • 📊 X-RateLimit-Remaining과 같은 응답 헤더를 모니터링하여 제한 도달 여부 감지
  • 🧠 API 사용량이 임계값에 근접하면 자동으로 지연 도입
  • 🔁 대규모 거래쌍 목록을 작은 청크로 나누어 순차적으로 스캔
  • 🕐 refreshRate 설정(예: 5초마다)을 사용하여 한 번에 하나의 청크만 스캔

✅ 권장 배포 전략

최적의 성능과 API 준수를 보장하려면 다음 전략을 따르세요:

1️⃣ 심볼을 여러 계정에 분산

  • 각 거래소에 별도의 계정 또는 하위 계정 생성 (예: Binance 메인, Bybit Sub1, Bitget Spot, OKX Futures)
  • 각 계정에 서로 다른 거래쌍 그룹 할당
  • 하나의 API 키에 집중되는 요청을 줄일 수 있음

2️⃣ 여러 봇 인스턴스 실행

  • 각 거래소/계정마다 별도의 MagicTradeBot 인스턴스 실행
  • 예시: bot-binance-main, bot-bybit-sub1, bot-okx-spot
  • 각 인스턴스는 제한된 수의 페어만 처리하여 신뢰성과 응답 속도 향상

3️⃣ 갱신 주기(refresh rate)를 스마트하게 사용

  • config.yaml 파일에서 refreshRate 값을 적절히 설정 (예: 5초)
  • 한 인스턴스로 수백 개 페어를 감시할 경우 너무 짧은 간격은 피하세요

📦 예시 구성: 500개의 암호화폐 페어

500개의 암호화폐 페어를 스캔하고 거래하고자 한다면, 다음과 같이 부하를 분산할 수 있습니다:

봇 인스턴스 거래소 계정 암호화폐 페어
bot-binance-main Binance 메인 계정 50개 페어
bot-bybit-sub1 Bybit 하위 계정 1 50개 페어
bot-okx-spot OKX Spot 계정 50개 페어
bot-bitget-main Bitget 메인 계정 50개 페어
... (반복) 다른 거래소/계정 각각 50개 페어

이러한 모듈형 접근 방식은 각 봇이 적은 요청만 처리하도록 하여 속도 제한을 준수하고 지연을 줄일 수 있습니다.


🧩 장애 허용

전략을 여러 계정 및 인스턴스로 분산함으로써:

  • 🛑 하나의 봇 인스턴스가 실패해도 (거래소 장애 또는 내부 오류 등), 다른 인스턴스는 독립적으로 계속 운영됩니다
  • ⚙️ 성능 병목 구간을 쉽게 격리하거나 확장할 수 있음
  • 📉 과도한 사용으로 인해 거래소 API 전체에서 차단될 위험을 최소화함