본문으로 건너뛰기

크립토 모멘텀 봇 (BTC)

이 튜토리얼은 BTC/USDT 모멘텀 전략을 페이퍼 모드로 띄운 후 24시간 동작을 관찰하고, 라이브 시뮬레이션 단계까지 진행합니다.

학습 목표

  • 페이퍼 모드로 봇을 띄우고 정지하는 라이프사이클 이해
  • WebSocket(/ws/live)으로 실시간 시그널·체결 이벤트 구독
  • RiskManager 1-2% 룰이 시그널 단계에서 거부되는 모습 확인
  • 24시간 페이퍼 결과로 백테스트와 실시간 결과 차이를 비교

사전 준비

  • 페이퍼 트레이딩 셋업 완료
  • Binance 페이퍼 키 등록 (SettingsExchange Keyscrypto)
  • FEATURE_EQUITY_PAPER=true (멀티 자산 격리 검증을 함께 진행하기 위함)

1단계: 봇 설정 확인

대시보드 우측 상단에서 자산군 필터crypto로 전환합니다. SettingsRisk Rules에서 다음 값을 확인합니다.

항목기본값
거래당 리스크1.5%
일일 최대 손실5.0%
최대 레버리지1x (페이퍼)

2단계: 봇 시작

Bot 페이지에서 Strategy = momentum_v1, Symbol = BTC/USDT, Mode = paper 로 설정 후 Start. 또는 CLI에서 직접:

python -m src.main --mode paper --strategy momentum_v1 --symbol BTC/USDT

API로도 동일하게 띄울 수 있습니다.

curl -X POST http://localhost:8000/api/bot/start \
-H "Authorization: Bearer $JWT" \
-H "Content-Type: application/json" \
-d '{"strategy":"momentum_v1","symbol":"BTC/USDT","mode":"paper"}'

3단계: WebSocket 구독

브라우저 콘솔에서 실시간 시그널·체결 이벤트를 구독합니다.

const ws = new WebSocket(`ws://localhost:8000/ws/live?token=${JWT}`);
ws.onmessage = (e) => console.log(JSON.parse(e.data));

수신 메시지 예시:

{
"type": "signal",
"symbol": "BTC/USDT",
"direction": "BUY",
"confidence": 0.71,
"stop_loss": 96420.0,
"take_profit": 99850.0,
"ts": "2026-04-26T10:11:53Z"
}

4단계: 리스크 거부 확인

봇이 너무 큰 사이즈를 제안하면 RiskManager가 시그널을 거부합니다. 로그에서 RISK_RULE_VIOLATION을 확인하고 해당 시그널이 체결되지 않음을 검증합니다.

docker compose logs -f api | grep RISK_RULE_VIOLATION

5단계: 24시간 후 결과 비교

대시보드 Backtest 페이지에서 동일 전략/기간으로 백테스트 결과를 만듭니다. Trades 페이지에서 24시간 페이퍼 거래 내역을 export(CSV) 후 PnL/체결 슬리피지를 비교합니다.

검증

  • bot/status API가 running 상태 반환
  • WebSocket으로 시그널·체결 이벤트 최소 1건 수신
  • Trades 페이지에서 BTC/USDT 페이퍼 체결 row 존재
  • 일일 -5% 임박 시 자동 일시 중단 알림 (Telegram 연결되어 있을 시)

다음 단계