45 lines
1014 B
Python
45 lines
1014 B
Python
"""K 线周期常量与每周期 bar 数 / 缓存 TTL。"""
|
|
|
|
CHART_INTERVALS: tuple[str, ...] = ("5m", "15m", "30m", "1h", "4h", "1d", "1w")
|
|
|
|
LONG_INTERVALS: frozenset[str] = frozenset({"1d", "1w"})
|
|
|
|
# 1d 及以上 500 根;以下 1000 根
|
|
INTERVAL_LIMITS: dict[str, int] = {
|
|
"5m": 1000,
|
|
"15m": 1000,
|
|
"30m": 1000,
|
|
"1h": 1000,
|
|
"4h": 1000,
|
|
"1d": 500,
|
|
"1w": 500,
|
|
}
|
|
|
|
# 预取 / 本地 freshness(分钟)
|
|
INTERVAL_CACHE_MINUTES: dict[str, int] = {
|
|
"5m": 5,
|
|
"15m": 15,
|
|
"30m": 15,
|
|
"1h": 30,
|
|
"4h": 30,
|
|
"1d": 60,
|
|
"1w": 60,
|
|
}
|
|
|
|
|
|
def validate_interval(interval: str) -> str:
|
|
iv = interval.lower().strip()
|
|
if iv not in CHART_INTERVALS:
|
|
raise ValueError(f"unsupported interval: {interval}")
|
|
return iv
|
|
|
|
|
|
def limit_for_interval(interval: str) -> int:
|
|
iv = validate_interval(interval)
|
|
return INTERVAL_LIMITS[iv]
|
|
|
|
|
|
def cache_minutes_for_interval(interval: str) -> int:
|
|
iv = validate_interval(interval)
|
|
return INTERVAL_CACHE_MINUTES[iv]
|