diff --git a/config_full.json.example b/config_full.json.example index da4de5cec..551d39452 100644 --- a/config_full.json.example +++ b/config_full.json.example @@ -42,7 +42,8 @@ "whitelist": { "method": "VolumePairList", "config": { - "number_assets": 20 + "number_assets": 20, + "sort_key": "quoteVolume" } }, "exchange": { diff --git a/freqtrade/pairlist/VolumePairList.py b/freqtrade/pairlist/VolumePairList.py index f45c57676..aec35a727 100644 --- a/freqtrade/pairlist/VolumePairList.py +++ b/freqtrade/pairlist/VolumePairList.py @@ -12,6 +12,8 @@ from freqtrade.pairlist.StaticPairList import StaticPairList from freqtrade import OperationalException logger = logging.getLogger(__name__) +SORT_VALUES = ['askVolume', 'bidVolume', 'quoteVolume'] + class VolumePairList(StaticPairList): @@ -22,13 +24,21 @@ class VolumePairList(StaticPairList): self._whitelist = self._config['exchange']['pair_whitelist'] self._blacklist = self._config['exchange'].get('pair_blacklist', []) self._number_pairs = self._whitelistconf['number_assets'] + self._sort_key = self._whitelistconf.get('sort_key', 'quoteVolume') + if not self._freqtrade.exchange.exchange_has('fetchTickers'): raise OperationalException( 'Exchange does not support dynamic whitelist.' 'Please edit your config and restart the bot' ) + if not self.validate_keys(self._sort_key): + raise OperationalException( + f'key {self._sort_key} not in {SORT_VALUES}') # self.refresh_whitelist() + def validate_keys(self, key): + return key in SORT_VALUES + def short_desc(self) -> str: """ Short whitelist method description - used for startup-messages @@ -41,7 +51,7 @@ class VolumePairList(StaticPairList): Refreshes whitelist and assigns it to self._whitelist """ # Generate dynamic whitelist - pairs = self._gen_pair_whitelist(self._config['stake_currency']) + pairs = self._gen_pair_whitelist(self._config['stake_currency'], self._sort_key) # Validate whitelist to only have active market pairs self._whitelist = self._validate_whitelist(pairs)[:self._number_pairs]