From 98755c18742bbe2dc1d32e98fadb5e471b93a327 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 10 Mar 2022 06:47:17 +0100 Subject: [PATCH] Fix wrong estimated output from /balance endpoints --- freqtrade/rpc/rpc.py | 4 ++++ tests/rpc/test_rpc.py | 7 +++---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index a77f6f69c..f47bc2668 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -586,6 +586,9 @@ class RPC: if coin == stake_currency: rate = 1.0 est_stake = balance.total + if self._config.get('trading_mode', TradingMode.SPOT) != TradingMode.SPOT: + # in Futures, "total" includes the locked stake, and therefore all positions + est_stake = balance.free else: try: pair = self._freqtrade.exchange.get_valid_pair_combination(coin, stake_currency) @@ -614,6 +617,7 @@ class RPC: symbol: str position: PositionWallet for symbol, position in self._freqtrade.wallets.get_all_positions().items(): + total += position.collateral currencies.append({ 'currency': symbol, diff --git a/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py index 7e34506d6..11fb5e0a1 100644 --- a/tests/rpc/test_rpc.py +++ b/tests/rpc/test_rpc.py @@ -650,8 +650,8 @@ def test_rpc_balance_handle(default_conf, mocker, tickers): rpc._fiat_converter = CryptoToFiatConverter() result = rpc._rpc_balance(default_conf['stake_currency'], default_conf['fiat_display_currency']) - assert prec_satoshi(result['total'], 12.309096315) - assert prec_satoshi(result['value'], 184636.44472997) + assert prec_satoshi(result['total'], 30.309096315) + assert prec_satoshi(result['value'], 454636.44472997) assert tickers.call_count == 1 assert tickers.call_args_list[0][1]['cached'] is True assert 'USD' == result['symbol'] @@ -661,7 +661,7 @@ def test_rpc_balance_handle(default_conf, mocker, tickers): 'free': 10.0, 'balance': 12.0, 'used': 2.0, - 'est_stake': 12.0, + 'est_stake': 10.0, # In futures mode, "free" is used here. 'stake': 'BTC', 'is_position': False, 'leverage': 1.0, @@ -706,7 +706,6 @@ def test_rpc_balance_handle(default_conf, mocker, tickers): 'side': 'short', } ] - assert result['total'] == 12.309096315331816 def test_rpc_start(mocker, default_conf) -> None: