feat: include current holdings in realtime trading loop for exit evaluation #165

Closed
opened 2026-02-20 02:58:58 +09:00 by agentson · 0 comments
Collaborator

문제

현재 실시간 트레이딩 루프는 Smart Scanner 후보 종목만 처리한다.
보유 중인 종목이 스캐너에 잡히지 않으면 SELL 평가 자체가 불가능하다.

# main.py:1784
active_stocks[market.code] = smart_scanner.get_stock_codes(candidates)
# ↑ 보유 종목이 포함되지 않음

영향

  • 매수는 되지만 청산이 우연에 의존 (스캐너 재등장 여부)
  • 손절/익절이 실질적으로 작동 안 함
  • '매수만 열심히 하는' 근본 원인

개선

각 마켓 사이클에서 DB 보유 종목을 active_stocks에 합집합으로 포함:

  1. get_open_positions_by_market(db_conn, market.code) 함수 추가
  2. 스캐너 후보 + 보유 종목 union으로 stock_codes 구성
  3. 보유 종목은 플레이북 없으면 HOLD → stop_loss/take_profit 체크

의존성

  • #163 (take_profit 체크) 먼저 완료 권장
  • #164 (SELL 수량 수정) 먼저 완료 권장

테스트

  • 보유 종목이 루프에 포함되는지 검증
  • 스캐너 후보와 중복 제거 검증
  • 보유 종목에 플레이북 없을 때 HOLD 기본 동작 검증
## 문제 현재 실시간 트레이딩 루프는 Smart Scanner 후보 종목만 처리한다. 보유 중인 종목이 스캐너에 잡히지 않으면 SELL 평가 자체가 불가능하다. ```python # main.py:1784 active_stocks[market.code] = smart_scanner.get_stock_codes(candidates) # ↑ 보유 종목이 포함되지 않음 ``` ## 영향 - 매수는 되지만 청산이 우연에 의존 (스캐너 재등장 여부) - 손절/익절이 실질적으로 작동 안 함 - '매수만 열심히 하는' 근본 원인 ## 개선 각 마켓 사이클에서 DB 보유 종목을 active_stocks에 합집합으로 포함: 1. get_open_positions_by_market(db_conn, market.code) 함수 추가 2. 스캐너 후보 + 보유 종목 union으로 stock_codes 구성 3. 보유 종목은 플레이북 없으면 HOLD → stop_loss/take_profit 체크 ## 의존성 - #163 (take_profit 체크) 먼저 완료 권장 - #164 (SELL 수량 수정) 먼저 완료 권장 ## 테스트 - 보유 종목이 루프에 포함되는지 검증 - 스캐너 후보와 중복 제거 검증 - 보유 종목에 플레이북 없을 때 HOLD 기본 동작 검증
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: jihoson/The-Ouroboros#165