Files
kis_bot/scratch/tick_today_verify.py
Your Name 0ecac7cb95 이번에 들어간 내용
한투 호가 = 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 키 정리도 같이 들어갔습니다. 파일 단위로 나눌 수 없어서입니다.
2026-08-19 22:11:31 +09:00

79 lines
2.0 KiB
Python

#!/usr/bin/env python3
"""오늘 ws_ticks KIS vs kiwoom 검증."""
import sys
sys.path.insert(0, "/home/hoon/kis_bot")
from database import TradeDB
TODAY = "20260818"
T0 = f"{TODAY}090000"
db = TradeDB()
try:
print("=== 오늘 09:00~ (tick_time 기준) ===")
rows = db.conn.execute(
"""
SELECT source, COUNT(*) n, COUNT(DISTINCT code) codes,
MIN(tick_time) tmin, MAX(tick_time) tmax
FROM ws_ticks
WHERE tick_time >= %s
GROUP BY source ORDER BY n DESC
""",
(T0,),
).fetchall()
for r in rows:
print(dict(r))
print("\n=== recv_ts 오늘 (서버 수신 시각) ===")
rows = db.conn.execute(
"""
SELECT source, COUNT(*) n,
MIN(recv_ts) rmin, MAX(recv_ts) rmax
FROM ws_ticks
WHERE recv_ts >= '2026-08-18 09:00:00'
GROUP BY source ORDER BY n DESC
""",
).fetchall()
for r in rows:
print(dict(r))
print("\n=== 11:20~11:24 구간 (tick_time) ===")
rows = db.conn.execute(
"""
SELECT source, COUNT(*) n, MAX(tick_time) tmax, MAX(recv_ts) rmax
FROM ws_ticks
WHERE tick_time >= '20260818112000'
GROUP BY source
""",
).fetchall()
for r in rows:
print(dict(r))
print("\n=== kiwoom: tick_time vs recv_ts 불일치 (오늘) ===")
r = db.conn.execute(
"""
SELECT COUNT(*) n
FROM ws_ticks
WHERE source='kiwoom' AND recv_ts >= '2026-08-18 10:43:00'
AND tick_time < '20260818104300'
""",
).fetchone()
print(f" recv>=10:43 인데 tick_time<10:43: {dict(r)['n']:,}")
print("\n=== 089970 오늘 source별 ===")
rows = db.conn.execute(
"""
SELECT source, COUNT(*) n,
MIN(tick_time) tmin, MAX(tick_time) tmax,
MAX(recv_ts) rmax
FROM ws_ticks
WHERE code='089970' AND tick_time >= %s
GROUP BY source
""",
(T0,),
).fetchall()
for r in rows:
print(dict(r))
finally:
db.close()