fix: 해외 cash=0.00 및 get_open_position HOLD 필터링 수정 (#264, #265) #266

Merged
jihoson merged 1 commits from feature/issue-264-265-overseas-cash-and-open-position into main 2026-02-26 01:30:37 +09:00
Collaborator

Summary

  • #264: frcr_dncl_amt_2 필드가 TTTS3012R output2에 존재하지 않아 해외 매수 현금이 항상 0.00으로 산출되는 버그 수정 — 해외주식 매수가능금액조회 API(TTTS3007R/VTTS3007R)로 교체, ord_psbl_frcr_amt 필드 사용
  • #265: get_open_position()이 HOLD 레코드를 최신 레코드로 인식해 BUY 포지션 반환 실패 수정 — AND action IN ('BUY', 'SELL') 필터 추가로 HOLD 레코드 제외

변경 파일

  • src/broker/overseas.pyget_overseas_buying_power() 메서드 추가 (TTTS3007R/VTTS3007R)
  • src/main.py — trading_cycle() 및 daily cycle 해외 cash 조회 로직 교체
  • src/db.pyget_open_position() 쿼리에 action IN ('BUY', 'SELL') 필터 추가
  • tests/test_main.py — 해외 브로커 mock에 get_overseas_buying_power AsyncMock 추가, frcr_dncl_amt_2 제거

Test plan

  • 888개 테스트 전부 통과 확인
  • 재시작 후 해외 시장 BUY 주문 cash > 0.00 확인
  • NVDA 등 BUY 후 HOLD 결정된 종목의 unrealized_pnl_pct 포함 여부 확인

🤖 Generated with Claude Code

## Summary - **#264**: `frcr_dncl_amt_2` 필드가 TTTS3012R output2에 존재하지 않아 해외 매수 현금이 항상 0.00으로 산출되는 버그 수정 — `해외주식 매수가능금액조회` API(TTTS3007R/VTTS3007R)로 교체, `ord_psbl_frcr_amt` 필드 사용 - **#265**: `get_open_position()`이 HOLD 레코드를 최신 레코드로 인식해 BUY 포지션 반환 실패 수정 — `AND action IN ('BUY', 'SELL')` 필터 추가로 HOLD 레코드 제외 ## 변경 파일 - `src/broker/overseas.py` — `get_overseas_buying_power()` 메서드 추가 (TTTS3007R/VTTS3007R) - `src/main.py` — trading_cycle() 및 daily cycle 해외 cash 조회 로직 교체 - `src/db.py` — `get_open_position()` 쿼리에 action IN ('BUY', 'SELL') 필터 추가 - `tests/test_main.py` — 해외 브로커 mock에 `get_overseas_buying_power` AsyncMock 추가, `frcr_dncl_amt_2` 제거 ## Test plan - [x] 888개 테스트 전부 통과 확인 - [ ] 재시작 후 해외 시장 BUY 주문 cash > 0.00 확인 - [ ] NVDA 등 BUY 후 HOLD 결정된 종목의 unrealized_pnl_pct 포함 여부 확인 🤖 Generated with [Claude Code](https://claude.com/claude-code)
agentson added 1 commit 2026-02-26 01:30:04 +09:00
fix: 해외 cash=0.00 및 get_open_position HOLD 필터링 수정 (#264, #265)
Some checks failed
CI / test (pull_request) Has been cancelled
df12be1305
## 변경사항

### #264 — 해외 매수가능금액 조회 API 교체 (frcr_dncl_amt_2 → inquire-psamount)
- TTTS3012R (해외주식 잔고) output2에 frcr_dncl_amt_2 필드가 존재하지 않아
  총 가용 현금이 항상 0.00으로 산출되는 문제 수정
- OverseasBroker에 get_overseas_buying_power() 메서드 추가
  (TR_ID: 실전 TTTS3007R / 모의 VTTS3007R, ord_psbl_frcr_amt 반환)
- main.py trading_cycle() 및 daily cycle 모두 수정
- 출처: 한국투자증권 오픈API 전체문서 (20260221) — 해외주식 매수가능금액조회 시트

### #265 — get_open_position() HOLD 레코드 필터링 추가
- HOLD 결정도 trades 테이블에 저장되어 BUY 이후 HOLD 기록 시
  최신 레코드가 HOLD → get_open_position이 None 반환하는 문제 수정
- 쿼리에 AND action IN ('BUY', 'SELL') 필터 추가
- HOLD 레코드를 제외하고 마지막 BUY/SELL 기록만 확인

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
jihoson merged commit b1b728f62e into main 2026-02-26 01:30:37 +09:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: jihoson/The-Ouroboros#266