Remove SortKey dynamics and setting

This commit is contained in:
Matthias
2024-07-27 16:04:51 +02:00
parent 4a768682ea
commit 8637f4a70d
2 changed files with 5 additions and 42 deletions
@@ -8,7 +8,7 @@ defined period or as coming from ticker
import logging import logging
from datetime import timedelta from datetime import timedelta
from typing import Any, Dict, List, Literal, Optional from typing import Any, Dict, List, Optional
from cachetools import TTLCache from cachetools import TTLCache
@@ -22,8 +22,6 @@ from freqtrade.util import dt_now, format_ms_time
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
SORT_VALUES = ["percentage"]
class PercentChangePairList(IPairList): class PercentChangePairList(IPairList):
is_pairlist_generator = True is_pairlist_generator = True
@@ -40,9 +38,6 @@ class PercentChangePairList(IPairList):
self._stake_currency = self._config["stake_currency"] self._stake_currency = self._config["stake_currency"]
self._number_pairs = self._pairlistconfig["number_assets"] 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._min_value = self._pairlistconfig.get("min_value", 0)
self._max_value = self._pairlistconfig.get("max_value", None) self._max_value = self._pairlistconfig.get("max_value", None)
self._refresh_period = self._pairlistconfig.get("refresh_period", 1800) 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." "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( candle_limit = self._exchange.ohlcv_candle_limit(
self._lookback_timeframe, self._config["candle_type_def"] self._lookback_timeframe, self._config["candle_type_def"]
) )
@@ -111,9 +103,6 @@ class PercentChangePairList(IPairList):
""" """
return not self._use_range return not self._use_range
def _validate_keys(self, key):
return key in SORT_VALUES
def short_desc(self) -> str: def short_desc(self) -> str:
""" """
Short whitelist method description - used for startup-messages Short whitelist method description - used for startup-messages
@@ -133,13 +122,6 @@ class PercentChangePairList(IPairList):
"description": "Number of assets", "description": "Number of assets",
"help": "Number of assets to use from the pairlist", "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": { "min_value": {
"type": "number", "type": "number",
"default": 0, "default": 0,
@@ -210,7 +192,7 @@ class PercentChangePairList(IPairList):
for k, v in tickers.items() for k, v in tickers.items()
if ( if (
self._exchange.get_pair_quote_currency(k) == self._stake_currency 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 and v["symbol"] in _pairlist
) )
] ]
@@ -239,14 +221,14 @@ class PercentChangePairList(IPairList):
# 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) 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: 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( sorted_tickers = sorted(
filtered_tickers, filtered_tickers,
reverse=self._sort_direction == "desc", 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 # Validate whitelist to only have active market pairs
@@ -71,25 +71,6 @@ def test_volume_change_pair_list_init_wrong_refresh_period(mocker, rpl_config):
get_patched_freqtradebot(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): def test_volume_change_pair_list_init_wrong_lookback_period(mocker, rpl_config):
rpl_config["pairlists"] = [ rpl_config["pairlists"] = [
{ {