diff --git a/src/multi_swarm/data/ohlcv_loader.py b/src/multi_swarm/data/ohlcv_loader.py index d79d083..c6c084a 100644 --- a/src/multi_swarm/data/ohlcv_loader.py +++ b/src/multi_swarm/data/ohlcv_loader.py @@ -59,6 +59,8 @@ class OHLCVLoader: if not rows: break all_rows.extend(rows) + if len(rows) < limit: + break last_ts = rows[-1][0] new_since = last_ts + timeframe_ms if new_since <= since: diff --git a/tests/unit/test_ohlcv_loader.py b/tests/unit/test_ohlcv_loader.py index ea8a102..4a80425 100644 --- a/tests/unit/test_ohlcv_loader.py +++ b/tests/unit/test_ohlcv_loader.py @@ -55,7 +55,7 @@ def test_loader_uses_cache_on_second_call(tmp_path: Path, mocker, sample_ohlcv_r df1 = loader.load(req) df2 = loader.load(req) - assert fake_exchange.fetch_ohlcv.call_count == 2 # paginazione interna, non caching + assert fake_exchange.fetch_ohlcv.call_count == 1 # 48 < limit, single batch pd.testing.assert_frame_equal(df1, df2) # Seconda chiamata legge da cache, non chiama exchange fake_exchange.fetch_ohlcv.reset_mock()