fix: 전체 회의 CRITICAL 6건 수정 — 손절/리스크/성과/인프라
1. trade_executor: 손절값 -6.0 하드코딩 → -settings.STOP_LOSS_PERCENT (7%) 2. mdd_manager: MDD 강제매도 시 loss_tracker 호출 추가 3. risk_validator, day_trading: 가격필터 < → <= (5,000원 정확히 차단) 4. daytrading/entry_service: 글로벌 자본 사용률(95%) 가드 추가 5. trade_analyzer: 수익률 0%를 손실에서 제외 (< 0으로 변경) 6. db_worker: 종료 시 큐 drain + DLQ 백업으로 데이터 유실 방지 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -121,7 +121,7 @@ async def analyze_performance(db: AsyncSession, days: int = 30) -> Dict[str, Any
|
||||
pl_amounts = [_to_float(t.net_profit_loss) for t in trades]
|
||||
|
||||
wins = [r for r in pl_rates if r > 0]
|
||||
losses = [r for r in pl_rates if r <= 0]
|
||||
losses = [r for r in pl_rates if r < 0]
|
||||
|
||||
win_rate = len(wins) / len(pl_rates) if pl_rates else 0.0
|
||||
avg_win = sum(wins) / len(wins) if wins else 0.0
|
||||
@@ -243,7 +243,7 @@ def _empty_summary() -> Dict[str, Any]:
|
||||
def _calc_max_consecutive_loss(pl_rates: List[float]) -> int:
|
||||
max_streak = current_streak = 0
|
||||
for r in pl_rates:
|
||||
if r <= 0:
|
||||
if r < 0:
|
||||
current_streak += 1
|
||||
max_streak = max(max_streak, current_streak)
|
||||
else:
|
||||
|
||||
Reference in New Issue
Block a user