Add cache for expanded_blacklist() in PairListManager in backtest mode

This commit is contained in:
mrpabloyeah
2025-09-12 13:01:50 +02:00
parent 55201b6224
commit 5f558137d3
+11 -2
View File
@@ -5,7 +5,7 @@ PairList manager class
import logging import logging
from functools import partial from functools import partial
from cachetools import TTLCache, cached from cachetools import LRUCache, TTLCache, cached
from freqtrade.constants import Config, ListPairsWithTimeframes from freqtrade.constants import Config, ListPairsWithTimeframes
from freqtrade.data.dataprovider import DataProvider from freqtrade.data.dataprovider import DataProvider
@@ -56,6 +56,7 @@ class PairListManager(LoggingMixin):
) )
self._check_backtest() self._check_backtest()
self._not_expiring_cache: LRUCache = LRUCache(maxsize=1)
refresh_period = config.get("pairlist_refresh_period", 3600) refresh_period = config.get("pairlist_refresh_period", 3600)
LoggingMixin.__init__(self, logger, refresh_period) LoggingMixin.__init__(self, logger, refresh_period)
@@ -109,7 +110,15 @@ class PairListManager(LoggingMixin):
@property @property
def expanded_blacklist(self) -> list[str]: def expanded_blacklist(self) -> list[str]:
"""The expanded blacklist (including wildcard expansion)""" """The expanded blacklist (including wildcard expansion)"""
return expand_pairlist(self._blacklist, self._exchange.get_markets().keys()) eblacklist = self._not_expiring_cache.get("eblacklist")
if not eblacklist:
eblacklist = expand_pairlist(self._blacklist, self._exchange.get_markets().keys())
if self._config["runmode"] in (RunMode.BACKTEST, RunMode.HYPEROPT):
self._not_expiring_cache["eblacklist"] = eblacklist.copy()
return eblacklist
@property @property
def name_list(self) -> list[str]: def name_list(self) -> list[str]: