diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 70d5a78f3..afea04f99 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -398,7 +398,10 @@ def _balance(bot: Bot, update: Update) -> None: if coin == 'BTC': currency["Rate"] = 1.0 else: - currency["Rate"] = exchange.get_ticker('BTC_' + coin, False)['bid'] + if coin == 'USDT': + currency["Rate"] = 1.0 / exchange.get_ticker('USDT_BTC', False)['bid'] + else: + currency["Rate"] = exchange.get_ticker('BTC_' + coin, False)['bid'] currency['BTC'] = currency["Rate"] * currency["Balance"] total = total + currency['BTC'] output += """*Currency*: {Currency} diff --git a/freqtrade/tests/conftest.py b/freqtrade/tests/conftest.py index 70249fd7d..f9d14c170 100644 --- a/freqtrade/tests/conftest.py +++ b/freqtrade/tests/conftest.py @@ -71,6 +71,15 @@ def ticker(): }) +@pytest.fixture +def ticker_usdt(): + return MagicMock(return_value={ + 'bid': 10000.00, + 'ask': 10000.00, + 'last': 10000.00, + }) + + @pytest.fixture def ticker_sell_up(): return MagicMock(return_value={ diff --git a/freqtrade/tests/rpc/test_rpc_telegram.py b/freqtrade/tests/rpc/test_rpc_telegram.py index 986f3f8f0..f71e7bc21 100644 --- a/freqtrade/tests/rpc/test_rpc_telegram.py +++ b/freqtrade/tests/rpc/test_rpc_telegram.py @@ -604,7 +604,7 @@ def test_stop_handle_already_stopped(default_conf, update, mocker): assert 'already stopped' in msg_mock.call_args_list[0][0][0] -def test_balance_handle(default_conf, update, mocker): +def test_balance_handle(default_conf, update, ticker_usdt, mocker): mock_balance = [{ 'Currency': 'BTC', 'Balance': 10.0, @@ -617,6 +617,12 @@ def test_balance_handle(default_conf, update, mocker): 'Available': 0.0, 'Pending': 0.0, 'CryptoAddress': 'XXXX', + }, { + 'Currency': 'USDT', + 'Balance': 10000.0, + 'Available': 0.0, + 'Pending': 0.0, + 'CryptoAddress': 'XXXX', }] mocker.patch.dict('freqtrade.main._CONF', default_conf) msg_mock = MagicMock() @@ -625,16 +631,21 @@ def test_balance_handle(default_conf, update, mocker): init=MagicMock(), send_msg=msg_mock) mocker.patch.multiple('freqtrade.main.exchange', - get_balances=MagicMock(return_value=mock_balance)) + get_balances=MagicMock(return_value=mock_balance), + get_ticker=ticker_usdt) mocker.patch.multiple('freqtrade.fiat_convert.Pymarketcap', ticker=MagicMock(return_value={'price_usd': 15000.0}), _cache_symbols=MagicMock(return_value={'BTC': 1})) _balance(bot=MagicMock(), update=update) + result = msg_mock.call_args_list[0][0][0] assert msg_mock.call_count == 1 - assert '*Currency*: BTC' in msg_mock.call_args_list[0][0][0] - assert 'Balance' in msg_mock.call_args_list[0][0][0] - assert 'Est. BTC' in msg_mock.call_args_list[0][0][0] + assert '*Currency*: BTC' in result + assert '*Currency*: ETH' not in result + assert '*Currency*: USDT' in result + assert 'Balance' in result + assert 'Est. BTC' in result + assert '*BTC*: 11.00000000' in result def test_help_handle(default_conf, update, mocker):