candle_count 및 tf_map 수정, OHLCV 데이터 무결성 테스트 추가

This commit is contained in:
2025-12-17 23:52:08 +09:00
parent f780db0567
commit 054d19511d
3 changed files with 170 additions and 1 deletions

View File

@@ -20,6 +20,8 @@ class DataFetchError(Exception):
# OHLCV 데이터 캐시 (TTL 5분)
# ⚠️ 메모리 캐시: 프로그램 재시작 시 자동 초기화됨
# tf_map 수정 후에는 반드시 프로그램을 재시작하여 오염된 캐시를 제거해야 함
_ohlcv_cache = {}
_cache_lock = threading.RLock() # 캐시 동시 접근 보호 (재진입 가능)
CACHE_TTL = 300 # 5분
@@ -73,14 +75,24 @@ def fetch_ohlcv(
_clean_expired_cache()
_buf("debug", f"[CACHE MISS] OHLCV 수집 시작: {symbol} {timeframe}")
# ⚠️ CRITICAL: main.py의 minutes_to_timeframe()이 반환하는 형식과 일치해야 함
# minutes_to_timeframe()은 "1m", "3m", "10m", "60m", "240m" 등을 반환
# pyupbit는 "minute1", "minute240" 형식을 필요로 함
tf_map = {
# 분봉 (Upbit 지원: 1, 3, 5, 10, 15, 30, 60, 240분)
"1m": "minute1",
"3m": "minute3",
"5m": "minute5",
"10m": "minute10", # main.py에서 사용 가능
"15m": "minute15",
"30m": "minute30",
"60m": "minute60", # main.py에서 사용 (1시간봉)
"240m": "minute240", # ⚠️ 핵심 수정: main.py에서 4시간봉으로 사용
# 시간 단위 별칭 (호환성)
"1h": "minute60",
"4h": "minute240",
# 일봉/주봉
"1d": "day",
"1w": "week",
}