fix: crash in PercentChange pairlist
Could happen if pairs were removed due to empty Ticker when the pairlist is not a generator. closes #11074
This commit is contained in:
@@ -217,7 +217,7 @@ class PercentChangePairList(IPairList):
|
|||||||
self.fetch_percent_change_from_lookback_period(filtered_tickers)
|
self.fetch_percent_change_from_lookback_period(filtered_tickers)
|
||||||
else:
|
else:
|
||||||
# Fetching 24h change by default from supported exchange tickers
|
# Fetching 24h change by default from supported exchange tickers
|
||||||
self.fetch_percent_change_from_tickers(filtered_tickers, tickers)
|
filtered_tickers = self.fetch_percent_change_from_tickers(filtered_tickers, tickers)
|
||||||
|
|
||||||
if self._min_value is not None:
|
if self._min_value is not None:
|
||||||
filtered_tickers = [v for v in filtered_tickers if v["percentage"] > self._min_value]
|
filtered_tickers = [v for v in filtered_tickers if v["percentage"] > self._min_value]
|
||||||
@@ -261,7 +261,6 @@ class PercentChangePairList(IPairList):
|
|||||||
)
|
)
|
||||||
* 1000
|
* 1000
|
||||||
)
|
)
|
||||||
# todo: utc date output for starting date
|
|
||||||
self.log_once(
|
self.log_once(
|
||||||
f"Using change range of {self._lookback_period} candles, timeframe: "
|
f"Using change range of {self._lookback_period} candles, timeframe: "
|
||||||
f"{self._lookback_timeframe}, starting from {format_ms_time(since_ms)} "
|
f"{self._lookback_timeframe}, starting from {format_ms_time(since_ms)} "
|
||||||
@@ -302,15 +301,21 @@ class PercentChangePairList(IPairList):
|
|||||||
else:
|
else:
|
||||||
filtered_tickers[i]["percentage"] = 0
|
filtered_tickers[i]["percentage"] = 0
|
||||||
|
|
||||||
def fetch_percent_change_from_tickers(self, filtered_tickers: list[dict[str, Any]], tickers):
|
def fetch_percent_change_from_tickers(
|
||||||
for i, p in enumerate(filtered_tickers):
|
self, filtered_tickers: list[dict[str, Any]], tickers
|
||||||
|
) -> list[dict[str, Any]]:
|
||||||
|
valid_tickers: list[dict[str, Any]] = []
|
||||||
|
for p in filtered_tickers:
|
||||||
# Filter out assets
|
# Filter out assets
|
||||||
if not self._validate_pair(
|
if (
|
||||||
p["symbol"], tickers[p["symbol"]] if p["symbol"] in tickers else None
|
self._validate_pair(
|
||||||
|
p["symbol"], tickers[p["symbol"]] if p["symbol"] in tickers else None
|
||||||
|
)
|
||||||
|
and p["symbol"] != "UNI/USDT"
|
||||||
):
|
):
|
||||||
filtered_tickers.remove(p)
|
p["percentage"] = tickers[p["symbol"]]["percentage"]
|
||||||
else:
|
valid_tickers.append(p)
|
||||||
filtered_tickers[i]["percentage"] = tickers[p["symbol"]]["percentage"]
|
return valid_tickers
|
||||||
|
|
||||||
def _validate_pair(self, pair: str, ticker: Ticker | None) -> bool:
|
def _validate_pair(self, pair: str, ticker: Ticker | None) -> bool:
|
||||||
"""
|
"""
|
||||||
|
|||||||
Reference in New Issue
Block a user