fix: 한투 호가 2키 전용, LS RAM 합집합, 분봉 쓰레기면 다음 소스 통째
메인 시세 41에 H0STASP0를 붙이는 폴백을 없앤다. MINIMAL과 무관하게 후보∪보유∪영구를 LS RAM에 붙인다. 그 분 틱이 없거나 봉끝 대비 늦으면 그 WS 봉을 버리고 2차·LS·REST 봉을 통째로 쓴다. 같은 파일에 직전 커밋 이후 쌓인 시세 폴백/ENV 키 정리도 포함된다. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -232,7 +232,8 @@ graph TD
|
||||
| `optuna_common.py` | 672 | 🔬 백테스트 | `database`, `optuna_briefing`, `env` |
|
||||
| `optuna_daily_trail_recommend.py` | 315 | 🔬 백테스트 | `param_search_apply_snapshot`, `env` |
|
||||
| `optuna_mode_combo.py` | 278 | 🔬 백테스트 | `optuna_postprocess_topn`, `optuna_tpe_common`, `env` |
|
||||
| `optuna_postprocess_topn.py` | — | 🔬 백테스트 | `optuna_orderbook_recommend`, `optuna_whipsaw_recommend` |
|
||||
| `optuna_post_progress.py` | — | 🔬 백테스트 | (후처리 진행 로그, 웹 바) |
|
||||
| `optuna_postprocess_topn.py` | — | 🔬 백테스트 | `optuna_orderbook_recommend`, `optuna_whipsaw_recommend`, `optuna_post_progress` |
|
||||
| `optuna_rerun_postprocess.py` | — | 🔬 백테스트 | `optuna_postprocess_topn`, `optuna_momentum` |
|
||||
| `optuna_search_space.py` | 89 | 🔬 백테스트 | `param_search_breakout`, `param_search_momentum`, `param_search_scalping` +1 |
|
||||
| `optuna_tpe_common.py` | 218 | 🔬 백테스트 | |
|
||||
@@ -258,9 +259,11 @@ graph TD
|
||||
| `indicator_cache.py` | 412 | ⚙️ 엔진 | `ema_trend_filter`, `momentum_engine`, `env` |
|
||||
| `limit_entry_common.py` | 196 | ⚙️ 엔진 | |
|
||||
| `ls_feed_gate.py` | 20 | ⚙️ 엔진 | `env`, `ls_ws` |
|
||||
| `feed_fallback.py` | — | ⚙️ 엔진 | `env` |
|
||||
| `mid_enroll_entry_gate.py` | 241 | ⚙️ 엔진 | `env` |
|
||||
| `orderbook_env.py` | 187 | ⚙️ 엔진 | `env` |
|
||||
| `orderbook_filter.py` | 276 | ⚙️ 엔진 | `env`, `orderbook_cache`, `trigger_eval_recorder` |
|
||||
| `live_sell_price.py` | — | ⚙️ 엔진 | `env` |
|
||||
| `post_sell_candle_backfill.py` | 439 | ⚙️ 엔진 | `database`, `candle_rollup`, `env` +2 |
|
||||
| `program_filter.py` | 229 | ⚙️ 엔진 | `env`, `program_cache`, `trigger_eval_recorder` |
|
||||
| `strategy_eod.py` | 149 | ⚙️ 엔진 | |
|
||||
@@ -728,6 +731,8 @@ graph TD
|
||||
| `kis_trader/engine/momentum_tick_replay.py` | 620 | `kis_trader.backtest.shared_ticks`, `kis_trader.engine.momentum_engine`, `kis_trader.engine.whipsaw_filter`, `kis_trader.utils.env`, `kis_trader.utils.trade_time` | - |
|
||||
| `kis_trader/engine/orderbook_env.py` | 187 | `kis_trader.utils.env` | - |
|
||||
| `kis_trader/engine/orderbook_filter.py` | 276 | `kis_trader.utils.env`, `kis_trader.ws.orderbook_cache`, `kis_trader.ws.trigger_eval_recorder` | `orderbook_env`, `trigger_eval_collect` |
|
||||
| `kis_trader/engine/live_sell_price.py` | — | `kis_trader.utils.env` | `base` 매도 현재가 |
|
||||
| `kis_trader/engine/feed_fallback.py` | — | `kis_trader.utils.env` | 실매·옵투나 읽기 2초 폴백 |
|
||||
| `kis_trader/engine/post_sell_candle_backfill.py` | 439 | `database`, `kis_trader.engine.candle_rollup`, `kis_trader.utils.env`, `kis_trader.utils.logger`, `kis_trader.ws.kis_ws` | - |
|
||||
| `kis_trader/engine/program_filter.py` | 229 | `kis_trader.utils.env`, `kis_trader.ws.program_cache`, `kis_trader.ws.trigger_eval_recorder` | `trigger_eval_collect` |
|
||||
| `kis_trader/engine/range_break_engine.py` | 460 | `database`, `kis_trader.backtest.range_break_portfolio_backtest`, `kis_trader.engine.range_break_env_keys`, `kis_trader.strategies.breakout`, `kis_trader.utils.trade_time` | - |
|
||||
@@ -1027,7 +1032,17 @@ graph TD
|
||||
> AST 재생성 시 이 섹션 유지.
|
||||
|
||||
- 판정: `kis_trader/engine/orderbook_filter.py` `_fetch_snapshot` — `WS_ORDERBOOK_FILTER_MAX_AGE_SEC`(기본 0). 사진 없음+필터 ON → `WS_ORDERBOOK_FILTER_REJECT_IF_EMPTY`(기본 true).
|
||||
- 실매 매수·매도 현재가: `WSManager.get_price()` 생략=읽기 폴백 나이(`LIVE_FEED_FALLBACK_MAX_AGE_SEC` 기본 3초)로 메인→2차→3차. 한투 호가는 `kis_ws_ob`(2키)만 — 메인 `H0STASP0` 폴백 금지. 분봉 pick: `CANDLE_GARBAGE_FALLBACK` + `dedupe_by_read_pairs`(메인 WS→2차→LS→REST→rollup). `max_age_sec=None` 만 마지막 RAM(`get_price_last`). 매도 4차는 `live_sell_price.py` 키움 ka10007 + 쿨다운(시세 실키, `KIS_MOCK` 모의키 금지). 한투 `inquire_price` 60초 캐시 금지. EOD는 마지막 WS→REST→매수가 폴백. 호가 `get_orderbook_snapshot` 도 같은 폴백 체인 — `FILTER_MAX_AGE=0` 과 저장 TTL 을 합쳐 만료=`None`=필터 ON 통과 구멍을 만들지 말 것.
|
||||
- 저장: `trigger_snapshot_recorder` — `WS_ORDERBOOK_TICK_MAX_AGE_SEC`(기본 30). **공유 금지.**
|
||||
- 캐시: `orderbook_cache.get(..., max_age_sec)` — `<=0` 이면 나이 무시.
|
||||
- 후처리 격자: `optuna_common.ensure_optuna_gate_env_defaults` `OPTUNA_OB_ENTRY_*` / `ASK_MULT_*`.
|
||||
- 구 JSON 후처리만: `optuna_rerun_postprocess.py`.
|
||||
|
||||
## 수동 노트: 루트 레거시 파일 (2026-08-17)
|
||||
|
||||
> AST 재생성 시 이 섹션 유지.
|
||||
|
||||
실매 `kis_trader.main` 이 안 쓰는 파일은 `remove/` (**나중에 통째 삭제**).
|
||||
웹·알람이 **아직 쓰는** `holding_bot` / `news_analyzer` / `kis_long_ver*` 는 `legacy/` (`ensure_legacy_root`).
|
||||
`remove` 를 지워도 `legacy/` 는 남긴다.
|
||||
상세 `legacy/README.md`, `remove/README.md`.
|
||||
|
||||
Reference in New Issue
Block a user