Expire cached pairs in age-filter once per day

This commit is contained in:
Matthias 2021-09-14 06:30:18 +02:00
parent 8afb3c4b70
commit c9ba52d732

View File

@ -11,6 +11,7 @@ from pandas import DataFrame
from freqtrade.exceptions import OperationalException
from freqtrade.misc import plural
from freqtrade.plugins.pairlist.IPairList import IPairList
from freqtrade.configuration import PeriodicCache
logger = logging.getLogger(__name__)
@ -25,6 +26,7 @@ class AgeFilter(IPairList):
# Checked symbols cache (dictionary of ticker symbol => timestamp)
self._symbolsChecked: Dict[str, int] = {}
self._too_young_pairs = PeriodicCache(maxsize=1000, ttl=86_400)
self._min_days_listed = pairlistconfig.get('min_days_listed', 10)
self._max_days_listed = pairlistconfig.get('max_days_listed', None)
@ -69,10 +71,12 @@ class AgeFilter(IPairList):
:param tickers: Tickers (from exchange.get_tickers()). May be cached.
:return: new allowlist
"""
needed_pairs = [(p, '1d') for p in pairlist if p not in self._symbolsChecked]
needed_pairs = [
(p, '1d') for p in pairlist
if p not in self._symbolsChecked and p not in self._too_young_pairs]
if not needed_pairs:
return pairlist
logger.info(f"needed pairs {needed_pairs}")
since_days = -(
self._max_days_listed if self._max_days_listed else self._min_days_listed
) - 1
@ -118,5 +122,6 @@ class AgeFilter(IPairList):
" or more than "
f"{self._max_days_listed} {plural(self._max_days_listed, 'day')}"
) if self._max_days_listed else ''), logger.info)
self._too_young_pairs[pair] = arrow.utcnow().int_timestamp * 1000
return False
return False