Some checks failed
CI / test (pull_request) Has been cancelled
DB의 주문 수량 기록은 실제 체결 수량과 다를 수 있음(부분 체결, 외부 수동 거래). 브로커 잔고 API(output1)를 source of truth로 사용하도록 수정. ## 변경 사항 ### SELL 수량 (#164) - _extract_held_qty_from_balance() 추가 - 국내: output1의 ord_psbl_qty (→ hldg_qty fallback) - 해외: output1의 ovrs_cblc_qty (→ hldg_qty fallback) - _determine_order_quantity()에 broker_held_qty 파라미터 추가 - SELL 시 broker_held_qty 반환 (0이면 주문 스킵) - trading_cycle / run_daily_session 양쪽 호출 지점 수정 - 이미 fetch된 balance_data에서 수량 추출 (추가 API 호출 없음) ### 보유 종목 루프 (#165) - _extract_held_codes_from_balance() 추가 - ord_psbl_qty > 0인 종목 코드 목록 반환 - 실시간 루프에서 스캔 시점에 get_balance() 호출해 보유 종목 병합 - 스캐너 후보 + 실제 보유 종목 union으로 trading_cycle 순회 - 실패 시 경고 로그 후 스캐너 후보만으로 계속 진행 ### 테스트 - TestExtractHeldQtyFromBalance: 7개 (국내/해외/fallback/미보유) - TestExtractHeldCodesFromBalance: 4개 (qty>0 포함, qty=0 제외 등) - TestDetermineOrderQuantity: 5개 (SELL qty, BUY sizing) - test_sell_order_uses_broker_balance_qty_not_db: DB 10주 기록 vs 브로커 5주 확인 → 브로커 값(5) 사용 검증 - 기존 SELL/stop-loss/take-profit 테스트에 output1 mock 추가 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
72 KiB
72 KiB