fix: 최종 회의 CRITICAL 1건 + MEDIUM 2건 수정
1. swing/scheduler: mdd_manager.update() 매 사이클 호출 추가 — 새 스케줄러에서 MDD -10%/-20% 감지가 완전 무력화되어 있었음 2. mdd_manager: place_order() → safe_place_order() 변경 — 세마포어+분산락 보호로 이중 매도 방지 3. mdd_manager: 매도 후 ActiveTrade close/update 추가 — 전량 매도 시 enqueue_close_active_trade() — 부분 매도 시 remaining_pct 갱신 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -230,7 +230,8 @@ class MDDManager:
|
||||
sell_qty = min(sell_qty, quantity)
|
||||
|
||||
try:
|
||||
order_resp = await korea_investment_api.place_order(
|
||||
from app.services.trade_executor import safe_place_order
|
||||
order_resp = await safe_place_order(
|
||||
stock_code=stock_code,
|
||||
order_type="SELL",
|
||||
quantity=sell_qty,
|
||||
@@ -269,6 +270,20 @@ class MDDManager:
|
||||
"strategy_type": "mdd_reduction",
|
||||
})
|
||||
|
||||
# [FIX] 전량 매도 시 ActiveTrade 닫기
|
||||
remaining_qty = quantity - sell_qty
|
||||
if remaining_qty <= 0:
|
||||
from app.services.db_worker import enqueue_close_active_trade
|
||||
await enqueue_close_active_trade(stock_code)
|
||||
else:
|
||||
# 부분 매도: remaining_pct 갱신
|
||||
from app.services.db_worker import enqueue_active_trade_upsert
|
||||
new_remaining = remaining_qty / quantity
|
||||
await enqueue_active_trade_upsert({
|
||||
"stock_code": stock_code,
|
||||
"remaining_pct": new_remaining,
|
||||
})
|
||||
|
||||
results.append({
|
||||
"stock_code": stock_code,
|
||||
"stock_name": stock_name,
|
||||
|
||||
Reference in New Issue
Block a user