fix: overseas price API exchange code mismatch and VTS balance zero cause trade skip #147

Closed
opened 2026-02-18 23:44:07 +09:00 by agentson · 0 comments
Collaborator

문제

미국장에서 BUY 결정이 나와도 cash=0.00, price=0.00으로 거래가 스킵되는 문제.

원인 1: Exchange code 불일치 (price API)

get_overseas_price()exchange_code를 그대로 사용 (예: AMEX, NASD).
하지만 KIS 현재가 조회 API(HHDFS00000300)는 다른 코드를 요구함:

  • AMEXAMS (올바른 코드, 확인됨: last='44.3400')
  • NASDNAS (추정, 랭킹 API 매핑과 동일)

랭킹 API는 _RANKING_EXCHANGE_MAP으로 변환하지만, 가격 조회 API는 변환 없이 사용.

원인 2: VTS 해외 잔고 API 오류

get_overseas_balance()에서 VTTS3012R 호출 시:

rt_cd: 2, msg1: ERROR : INPUT INVALID_CHECK_ACNO

→ VTS 계좌가 해외 잔고 조회 미지원 → total_cash=0
_determine_order_quantity(): total_cash <= 0return 0 → 거래 스킵

수정 방법

  1. overseas.py: 가격 API에도 exchange code 변환 적용 (NAS/AMS)
  2. overseas.py: 가격 API 반환값이 0이면 candidate.price 사용
  3. config.py: PAPER_OVERSEAS_CASH 설정 추가 (VTS 잔고 폴백)
  4. main.py: 해외 잔고 0일 때 PAPER_OVERSEAS_CASH 폴백 적용
## 문제 미국장에서 BUY 결정이 나와도 `cash=0.00, price=0.00`으로 거래가 스킵되는 문제. ### 원인 1: Exchange code 불일치 (price API) `get_overseas_price()`는 `exchange_code`를 그대로 사용 (예: `AMEX`, `NASD`). 하지만 KIS 현재가 조회 API(`HHDFS00000300`)는 다른 코드를 요구함: - `AMEX` → `AMS` (올바른 코드, 확인됨: last='44.3400') - `NASD` → `NAS` (추정, 랭킹 API 매핑과 동일) 랭킹 API는 `_RANKING_EXCHANGE_MAP`으로 변환하지만, 가격 조회 API는 변환 없이 사용. ### 원인 2: VTS 해외 잔고 API 오류 `get_overseas_balance()`에서 `VTTS3012R` 호출 시: ``` rt_cd: 2, msg1: ERROR : INPUT INVALID_CHECK_ACNO ``` → VTS 계좌가 해외 잔고 조회 미지원 → `total_cash=0` → `_determine_order_quantity()`: `total_cash <= 0` → `return 0` → 거래 스킵 ### 수정 방법 1. `overseas.py`: 가격 API에도 exchange code 변환 적용 (NAS/AMS) 2. `overseas.py`: 가격 API 반환값이 0이면 candidate.price 사용 3. `config.py`: `PAPER_OVERSEAS_CASH` 설정 추가 (VTS 잔고 폴백) 4. `main.py`: 해외 잔고 0일 때 PAPER_OVERSEAS_CASH 폴백 적용
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: jihoson/The-Ouroboros#147