fix(시세): LS spill-only·토큰 파일캐시·호가 snap_time 3초컷

- _feed_fallback 미러 OFF, LS cap/grace/hold RAM을 KIS·키움 spill과 정합
- LS 접근토큰 .ls_token_cache_*.json (재시작 재사용, revoke 루프 없음)
- 호가 RAM을 틱과 동일 LIVE_FEED_FALLBACK(snap_time)로 컷, 필터 max_age=0은 유지
- 익절 지정가 로그에 실제 호가 벤더(kis/kiwoom/ls 1·2·3차) 표기

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Your Name
2026-08-27 15:21:21 +09:00
parent ba2f9f0953
commit 5e44b86f8b
24 changed files with 1923 additions and 203 deletions

View File

@@ -123,10 +123,13 @@ def orderbook_params_to_env_patch(strategy: str, params: Dict[str, Any]) -> Dict
out[_key(pfx, "ENTRY_BID_DEPTH_MULT")] = str(float(params["bid_depth_mult"]))
if "bid_levels" in params and params.get("bid_levels") not in (None, ""):
out[_key(pfx, "ENTRY_BID_LEVELS")] = str(int(float(params["bid_levels"])))
# 호가축이 섞인 apply 면 필터 ON (탐색 결과를 실매에 쓰려면 필요)
if out and params.get("ob_filter_enabled") not in (None, ""):
# 호가축 apply → FILTER_ENABLED (_orderbook_filter_enabled / ob_filter_enabled)
fe = params.get("ob_filter_enabled")
if fe is None:
fe = params.get("_orderbook_filter_enabled")
if fe is not None and str(fe).strip() != "":
out[_key(pfx, "FILTER_ENABLED")] = (
"true" if str(params.get("ob_filter_enabled")).lower() in ("1", "true", "yes", "on")
"true" if str(fe).lower() in ("1", "true", "yes", "on")
else "false"
)
return out