From 1a3c913176069de842bf394a8e158d990e44ea9d Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 8 Aug 2025 06:10:32 +0200 Subject: [PATCH] feat(bitget): Align bitget candle limits --- freqtrade/exchange/bitget.py | 2 +- tests/exchange/test_bitget.py | 9 +++++---- tests/exchange_online/test_ccxt_compat.py | 8 ++++---- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/freqtrade/exchange/bitget.py b/freqtrade/exchange/bitget.py index 5b443805d..28abbb10e 100644 --- a/freqtrade/exchange/bitget.py +++ b/freqtrade/exchange/bitget.py @@ -57,7 +57,7 @@ class Bitget(Exchange): timeframe_map = self._api.options["fetchOHLCV"]["maxRecentDaysPerTimeframe"] days = timeframe_map.get(timeframe, 30) - if candle_type in (CandleType.FUTURES, CandleType.SPOT) and ( + if candle_type in (CandleType.FUTURES, CandleType.SPOT, CandleType.MARK) and ( not since_ms or dt_ts(dt_now() - timedelta(days=days)) < since_ms ): return 1000 diff --git a/tests/exchange/test_bitget.py b/tests/exchange/test_bitget.py index cd3c774dd..f6ec2970a 100644 --- a/tests/exchange/test_bitget.py +++ b/tests/exchange/test_bitget.py @@ -76,6 +76,7 @@ def test_fetch_stoploss_order_bitget_exceptions(default_conf_usdt, mocker): def test_bitget_ohlcv_candle_limit(mocker, default_conf_usdt): + # This test is also a live test - so we're sure our limits are correct. api_mock = MagicMock() api_mock.options = { "fetchOHLCV": { @@ -97,24 +98,24 @@ def test_bitget_ohlcv_candle_limit(mocker, default_conf_usdt): for timeframe in timeframes: assert exch.ohlcv_candle_limit(timeframe, CandleType.SPOT) == 1000 assert exch.ohlcv_candle_limit(timeframe, CandleType.FUTURES) == 1000 - assert exch.ohlcv_candle_limit(timeframe, CandleType.MARK) == 200 + assert exch.ohlcv_candle_limit(timeframe, CandleType.MARK) == 1000 assert exch.ohlcv_candle_limit(timeframe, CandleType.FUNDING_RATE) == 200 start_time = dt_ts(dt_now() - timedelta(days=17)) assert exch.ohlcv_candle_limit(timeframe, CandleType.SPOT, start_time) == 1000 assert exch.ohlcv_candle_limit(timeframe, CandleType.FUTURES, start_time) == 1000 - assert exch.ohlcv_candle_limit(timeframe, CandleType.MARK, start_time) == 200 + assert exch.ohlcv_candle_limit(timeframe, CandleType.MARK, start_time) == 1000 assert exch.ohlcv_candle_limit(timeframe, CandleType.FUNDING_RATE, start_time) == 200 start_time = dt_ts(dt_now() - timedelta(days=48)) length = 200 if timeframe in ("1m", "5m") else 1000 assert exch.ohlcv_candle_limit(timeframe, CandleType.SPOT, start_time) == length assert exch.ohlcv_candle_limit(timeframe, CandleType.FUTURES, start_time) == length - assert exch.ohlcv_candle_limit(timeframe, CandleType.MARK, start_time) == 200 + assert exch.ohlcv_candle_limit(timeframe, CandleType.MARK, start_time) == length assert exch.ohlcv_candle_limit(timeframe, CandleType.FUNDING_RATE, start_time) == 200 start_time = dt_ts(dt_now() - timedelta(days=61)) length = 200 assert exch.ohlcv_candle_limit(timeframe, CandleType.SPOT, start_time) == length assert exch.ohlcv_candle_limit(timeframe, CandleType.FUTURES, start_time) == length - assert exch.ohlcv_candle_limit(timeframe, CandleType.MARK, start_time) == 200 + assert exch.ohlcv_candle_limit(timeframe, CandleType.MARK, start_time) == length assert exch.ohlcv_candle_limit(timeframe, CandleType.FUNDING_RATE, start_time) == 200 diff --git a/tests/exchange_online/test_ccxt_compat.py b/tests/exchange_online/test_ccxt_compat.py index 2e8028ab7..c71e4809b 100644 --- a/tests/exchange_online/test_ccxt_compat.py +++ b/tests/exchange_online/test_ccxt_compat.py @@ -541,24 +541,24 @@ class TestCCXTExchange: for timeframe in timeframes: assert exch.ohlcv_candle_limit(timeframe, CandleType.SPOT) == 1000 assert exch.ohlcv_candle_limit(timeframe, CandleType.FUTURES) == 1000 - assert exch.ohlcv_candle_limit(timeframe, CandleType.MARK) == 200 + assert exch.ohlcv_candle_limit(timeframe, CandleType.MARK) == 1000 assert exch.ohlcv_candle_limit(timeframe, CandleType.FUNDING_RATE) == 200 start_time = dt_ts(dt_now() - timedelta(days=17)) assert exch.ohlcv_candle_limit(timeframe, CandleType.SPOT, start_time) == 1000 assert exch.ohlcv_candle_limit(timeframe, CandleType.FUTURES, start_time) == 1000 - assert exch.ohlcv_candle_limit(timeframe, CandleType.MARK, start_time) == 200 + assert exch.ohlcv_candle_limit(timeframe, CandleType.MARK, start_time) == 1000 assert exch.ohlcv_candle_limit(timeframe, CandleType.FUNDING_RATE, start_time) == 200 start_time = dt_ts(dt_now() - timedelta(days=48)) length = 200 if timeframe in ("1m", "5m") else 1000 assert exch.ohlcv_candle_limit(timeframe, CandleType.SPOT, start_time) == length assert exch.ohlcv_candle_limit(timeframe, CandleType.FUTURES, start_time) == length - assert exch.ohlcv_candle_limit(timeframe, CandleType.MARK, start_time) == 200 + assert exch.ohlcv_candle_limit(timeframe, CandleType.MARK, start_time) == length assert exch.ohlcv_candle_limit(timeframe, CandleType.FUNDING_RATE, start_time) == 200 start_time = dt_ts(dt_now() - timedelta(days=61)) length = 200 assert exch.ohlcv_candle_limit(timeframe, CandleType.SPOT, start_time) == length assert exch.ohlcv_candle_limit(timeframe, CandleType.FUTURES, start_time) == length - assert exch.ohlcv_candle_limit(timeframe, CandleType.MARK, start_time) == 200 + assert exch.ohlcv_candle_limit(timeframe, CandleType.MARK, start_time) == length assert exch.ohlcv_candle_limit(timeframe, CandleType.FUNDING_RATE, start_time) == 200