mirror of
https://github.com/freqtrade/freqtrade.git
synced 2025-12-15 04:11:14 +00:00
Replaced unsafe loop with a list comprehension & added docstring in refresh_pairlist()
This commit is contained in:
@@ -134,7 +134,19 @@ class PairListManager(LoggingMixin):
|
|||||||
return self._exchange.get_tickers()
|
return self._exchange.get_tickers()
|
||||||
|
|
||||||
def refresh_pairlist(self, only_first: bool = False, pairs: list[str] | None = None) -> None:
|
def refresh_pairlist(self, only_first: bool = False, pairs: list[str] | None = None) -> None:
|
||||||
"""Run pairlist through all configured Pairlist Handlers."""
|
"""
|
||||||
|
Run pairlist through all configured Pairlist Handlers.
|
||||||
|
|
||||||
|
:param only_first: If True, only run the first PairList handler (the generator)
|
||||||
|
and skip all subsequent filters. Used during backtesting startup to ensure
|
||||||
|
historic data is loaded for the complete universe of pairs that the
|
||||||
|
generator can produce (even if later filters would reduce the list size).
|
||||||
|
Prevents missing data when a filter returns a variable number of pairs
|
||||||
|
across refresh cycles.
|
||||||
|
:param pairs: Optional list of pairs to intersect with the generated pairlist.
|
||||||
|
Only pairs present both in the generated list and this parameter are kept.
|
||||||
|
Used in backtesting to filter out pairs with no available data.
|
||||||
|
"""
|
||||||
# Tickers should be cached to avoid calling the exchange on each call.
|
# Tickers should be cached to avoid calling the exchange on each call.
|
||||||
tickers: dict = {}
|
tickers: dict = {}
|
||||||
if self._tickers_needed:
|
if self._tickers_needed:
|
||||||
@@ -143,10 +155,9 @@ class PairListManager(LoggingMixin):
|
|||||||
# Generate the pairlist with first Pairlist Handler in the chain
|
# Generate the pairlist with first Pairlist Handler in the chain
|
||||||
pairlist = self._pairlist_handlers[0].gen_pairlist(tickers)
|
pairlist = self._pairlist_handlers[0].gen_pairlist(tickers)
|
||||||
|
|
||||||
if pairs:
|
# Optional intersection with an explicit list of pairs (used in backtesting)
|
||||||
for pair in pairlist:
|
if pairs is not None:
|
||||||
if pair not in pairs:
|
pairlist = [p for p in pairlist if p in pairs]
|
||||||
pairlist.remove(pair)
|
|
||||||
|
|
||||||
if not only_first:
|
if not only_first:
|
||||||
# Process all Pairlist Handlers in the chain
|
# Process all Pairlist Handlers in the chain
|
||||||
|
|||||||
Reference in New Issue
Block a user