修复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 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]: def _okx_usdt_swap_volume_by_base() -> dict[str, float]:
""" """
OKX 网页24小时成交额一致走官方 /market/tickers?instType=SWAP volCcy24hUSDT OKX USDT 永续全市场 24h 成交额(USDT) App24小时成交额一致
ccxt quoteVolume OKX 上常不可靠会导致 ZEC 等币种排名严重偏低 /market/tickers?instType=SWAP成交额 = volCcy24h(基础币) × last
""" """
by_base: dict[str, float] = {} by_base: dict[str, float] = {}
try: try:
@@ -3189,7 +3206,7 @@ def _okx_usdt_swap_volume_by_base() -> dict[str, float]:
base = parts[0].strip() base = parts[0].strip()
if not base: if not base:
continue continue
qv = _safe_float(row.get("volCcy24h")) qv = _okx_swap_turnover_usdt(row)
if qv is None or qv <= 0: if qv is None or qv <= 0:
continue continue
by_base[base] = max(by_base.get(base, 0), float(qv)) 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: if not base:
continue continue
info = (t or {}).get("info") if isinstance((t or {}).get("info"), dict) else {} 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: if qv is None:
qv = _safe_float((t or {}).get("quoteVolume")) qv = _safe_float((t or {}).get("quoteVolume"))
if qv is None or qv <= 0: 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): def _daily_volume_rank(symbol):
""" """
返回(symbol_rank, total_count)OKX USDT 永续 24h 成交额(USDT) 在全市场币种中的排名本月 返回(symbol_rank, total_count)OKX USDT 永续 24h 成交额(USDT) 在全市场币种中的排名本月
数据 OKX App24小时成交额同源字段 volCcy24h 成交额 = volCcy24h(基础币) × last OKX App24小时成交额一致
""" """
sym_norm = normalize_symbol_input(symbol) sym_norm = normalize_symbol_input(symbol)
target_base = journal_coin_from_symbol(sym_norm) target_base = journal_coin_from_symbol(sym_norm)
now_ts = time.time() now_ts = time.time()
cache_ver = 3 cache_ver = 4
cached_ok = ( cached_ok = (
LIQUIDITY_RANK_CACHE.get("version") == cache_ver LIQUIDITY_RANK_CACHE.get("version") == cache_ver
and LIQUIDITY_RANK_CACHE["updated_at"] and LIQUIDITY_RANK_CACHE["updated_at"]