fix: overseas order rt_cd check + log_trade on success only + buy price premium #151

Closed
opened 2026-02-19 05:39:44 +09:00 by agentson · 0 comments
Collaborator

문제

해외주식 주문 시 세 가지 결함:

1. rt_cd 미확인

send_overseas_order() 가 HTTP 200이면 항상 "Overseas order submitted" 로그 출력.
rt_cd != "0" (에러)인 경우에도 성공으로 처리.

2. log_trade() 무조건 호출

main.py에서 log_trade()가 order API 성공 여부와 무관하게 항상 호출됨.
"주문가능금액이 부족합니다" 같은 에러 응답에도 DB에 BUY 기록 → 잘못된 데이터.

3. 지정가 주문 미체결 가능성

현재 BUY 지정가 주문 가격 = last (마지막 체결가).
실제 체결은 ask 가격 이상이어야 하므로, last < ask 인 경우 미체결.
KIS VTS 가격 API(HHDFS00000300)는 ask 가격을 반환하지 않음.

수정 방향

  1. send_overseas_order(): rt_cd 확인 후 rt_cd != "0"이면 에러 반환 (dict에 _error=True 마킹 또는 raise)
  2. main.py: result.get("rt_cd") == "0" 인 경우에만 log_trade() 호출
  3. BUY 지정가 = current_price * 1.005 (0.5% 프리미엄) — 체결 확률 향상
## 문제 해외주식 주문 시 세 가지 결함: ### 1. rt_cd 미확인 `send_overseas_order()` 가 HTTP 200이면 항상 "Overseas order submitted" 로그 출력. `rt_cd != "0"` (에러)인 경우에도 성공으로 처리. ### 2. log_trade() 무조건 호출 `main.py`에서 `log_trade()`가 order API 성공 여부와 무관하게 항상 호출됨. "주문가능금액이 부족합니다" 같은 에러 응답에도 DB에 BUY 기록 → 잘못된 데이터. ### 3. 지정가 주문 미체결 가능성 현재 BUY 지정가 주문 가격 = `last` (마지막 체결가). 실제 체결은 ask 가격 이상이어야 하므로, last < ask 인 경우 미체결. KIS VTS 가격 API(`HHDFS00000300`)는 ask 가격을 반환하지 않음. ## 수정 방향 1. `send_overseas_order()`: `rt_cd` 확인 후 `rt_cd != "0"`이면 에러 반환 (dict에 `_error=True` 마킹 또는 raise) 2. `main.py`: `result.get("rt_cd") == "0"` 인 경우에만 `log_trade()` 호출 3. BUY 지정가 = `current_price * 1.005` (0.5% 프리미엄) — 체결 확률 향상
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: jihoson/The-Ouroboros#151