feat: limit downloadable funding rates to funding rate interval

Limit using wrong funding-rate timeframes, which can cause wrong
information and assumptions in the strategy

Part of #12206
This commit is contained in:
Matthias
2025-09-06 09:16:03 +02:00
parent 25fd63c6d0
commit 246891a8f6
2 changed files with 10 additions and 5 deletions

View File

@@ -2566,13 +2566,18 @@ class Exchange:
input_coroutines: list[Coroutine[Any, Any, OHLCVResponse]] = []
cached_pairs = []
for pair, timeframe, candle_type in set(pair_list):
if timeframe not in self.timeframes and candle_type in (
invalid_funding = (
candle_type == CandleType.FUNDING_RATE
and timeframe != self.get_option("funding_fee_timeframe")
)
invalid_timeframe = timeframe not in self.timeframes and candle_type in (
CandleType.SPOT,
CandleType.FUTURES,
):
)
if invalid_timeframe or invalid_funding:
logger.warning(
f"Cannot download ({pair}, {timeframe}) combination as this timeframe is "
f"not available on {self.name}. Available timeframes are "
f"Cannot download ({pair}, {timeframe}, {candle_type}) combination as this "
f"timeframe is not available on {self.name}. Available timeframes are "
f"{', '.join(self.timeframes)}."
)
continue

View File

@@ -2335,7 +2335,7 @@ def test_refresh_latest_ohlcv(mocker, default_conf_usdt, caplog, candle_type) ->
if candle_type != CandleType.MARK:
assert not res
assert len(res) == 0
assert log_has_re(r"Cannot download \(IOTA\/USDT, 3m\).*", caplog)
assert log_has_re(r"Cannot download \(IOTA\/USDT, 3m, \S+\).*", caplog)
else:
assert len(res) == 1