修复okx

This commit is contained in:
dekun
2026-05-24 10:29:37 +08:00
parent 134173be24
commit 1a21295646
+26 -6
View File
@@ -3167,10 +3167,27 @@ def _status_by_ema55(symbol, timeframe):
return "横盘", None, None
def _okx_swap_turnover_usdt(ticker_row: dict) -> float | None:
"""
OKX 永续 24h 成交额(USDT)
官方文档SWAP volCcy24h 单位是基础币数量( ZEC)不是 USDT
网页24小时成交额 volCcy24h × last
"""
if not isinstance(ticker_row, dict):
return None
base_vol = _safe_float(ticker_row.get("volCcy24h"))
if base_vol is None or base_vol <= 0:
return None
last = _safe_float(ticker_row.get("last"))
if last is None or last <= 0:
return None
return float(base_vol * last)
def _okx_usdt_swap_volume_by_base() -> dict[str, float]:
"""
OKX 网页24小时成交额一致走官方 /market/tickers?instType=SWAP volCcy24hUSDT
ccxt quoteVolume OKX 上常不可靠会导致 ZEC 等币种排名严重偏低
OKX USDT 永续全市场 24h 成交额(USDT) App24小时成交额一致
/market/tickers?instType=SWAP成交额 = volCcy24h(基础币) × last
"""
by_base: dict[str, float] = {}
try:
@@ -3189,7 +3206,7 @@ def _okx_usdt_swap_volume_by_base() -> dict[str, float]:
base = parts[0].strip()
if not base:
continue
qv = _safe_float(row.get("volCcy24h"))
qv = _okx_swap_turnover_usdt(row)
if qv is None or qv <= 0:
continue
by_base[base] = max(by_base.get(base, 0), float(qv))
@@ -3236,7 +3253,10 @@ def _okx_usdt_swap_volume_by_base() -> dict[str, float]:
if not base:
continue
info = (t or {}).get("info") if isinstance((t or {}).get("info"), dict) else {}
qv = _safe_float(info.get("volCcy24h"))
row = dict(info)
if row.get("last") is None:
row["last"] = (t or {}).get("last")
qv = _okx_swap_turnover_usdt(row)
if qv is None:
qv = _safe_float((t or {}).get("quoteVolume"))
if qv is None or qv <= 0:
@@ -3252,12 +3272,12 @@ def _okx_usdt_swap_volume_by_base() -> dict[str, float]:
def _daily_volume_rank(symbol):
"""
返回(symbol_rank, total_count)OKX USDT 永续 24h 成交额(USDT) 在全市场币种中的排名本月
数据 OKX App24小时成交额同源字段 volCcy24h
成交额 = volCcy24h(基础币) × last OKX App24小时成交额一致
"""
sym_norm = normalize_symbol_input(symbol)
target_base = journal_coin_from_symbol(sym_norm)
now_ts = time.time()
cache_ver = 3
cache_ver = 4
cached_ok = (
LIQUIDITY_RANK_CACHE.get("version") == cache_ver
and LIQUIDITY_RANK_CACHE["updated_at"]