chore: simplify rpc_balance method by relying on exchange cache

This commit is contained in:
Matthias
2024-12-08 15:22:40 +01:00
parent 58357a0746
commit 4cd8e6b444

View File

@@ -675,7 +675,7 @@ class RPC:
} }
def __balance_get_est_stake( def __balance_get_est_stake(
self, coin: str, stake_currency: str, amount: float, balance: Wallet, tickers: Tickers self, coin: str, stake_currency: str, amount: float, balance: Wallet
) -> tuple[float, float]: ) -> tuple[float, float]:
est_stake = 0.0 est_stake = 0.0
est_bot_stake = 0.0 est_bot_stake = 0.0
@@ -686,6 +686,8 @@ class RPC:
est_stake = balance.free est_stake = balance.free
est_bot_stake = amount est_bot_stake = amount
else: else:
try:
tickers: Tickers = self._freqtrade.exchange.get_tickers(cached=True)
pair = self._freqtrade.exchange.get_valid_pair_combination(coin, stake_currency) pair = self._freqtrade.exchange.get_valid_pair_combination(coin, stake_currency)
ticker: Ticker | None = tickers.get(pair, None) ticker: Ticker | None = tickers.get(pair, None)
if not ticker: if not ticker:
@@ -706,16 +708,16 @@ class RPC:
est_bot_stake = rate * amount est_bot_stake = rate * amount
return est_stake, est_bot_stake return est_stake, est_bot_stake
except (ExchangeError, PricingError) as e:
logger.warning(f"Error {e} getting rate for {coin}")
pass
return est_stake, est_bot_stake
def _rpc_balance(self, stake_currency: str, fiat_display_currency: str) -> dict: def _rpc_balance(self, stake_currency: str, fiat_display_currency: str) -> dict:
"""Returns current account balance per crypto""" """Returns current account balance per crypto"""
currencies: list[dict] = [] currencies: list[dict] = []
total = 0.0 total = 0.0
total_bot = 0.0 total_bot = 0.0
try:
tickers: Tickers = self._freqtrade.exchange.get_tickers(cached=True)
except ExchangeError:
raise RPCException("Error getting current tickers.")
open_trades: list[Trade] = Trade.get_open_trades() open_trades: list[Trade] = Trade.get_open_trades()
open_assets: dict[str, Trade] = {t.safe_base_currency: t for t in open_trades} open_assets: dict[str, Trade] = {t.safe_base_currency: t for t in open_trades}
@@ -742,7 +744,7 @@ class RPC:
try: try:
est_stake, est_stake_bot = self.__balance_get_est_stake( est_stake, est_stake_bot = self.__balance_get_est_stake(
coin, stake_currency, trade_amount, balance, tickers coin, stake_currency, trade_amount, balance
) )
except ValueError: except ValueError:
continue continue