Don't refresh tickers if they are not needed

This commit is contained in:
Matthias
2019-11-09 07:05:17 +01:00
parent e632720c02
commit b610e8c7e6
6 changed files with 57 additions and 7 deletions

View File

@@ -22,11 +22,12 @@ class PairListManager():
self._whitelist = self._config['exchange'].get('pair_whitelist')
self._blacklist = self._config['exchange'].get('pair_blacklist', [])
self._pairlists: List[IPairList] = []
self._tickers_needed = False
for pl in self._config.get('pairlists', [{'method': "StaticPairList"}]):
pairl = PairListResolver(pl.get('method'),
exchange, config,
pl.get('config')).pairlist
self._tickers_needed = pairl.needstickers or self._tickers_needed
self._pairlists.append(pairl)
@property
@@ -52,17 +53,22 @@ class PairListManager():
pairlist = self._whitelist.copy()
# tickers should be cached to avoid calling the exchange on each call.
tickers = self._exchange.get_tickers()
tickers = []
if self._tickers_needed:
tickers = self._exchange.get_tickers()
for pl in self._pairlists:
pl.filter_pairlist(pairlist, tickers)
pairlist = self._verify_blacklist(pairlist)
# Validation against blacklist happens after the pairlists to ensure blacklist is respected.
pairlist = self.verify_blacklist(pairlist, self.blacklist)
self._whitelist = pairlist
def _verify_blacklist(self, pairlist: List[str]) -> List[str]:
@staticmethod
def verify_blacklist(pairlist: List[str], blacklist: List[str]) -> List[str]:
for pair in deepcopy(pairlist):
if pair in self.blacklist:
if pair in blacklist:
logger.warning(f"Pair {pair} in your blacklist. Removing it from whitelist...")
pairlist.remove(pair)
return pairlist