feat: 시스템 외 매입 종목 stop-loss/take-profit 활성화 (pchs_avg_pric 반영) #249

Closed
opened 2026-02-25 02:15:25 +09:00 by agentson · 0 comments
Collaborator

문제

sync_positions_from_broker()가 시스템 외부에서 매수한 종목을 DB에 동기화할 때 price=0.0을 하드코딩해서 저장한다. trading_cycle()의 stop-loss/take-profit 로직은 if entry_price > 0으로 가드되어 있어, 외부 매수 종목에 대해 보호 로직이 전혀 작동하지 않는다.

원인

src/main.pysync_positions_from_broker() 내부:

price=0.0,  # 항상 0.0 — stop-loss/take-profit 비활성화

KIS API balance output1에는 이미 pchs_avg_pric (매입평균가격) 필드가 있다.

해결책

  1. _extract_avg_price_from_balance() 헬퍼 함수 추가
  2. sync_positions_from_broker()에서 pchs_avg_pric 추출 후 price에 저장
  3. 단위 테스트 11개 + 통합 테스트 3개 추가
## 문제 `sync_positions_from_broker()`가 시스템 외부에서 매수한 종목을 DB에 동기화할 때 `price=0.0`을 하드코딩해서 저장한다. `trading_cycle()`의 stop-loss/take-profit 로직은 `if entry_price > 0`으로 가드되어 있어, 외부 매수 종목에 대해 보호 로직이 전혀 작동하지 않는다. ## 원인 `src/main.py`의 `sync_positions_from_broker()` 내부: ```python price=0.0, # 항상 0.0 — stop-loss/take-profit 비활성화 ``` KIS API balance output1에는 이미 `pchs_avg_pric` (매입평균가격) 필드가 있다. ## 해결책 1. `_extract_avg_price_from_balance()` 헬퍼 함수 추가 2. `sync_positions_from_broker()`에서 `pchs_avg_pric` 추출 후 `price`에 저장 3. 단위 테스트 11개 + 통합 테스트 3개 추가
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: jihoson/The-Ouroboros#249