diff --git a/freqtrade/exchange/exchange_utils.py b/freqtrade/exchange/exchange_utils.py index 1c9894242..d20ff13f9 100644 --- a/freqtrade/exchange/exchange_utils.py +++ b/freqtrade/exchange/exchange_utils.py @@ -23,6 +23,7 @@ from freqtrade.exchange.common import ( BAD_EXCHANGES, EXCHANGE_HAS_OPTIONAL, EXCHANGE_HAS_REQUIRED, + MAP_EXCHANGE_CHILDCLASS, SUPPORTED_EXCHANGES, ) from freqtrade.exchange.exchange_utils_timeframe import timeframe_to_minutes, timeframe_to_prev_date @@ -91,21 +92,24 @@ def validate_exchange(exchange: str) -> tuple[bool, str, ccxt.Exchange | None]: def _build_exchange_list_entry( exchange_name: str, exchangeClasses: dict[str, Any] ) -> ValidExchangesType: + exchange_name = exchange_name.lower() valid, comment, ex_mod = validate_exchange(exchange_name) + mapped_exchange_name = MAP_EXCHANGE_CHILDCLASS.get(exchange_name, exchange_name).lower() + is_alias = getattr(ex_mod, "alias", False) result: ValidExchangesType = { "name": getattr(ex_mod, "name", exchange_name), "classname": exchange_name, "valid": valid, - "supported": exchange_name.lower() in SUPPORTED_EXCHANGES, + "supported": mapped_exchange_name in SUPPORTED_EXCHANGES and not is_alias, "comment": comment, "dex": getattr(ex_mod, "dex", False), - "is_alias": getattr(ex_mod, "alias", False), + "is_alias": is_alias, "alias_for": inspect.getmro(ex_mod.__class__)[1]().id if getattr(ex_mod, "alias", False) else None, "trade_modes": [{"trading_mode": "spot", "margin_mode": ""}], } - if resolved := exchangeClasses.get(exchange_name.lower()): + if resolved := exchangeClasses.get(mapped_exchange_name): supported_modes = [{"trading_mode": "spot", "margin_mode": ""}] + [ {"trading_mode": tm.value, "margin_mode": mm.value} for tm, mm in resolved["class"]._supported_trading_mode_margin_pairs