feat(rsi_dca): 7종 RSI 정액 매수 라이브 전략·모니터 고도화·수집 안정화

RSI DCA 전략 (신규)
- rsi_dca_engine/runner/control: 1분봉 RSI(14) 종목별 기준선 상향 돌파 시 정액 매수,
  일 상한, 신호 45분 유효, 킬스위치, 인터벌 변경 시 커서 재초기화, 체결가 거래소 보정
- scripts: 3_run_rsi_dca(.py/_cron.sh), 백테스트·인터벌 비교, go-live 스위치
- 설정: RSI_DCA_* (모드·종목·기준선·종목별 오버라이드·일 상한 등)

모니터 (vol_live_monitor / vol_monitor_chart)
- 분봉 탭(/api/candles), RSI(14) 패널·종목별 기준선, 3패널 시간축 정렬, KST 표기
- 자동매수 ON/OFF 패널(/api/rsi/status·toggle), 빌드 해시 기반 자동 새로고침, 지연 경고
- 요약표: 거래소 평균매입가 기준 보유원금·수익률, 총평가 손익, 수익률순 동적 정렬
- 잔고 스냅샷을 계좌 전체 조회 1회로 통합, 실시간 시세 반영

데이터·수집
- candle_store/loader: SQL 범위·LIMIT 조회로 대형 테이블 전량 스캔 제거
- 절전·재부팅 후 공백 자동 백필(gap_backfill, 00_backfill_gaps) 및 cron 연동
- 수집 cron 분할(매분 핵심 분봉·5분 전체), 프로젝트 한정 lock 패턴, exec 제거로 lock 정리 복구
- 모니터 종목(VOL_MONITOR_SYMBOLS)·수집 종목 7종 분리, 한글 코인명 추가

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
dsyoon
2026-09-24 18:30:31 +09:00
parent 0d6c57db62
commit 48dcdd0ae8
27 changed files with 2727 additions and 84 deletions

View File

@@ -136,6 +136,8 @@ OPS_SIZING_RULES_JSON=data/spot/operations/sizing_rules.json
# fractal_swing(3분)과 별도 프로세스 — 동시 live 시 KRW 경합 주의
OPS_SYMBOLS=TRX,NEAR,WLD
VOL_STATE_JSON=data/spot/operations/vol_breakout_state.json
# 모니터 차트 표시 종목 (매매 OPS_SYMBOLS와 분리). 비우면 OPS_SYMBOLS
VOL_MONITOR_SYMBOLS=XRP,TRX,WLD,SOL,ETH,ADA,SUI
VOL_LOOKBACK=14
VOL_ATR_MULT=2.0
VOL_LOOKBACK_DAYS=60
@@ -162,6 +164,28 @@ VOL_MONITOR_DAYS=14
# cron (vol_breakout): bash scripts/install_crontab.sh --apply
# BITHUMB_PYTHON=/Users/dsyoon/opt/anaconda3/envs/coin/bin/python3
# --- RSI DCA 정액 매수 (15m RSI 30/35 상향 돌파 · 매도 없음 · 2026-09-07) ---
# 모드는 OPS_MODE와 분리. live 전환: RSI_DCA_MODE=live (실제 주문 발생)
RSI_DCA_MODE=paper
RSI_DCA_SYMBOLS=XRP,TRX,WLD,SOL,ETH,ADA,SUI
RSI_DCA_INTERVAL_MIN=15
RSI_DCA_PERIOD=14
# level:원 — 30 상향 돌파 2만원, 35 상향 돌파 1만원 (둘 다 발생 가능)
RSI_DCA_LEVELS=30:20000,35:10000
# 종목별 기준선 오버라이드 (없는 종목은 RSI_DCA_LEVELS). 예: XRP=19:10000;TRX=32:10000
RSI_DCA_LEVELS_BY_SYMBOL=
# 일(KST) 총 매수 상한 — 초과하는 주문은 스킵
RSI_DCA_DAILY_MAX_KRW=60000
RSI_DCA_LOOKBACK_DAYS=20
RSI_DCA_MAX_BARS_PER_TICK=8
# 봉 마감 후 N분 지난 신호는 매수하지 않음 (장애 복구 시 몰아 매수 방지)
RSI_DCA_MAX_SIGNAL_AGE_MIN=45
RSI_DCA_STATE_JSON=data/spot/operations/rsi_dca_state.json
RSI_DCA_REPORT_JSON=docs/spot/3_operations/rsi_dca_report.json
RSI_DCA_TICK_LOCK_PATH=data/spot/operations/rsi.tick.lock
# 파일이 존재하면 신규 매수 차단: touch data/spot/operations/rsi.kill
RSI_DCA_KILL_SWITCH_PATH=data/spot/operations/rsi.kill
# 폴더 구조: data|docs / {common, spot}
# common — coins.db 등 공유 리소스
# spot — 현물 GT·기법·분석·운영