이번에 들어간 내용

한투 호가 = 2번째 앱키 전용
키 없거나 start 실패 시 메인에 H0STASP0 안 붙임. 운영설정 WS_ORDERBOOK_SAVE_KIS 빨간 danger.

LS RAM 합집합
후보∪보유∪영구∪grace. sync_targets와 split reconcile 둘 다. 틱 DB 영구 게이트는 그대로.

분봉 쓰레기 → 다음 소스 봉 통째
그 분 틱 0건이거나 전부 봉끝 대비 LIVE_FEED_FALLBACK_MAX_AGE_SEC 초과면 구멍. 메인 WS → 2차 → LS → REST → rollup. CANDLE_GARBAGE_FALLBACK 기본 true.

파일: feed_fallback.py(신규), ws_manager.py, kis_ws.py, candle_series.py, bt_candle_source.py, live_config_schema.py, database.py, 스모크, MD 2개.

같은 ws_manager/database/kis_ws/live_config에는 직전 커밋 이후 쌓여 있던 시세 폴백·ENV 키 정리도 같이 들어갔습니다. 파일 단위로 나눌 수 없어서입니다.
This commit is contained in:
Your Name
2026-08-19 22:11:31 +09:00
parent d1dc274f0e
commit 0ecac7cb95
229 changed files with 8487 additions and 1647 deletions

View File

@@ -3,7 +3,7 @@
> 운영 기준 메모 (코드·공식 스펙·실측). **추측 재발급 금지.**
> 관련: `kis_token_manager.py`, `kis_approval_manager.py`, `kis_trader/network/ls_token.py`, `kis_trader/ws/*`, `docs/계정.md`
최종 갱신: 2026-08-15
최종 갱신: 2026-08-19
---
@@ -33,8 +33,11 @@
- 매매 클라이언트: `KIS_MOCK` 따름 (`kis_trader.main` `self.client`)
- 시세/조회: **항상 실키** (`market_client`) — 모의 도메인 시세 미지원/500 다수
- 토큰 파일 캐시: `kis_token_manager` (실전+모의 **세션 미커버/만료만** 발급)
- approval 파일 캐시: `kis_approval_manager` (국내·해외 WS **공유**)
- 토큰 파일 캐시: `kis_token_manager` (실전+모의 **세션 미커버/만료만** 발급). 앱키는 `TradeDB.get_auth_env()` (`env_auth_config`)
- approval 파일 캐시: `kis_approval_manager`
- **main** (국내·해외 같은 앱키 공유): `.kis_approval_cache_real.json`
- **ob** (호가 전용 2번째 앱키, 별도 파일): `.kis_approval_cache_ob_real.json` — 메인 JSON을 덮지 않음
- 호가키는 `tokenP`(접근토큰) 불필요. WS `Approval`만 슬롯 분리
### 1.2 REST 도메인
@@ -48,6 +51,17 @@
| TR | 시장 | 내용 | 한도 |
|----|------|------|------|
| `H0STCNT0` | 국내 | 실시간 체결 | **세션당 최대 41종** (`kis_ws.MAX_SUBSCRIPTIONS`) |
누가 41에 들어가나 (`WSManager`) — **`LIVE_TICK_PROVIDER` 와 무관**:
| 스위치 | 하는 일 | 안 하는 일 |
|--------|---------|------------|
| **MINIMAL** | 한투 소켓에 **누구를 넣을지**. true=보유만, 후보는 키움 | 매매 현재가 벤더를 바꾸지 않음 |
| **LIVE_TICK** | `get_price()`**어느 RAM을 먼저 볼지** | 한투/키움 구독 명단을 바꾸지 않음 |
- **기본** (`WS_SUBSCRIBE_KIS_MINIMAL=false`): 후보·보유를 키움과 **같이** 구독. 41 넘으면 그다음 실패/spill.
- **MINIMAL=true**: 한투=**보유만**, 후보=키움. 메인을 한투(`LIVE_TICK=kis`)로 바꿔도 후보 틱은 한투에 없음.
- **영구구독 KR은 LS.** 한투 41은 영구 전용 슬롯이 아님.
| `HDFSCNT0` | 해외 | 실시간(지연) 체결 | 별도 소켓 · **같은 approval** 공유 |
| (호가 등) | 국내 | 주로 REST/다른 TR · 실매 호가필터는 **키움 0D / LS UH1** 경로도 사용 | — |
@@ -102,7 +116,7 @@ env 스위치:
| (조건) | 조건검색 실시간 | `kiwoom_condition` 유니버스 |
**구독 한도:** 그룹당 **100종** (`KIWOOM_WS_MAX_SUBSCRIPTIONS`, 기본 100).
실매 운영: 후보 상한 합 + 영구구독 + 보유 ≤ 100.
실매: 후보 상한 합 + 보유 + grace ≤ 100. **영구구독 KR은 LS** (키움 100에 안 넣음).
### 2.3 히스토리