From 8637f4a70d835abd3fdf9f3beda7784d3ddc5fbe Mon Sep 17 00:00:00 2001 From: Matthias Date: Sat, 27 Jul 2024 16:04:51 +0200 Subject: [PATCH] Remove SortKey dynamics and setting --- .../plugins/pairlist/PercentChangePairList.py | 28 ++++--------------- tests/plugins/test_percentchangepairlist.py | 19 ------------- 2 files changed, 5 insertions(+), 42 deletions(-) diff --git a/freqtrade/plugins/pairlist/PercentChangePairList.py b/freqtrade/plugins/pairlist/PercentChangePairList.py index b9ffa7e45..14b08b2b7 100644 --- a/freqtrade/plugins/pairlist/PercentChangePairList.py +++ b/freqtrade/plugins/pairlist/PercentChangePairList.py @@ -8,7 +8,7 @@ defined period or as coming from ticker import logging from datetime import timedelta -from typing import Any, Dict, List, Literal, Optional +from typing import Any, Dict, List, Optional from cachetools import TTLCache @@ -22,8 +22,6 @@ from freqtrade.util import dt_now, format_ms_time logger = logging.getLogger(__name__) -SORT_VALUES = ["percentage"] - class PercentChangePairList(IPairList): is_pairlist_generator = True @@ -40,9 +38,6 @@ class PercentChangePairList(IPairList): self._stake_currency = self._config["stake_currency"] self._number_pairs = self._pairlistconfig["number_assets"] - self._sort_key: Literal["rolling_volume_change"] = self._pairlistconfig.get( - "sort_key", "rolling_volume_change" - ) self._min_value = self._pairlistconfig.get("min_value", 0) self._max_value = self._pairlistconfig.get("max_value", None) self._refresh_period = self._pairlistconfig.get("refresh_period", 1800) @@ -89,9 +84,6 @@ class PercentChangePairList(IPairList): "or switch to using candles. and restart the bot." ) - if not self._validate_keys(self._sort_key): - raise OperationalException(f"key {self._sort_key} not in {SORT_VALUES}") - candle_limit = self._exchange.ohlcv_candle_limit( self._lookback_timeframe, self._config["candle_type_def"] ) @@ -111,9 +103,6 @@ class PercentChangePairList(IPairList): """ return not self._use_range - def _validate_keys(self, key): - return key in SORT_VALUES - def short_desc(self) -> str: """ Short whitelist method description - used for startup-messages @@ -133,13 +122,6 @@ class PercentChangePairList(IPairList): "description": "Number of assets", "help": "Number of assets to use from the pairlist", }, - "sort_key": { - "type": "option", - "default": "rolling_volume_change", - "options": SORT_VALUES, - "description": "Sort key", - "help": "Sort key to use for sorting the pairlist.", - }, "min_value": { "type": "number", "default": 0, @@ -210,7 +192,7 @@ class PercentChangePairList(IPairList): for k, v in tickers.items() if ( self._exchange.get_pair_quote_currency(k) == self._stake_currency - and (self._use_range or v.get(self._sort_key) is not None) + and (self._use_range or v.get("percentage") is not None) and v["symbol"] in _pairlist ) ] @@ -239,14 +221,14 @@ class PercentChangePairList(IPairList): # Fetching 24h change by default from supported exchange tickers self.fetch_percent_change_from_tickers(filtered_tickers, tickers) - filtered_tickers = [v for v in filtered_tickers if v[self._sort_key] > self._min_value] + filtered_tickers = [v for v in filtered_tickers if v["percentage"] > self._min_value] if self._max_value is not None: - filtered_tickers = [v for v in filtered_tickers if v[self._sort_key] < self._max_value] + filtered_tickers = [v for v in filtered_tickers if v["percentage"] < self._max_value] sorted_tickers = sorted( filtered_tickers, reverse=self._sort_direction == "desc", - key=lambda t: t[self._sort_key], + key=lambda t: t["percentage"], ) # Validate whitelist to only have active market pairs diff --git a/tests/plugins/test_percentchangepairlist.py b/tests/plugins/test_percentchangepairlist.py index 0a7960d22..df165cf98 100644 --- a/tests/plugins/test_percentchangepairlist.py +++ b/tests/plugins/test_percentchangepairlist.py @@ -71,25 +71,6 @@ def test_volume_change_pair_list_init_wrong_refresh_period(mocker, rpl_config): get_patched_freqtradebot(mocker, rpl_config) -def test_volume_change_pair_list_init_invalid_sort_key(mocker, rpl_config): - rpl_config["pairlists"] = [ - { - "method": "PercentChangePairList", - "number_assets": 2, - "sort_key": "wrong_key", - "min_value": 0, - "refresh_period": 86400, - "lookback_days": 1, - } - ] - - with pytest.raises( - OperationalException, - match=r"key wrong_key not in \['percentage'\]", - ): - get_patched_freqtradebot(mocker, rpl_config) - - def test_volume_change_pair_list_init_wrong_lookback_period(mocker, rpl_config): rpl_config["pairlists"] = [ {