From 961eaef2a5b7b6f5133e752700035f1e99fee5b5 Mon Sep 17 00:00:00 2001 From: ABS <53243996+ABSllk@users.noreply.github.com> Date: Tue, 24 Feb 2026 15:19:09 +0800 Subject: [PATCH 1/2] fix: align pairlock backtesting expiration condition with live/dry run --- freqtrade/persistence/pairlock_middleware.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/persistence/pairlock_middleware.py b/freqtrade/persistence/pairlock_middleware.py index 02642c463..94544928d 100644 --- a/freqtrade/persistence/pairlock_middleware.py +++ b/freqtrade/persistence/pairlock_middleware.py @@ -86,7 +86,7 @@ class PairLocks: lock for lock in PairLocks.locks if ( - lock.lock_end_time >= now + lock.lock_end_time > now and lock.active is True and (pair is None or lock.pair == pair) and (side is None or lock.side == "*" or lock.side == side) From 3a775a5b65dacca37bfd286d1d2223c39c1ec7b3 Mon Sep 17 00:00:00 2001 From: ABS <53243996+ABSllk@users.noreply.github.com> Date: Thu, 26 Feb 2026 14:23:42 +0800 Subject: [PATCH 2/2] test: align backtest_pricecontours expected trades with correctly fixed pairlock expiry duration --- tests/optimize/test_backtesting.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/tests/optimize/test_backtesting.py b/tests/optimize/test_backtesting.py index 270c5b33d..0a8d2fb45 100644 --- a/tests/optimize/test_backtesting.py +++ b/tests/optimize/test_backtesting.py @@ -1346,11 +1346,11 @@ def test_backtest_pricecontours_protections(default_conf, fee, mocker, testdatad mocker.patch(f"{EXMS}.get_min_pair_stake_amount", return_value=0.00001) mocker.patch(f"{EXMS}.get_max_pair_stake_amount", return_value=float("inf")) tests = [ - ["sine", 9], - ["raise", 10], + ["sine", 10], + ["raise", 11], ["lower", 0], - ["sine", 9], - ["raise", 10], + ["sine", 10], + ["raise", 11], ] backtesting = Backtesting(default_conf) backtesting._set_strategy(backtesting.strategylist[0]) @@ -1380,11 +1380,11 @@ def test_backtest_pricecontours_protections(default_conf, fee, mocker, testdatad (None, "lower", 0), (None, "sine", 35), (None, "raise", 19), - ([{"method": "CooldownPeriod", "stop_duration": 3}], "sine", 9), - ([{"method": "CooldownPeriod", "stop_duration": 3}], "raise", 10), + ([{"method": "CooldownPeriod", "stop_duration": 3}], "sine", 10), + ([{"method": "CooldownPeriod", "stop_duration": 3}], "raise", 11), ([{"method": "CooldownPeriod", "stop_duration": 3}], "lower", 0), - ([{"method": "CooldownPeriod", "stop_duration": 3}], "sine", 9), - ([{"method": "CooldownPeriod", "stop_duration": 3}], "raise", 10), + ([{"method": "CooldownPeriod", "stop_duration": 3}], "sine", 10), + ([{"method": "CooldownPeriod", "stop_duration": 3}], "raise", 11), ], ) def test_backtest_pricecontours(