feat: 외부 유입 포지션 ActiveTrade 자동 등록 — 손절·분할익절 관리 편입
다른 인스턴스/증권사 앱에서 매수돼 동기화로 들어온 포지션은 ActiveTrade 행이 없어 손절·분할익절·트레일링 관리를 전혀 받지 못했다(2026-09-22 카카오뱅크가 -13%까지 방치되다 청산). 동기화 시 보유 중인데 active 행이 없으면 평균단가를 진입가로 등록하고 손절가를 STOP_LOSS_PERCENT 기준으로 설정한다. 데이트레이딩 태깅 종목은 제외 (DT 엔진이 당일 청산 대상으로 복원해버리므로). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -154,3 +154,16 @@ def test_active_trade_patch_supports_quantity():
|
||||
assert "quantity" in pf.ActiveTradeStatusUpdateRequest.model_fields
|
||||
src = inspect.getsource(pf.update_active_trade_status)
|
||||
assert "active_trade.quantity = request.quantity" in src
|
||||
|
||||
|
||||
def test_sync_seeds_active_trade_for_external_positions():
|
||||
"""외부 유입 보유 종목(ActiveTrade 없음)은 동기화 시 자동 등록되어야 손절 관리를 받는다."""
|
||||
import inspect
|
||||
from app.api.endpoints import portfolio as pf
|
||||
src = inspect.getsource(pf.sync_portfolio)
|
||||
assert "외부 유입 포지션 — 동기화 시 자동 등록" in src
|
||||
# 데이트레이딩 태깅 종목은 제외 (엔진이 당일 청산 대상으로 복원해버림)
|
||||
assert '(_h.strategy_type or "swing") == "daytrading"' in src
|
||||
# 평균단가를 진입가로, 손절가는 STOP_LOSS_PERCENT 기준
|
||||
assert "_cfg.STOP_LOSS_PERCENT" in src
|
||||
assert "entry_price=Decimal(str(_avg))" in src
|
||||
|
||||
Reference in New Issue
Block a user