크립토 모멘텀 봇 (BTC)
이 튜토리얼은 BTC/USDT 모멘텀 전략을 페이퍼 모드로 띄운 후 24시간 동작을 관찰하고, 라이브 시뮬레이션 단계까지 진행합니다.
학습 목표
- 페이퍼 모드로 봇을 띄우고 정지하는 라이프사이클 이해
- WebSocket(
/ws/live)으로 실시간 시그널·체결 이벤트 구독 - RiskManager 1-2% 룰이 시그널 단계에서 거부되는 모습 확인
- 24시간 페이퍼 결과로 백테스트와 실시간 결과 차이를 비교
사전 준비
- 페이퍼 트레이딩 셋업 완료
- Binance 페이퍼 키 등록 (
Settings→Exchange Keys→crypto) FEATURE_EQUITY_PAPER=true(멀티 자산 격리 검증을 함께 진행하기 위함)
1단계: 봇 설정 확인
대시보드 우측 상단에서 자산군 필터를 crypto로 전환합니다. Settings → Risk 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/statusAPI가running상태 반환 - WebSocket으로 시그널·체결 이벤트 최소 1건 수신
-
Trades페이지에서 BTC/USDT 페이퍼 체결 row 존재 - 일일 -5% 임박 시 자동 일시 중단 알림 (Telegram 연결되어 있을 시)
다음 단계
- 멀티 자산 포트폴리오 — BTC + 주식 자산군 분산
- 라이브 모드 졸업 — 90일+50거래 후 라이브 전환
- 운영 인시던트 대응 — 일일 -5% 자동 중단 시나리오