feat: 틱/호가 데이터 출처 표출 UI 추가 및 데이터 수집 개선

- 백테스트 및 실거래 시 틱과 호가의 벤더 출처(ob_source, entry_source) 기록 및 추적 강화 (tail_engine.py)
- 웹 UI '체결디버그'에 [틱:kis / 호가:ls] 형태로 데이터 출처를 직관적으로 표출 (backtest.js, backtest.html)
- LS WebSocket 구독 100건 제한 하드코딩 해제 및 env_config_ext 연동 (ls_ws.py)
- 기타 백테스트 웹 및 DB 관련 최적화 적용
This commit is contained in:
Your Name
2026-09-02 20:53:16 +09:00
parent 2c37771a16
commit 253c95e2c2
11 changed files with 1141 additions and 234 deletions

View File

@@ -496,12 +496,6 @@ class LSWebSocketPriceCache:
if code.isdigit() and len(code) == 6:
need_reg = False
with self._sub_lock:
if max_n > 0 and code not in self._subscribed and len(self._subscribed) >= max_n:
logger.warning(
"⚠️ LS WS 구독 한도 초과 (%d/%d) — %s 등록 거절",
len(self._subscribed), max_n, code,
)
return False
ow = self._sub_owners.setdefault(code, set())
if own in ow and code in self._subscribed:
return True
@@ -515,16 +509,6 @@ class LSWebSocketPriceCache:
else:
need_reg = False
with self._sub_lock:
if (
max_n > 0
and code not in self._us_subscribed
and (len(self._subscribed) + len(self._us_subscribed)) >= max_n
):
logger.warning(
"⚠️ LS WS 구독 한도 초과 (%d/%d) — %s 등록 거절",
len(self._subscribed) + len(self._us_subscribed), max_n, code,
)
return False
ow = self._us_sub_owners.setdefault(code, set())
if own in ow and code in self._us_subscribed:
return True