Fix #1981 - Detect reverted currency pairs

This commit is contained in:
Matthias 2019-07-03 20:06:50 +02:00
parent b43594e4eb
commit fcdbe846e5
2 changed files with 14 additions and 4 deletions

View File

@ -270,6 +270,15 @@ class Exchange(object):
f'Pair {pair} is not available on {self.name}. ' f'Pair {pair} is not available on {self.name}. '
f'Please remove {pair} from your whitelist.') f'Please remove {pair} from your whitelist.')
def get_valid_pair_combination(self, paira, pairb) -> str:
"""
Get valid combination of paira and pairb by trying both combinations.
"""
for pair in [f"{paira}/{pairb}", f"{pairb}/{paira}"]:
if pair in self._api.markets and self._api.markets[pair].get('active'):
return pair
raise DependencyException(f"Could not combine {paira} and {pairb} to get a valid pair.")
def validate_timeframes(self, timeframe: List[str]) -> None: def validate_timeframes(self, timeframe: List[str]) -> None:
""" """
Checks if ticker interval from config is a supported timeframe on the exchange Checks if ticker interval from config is a supported timeframe on the exchange
@ -501,7 +510,7 @@ class Exchange(object):
def get_ticker(self, pair: str, refresh: Optional[bool] = True) -> dict: def get_ticker(self, pair: str, refresh: Optional[bool] = True) -> dict:
if refresh or pair not in self._cached_ticker.keys(): if refresh or pair not in self._cached_ticker.keys():
try: try:
if pair not in self._api.markets: if pair not in self._api.markets or not self._api.markets[pair].get('active'):
raise DependencyException(f"Pair {pair} not available") raise DependencyException(f"Pair {pair} not available")
data = self._api.fetch_ticker(pair) data = self._api.fetch_ticker(pair)
try: try:

View File

@ -281,10 +281,11 @@ class RPC(object):
rate = 1.0 rate = 1.0
else: else:
try: try:
if coin in('USDT', 'USD', 'EUR'): pair = self._freqtrade.exchange.get_valid_pair_combination(coin, "BTC")
rate = 1.0 / self._freqtrade.get_sell_rate('BTC/' + coin, False) if pair.startswith("BTC"):
rate = 1.0 / self._freqtrade.get_sell_rate(pair, False)
else: else:
rate = self._freqtrade.get_sell_rate(coin + '/BTC', False) rate = self._freqtrade.get_sell_rate(pair, False)
except (TemporaryError, DependencyException): except (TemporaryError, DependencyException):
logger.warning(f" Could not get rate for pair {coin}.") logger.warning(f" Could not get rate for pair {coin}.")
continue continue