fix(hub): 修复行情区 K 线 Gate 分页与图表 unexpected base
Gate OHLCV 分页在接近当前时间时停止并容错 from>to;分页失败时用 limit 兜底。chart.js 为 priceFormat 增加整数 base,setData 失败时回退默认精度。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -163,6 +163,34 @@ class TestHubOhlcvLib(unittest.TestCase):
|
||||
self.assertTrue(bars_spacing_matches_timeframe(bars, "12h"))
|
||||
self.assertEqual(ex.calls[0]["timeframe"], "1h")
|
||||
|
||||
def test_pagination_stops_when_next_since_reaches_now(self):
|
||||
"""Gate 等:分页 since 不得越过当前时间,避免 from>to。"""
|
||||
from hub_ohlcv_lib import TIMEFRAME_MS
|
||||
|
||||
step = TIMEFRAME_MS["1d"]
|
||||
now_ms = int(__import__("time").time() * 1000)
|
||||
# 最后一页最后一根 K 的 next_since 将 >= now_ms,应停止不再请求
|
||||
last_open = ((now_ms // step) - 2) * step
|
||||
page = [
|
||||
[last_open - step, 1.0, 1.1, 0.9, 1.0, 10.0],
|
||||
[last_open, 1.1, 1.2, 1.0, 1.1, 11.0],
|
||||
]
|
||||
ex = _FakeExchange([page])
|
||||
|
||||
out = fetch_ohlcv_for_hub(
|
||||
symbol="ONDO/USDT",
|
||||
timeframe="1d",
|
||||
since_ms=last_open - step * 5,
|
||||
limit=10,
|
||||
normalize_symbol_input=lambda s: str(s).strip().upper(),
|
||||
normalize_exchange_symbol=lambda s: f"{s}:USDT" if ":" not in s else s,
|
||||
ensure_markets_loaded=lambda: None,
|
||||
exchange=ex,
|
||||
)
|
||||
self.assertTrue(out.get("ok"))
|
||||
self.assertGreaterEqual(len(out.get("bars") or []), 2)
|
||||
self.assertLessEqual(len(ex.calls), 4)
|
||||
|
||||
def test_aggregate_ohlcv_bars_buckets(self):
|
||||
from hub_ohlcv_lib import TIMEFRAME_MS
|
||||
|
||||
|
||||
Reference in New Issue
Block a user