feat: update rpc_balance to fetch spot tickers

Happens if there is no market for the given pair
This commit is contained in:
Matthias
2024-11-26 20:06:28 +01:00
parent 37aba6f7d5
commit 2bb111605c
+18 -7
View File
@@ -7,7 +7,7 @@ from abc import abstractmethod
from collections.abc import Generator, Sequence from collections.abc import Generator, Sequence
from datetime import date, datetime, timedelta, timezone from datetime import date, datetime, timedelta, timezone
from math import isnan from math import isnan
from typing import Any, cast from typing import Any
import psutil import psutil
from dateutil.relativedelta import relativedelta from dateutil.relativedelta import relativedelta
@@ -682,12 +682,23 @@ class RPC:
est_bot_stake = amount est_bot_stake = amount
else: else:
pair = self._freqtrade.exchange.get_valid_pair_combination(coin, stake_currency) pair = self._freqtrade.exchange.get_valid_pair_combination(coin, stake_currency)
rate: float | None = cast(Ticker, tickers.get(pair, {})).get("last", None) ticker: Ticker | None = tickers.get(pair, None)
if rate: if not ticker:
if pair.startswith(stake_currency) and not pair.endswith(stake_currency): tickers_spot: Tickers = self._freqtrade.exchange.get_tickers(
rate = 1.0 / rate cached=True,
est_stake = rate * balance.total market_type=TradingMode.SPOT
est_bot_stake = rate * amount if self._config.get("trading_mode", TradingMode.SPOT) != TradingMode.SPOT
else TradingMode.FUTURES,
)
ticker = tickers_spot.get(pair, None)
if ticker:
rate: float | None = ticker.get("last", None)
if rate:
if pair.startswith(stake_currency) and not pair.endswith(stake_currency):
rate = 1.0 / rate
est_stake = rate * balance.total
est_bot_stake = rate * amount
return est_stake, est_bot_stake return est_stake, est_bot_stake