From b722e1235019571288216f3408165ac06f8de028 Mon Sep 17 00:00:00 2001 From: kevinjulian Date: Sun, 4 Jul 2021 02:44:48 +0700 Subject: [PATCH 1/5] compact low balance currencies --- freqtrade/rpc/telegram.py | 15 ++++++++++++--- tests/conftest.py | 2 +- tests/rpc/test_rpc_telegram.py | 11 ++++++++--- 3 files changed, 21 insertions(+), 7 deletions(-) diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index d857e46a9..7ed564297 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -598,6 +598,9 @@ class Telegram(RPCHandler): "Starting capital: " f"`{self._config['dry_run_wallet']}` {self._config['stake_currency']}.\n" ) + total_dust_balance = 0 + total_dust_currencies = 0 + curr_output = '' for curr in result['currencies']: if curr['est_stake'] > balance_dust_level: curr_output = ( @@ -607,9 +610,9 @@ class Telegram(RPCHandler): f"\t`Pending: {curr['used']:.8f}`\n" f"\t`Est. {curr['stake']}: " f"{round_coin_value(curr['est_stake'], curr['stake'], False)}`\n") - else: - curr_output = (f"*{curr['currency']}:* not showing <{balance_dust_level} " - f"{curr['stake']} amount \n") + elif curr['est_stake'] <= balance_dust_level: + total_dust_balance += curr['est_stake'] + total_dust_currencies += 1 # Handle overflowing message length if len(output + curr_output) >= MAX_TELEGRAM_MESSAGE_LENGTH: @@ -618,6 +621,12 @@ class Telegram(RPCHandler): else: output += curr_output + if total_dust_balance > 0: + output += ( + f"*{total_dust_currencies} Other Currencies:*\n" + f"\t`Est. {result['stake']}: " + f"{round_coin_value(total_dust_balance, result['stake'], False)}`\n") + output += ("\n*Estimated Value*:\n" f"\t`{result['stake']}: {result['total']: .8f}`\n" f"\t`{result['symbol']}: " diff --git a/tests/conftest.py b/tests/conftest.py index a843d9397..4a81175ed 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1761,7 +1761,7 @@ def rpc_balance(): 'total': 0.1, 'free': 0.01, 'used': 0.0 - }, + }, 'EUR': { 'total': 10.0, 'free': 10.0, diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index 782ae69c6..241805736 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -515,16 +515,21 @@ def test_telegram_balance_handle(default_conf, update, mocker, rpc_balance, tick patch_get_signal(freqtradebot, (True, False)) telegram._balance(update=update, context=MagicMock()) + print('msg_mock.call_args_list') + print(msg_mock.call_args_list) result = msg_mock.call_args_list[0][0][0] assert msg_mock.call_count == 1 assert '*BTC:*' in result assert '*ETH:*' not in result - assert '*USDT:*' in result - assert '*EUR:*' in result + assert '*USDT:*' not in result + assert '*EUR:*' not in result + assert '*LTC:*' in result + assert '*XRP:*' not in result assert 'Balance:' in result assert 'Est. BTC:' in result assert 'BTC: 12.00000000' in result - assert '*XRP:* not showing <0.0001 BTC amount' in result + assert "*3 Other Currencies:*" in result + assert 'BTC: 0.00000309' in result def test_balance_handle_empty_response(default_conf, update, mocker) -> None: From dbdd7f38a88b5857dd276456951c168796b5b286 Mon Sep 17 00:00:00 2001 From: kevinjulian Date: Sun, 4 Jul 2021 02:56:05 +0700 Subject: [PATCH 2/5] add plural --- freqtrade/rpc/telegram.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 7ed564297..389ef84a4 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -11,7 +11,6 @@ from html import escape from itertools import chain from math import isnan from typing import Any, Callable, Dict, List, Optional, Union - import arrow from tabulate import tabulate from telegram import (CallbackQuery, InlineKeyboardButton, InlineKeyboardMarkup, KeyboardButton, @@ -24,7 +23,7 @@ from freqtrade.__init__ import __version__ from freqtrade.constants import DUST_PER_COIN from freqtrade.enums import RPCMessageType from freqtrade.exceptions import OperationalException -from freqtrade.misc import chunks, round_coin_value +from freqtrade.misc import chunks, round_coin_value, plural from freqtrade.rpc import RPC, RPCException, RPCHandler @@ -623,7 +622,8 @@ class Telegram(RPCHandler): if total_dust_balance > 0: output += ( - f"*{total_dust_currencies} Other Currencies:*\n" + f"*{total_dust_currencies} Other " + f"{plural(total_dust_currencies, 'Currency', 'Currencies')}:*\n" f"\t`Est. {result['stake']}: " f"{round_coin_value(total_dust_balance, result['stake'], False)}`\n") From 7efa228d73e538165ffacce578a3d649725aab01 Mon Sep 17 00:00:00 2001 From: kevinjulian Date: Sun, 4 Jul 2021 03:08:29 +0700 Subject: [PATCH 3/5] add dust balance --- freqtrade/rpc/telegram.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 389ef84a4..0bacf0504 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -623,7 +623,8 @@ class Telegram(RPCHandler): if total_dust_balance > 0: output += ( f"*{total_dust_currencies} Other " - f"{plural(total_dust_currencies, 'Currency', 'Currencies')}:*\n" + f"{plural(total_dust_currencies, 'Currency', 'Currencies')} " + f"(< {balance_dust_level} {result['stake']}):*\n" f"\t`Est. {result['stake']}: " f"{round_coin_value(total_dust_balance, result['stake'], False)}`\n") From 9e548657e03d279a143ad304233031d3393faff9 Mon Sep 17 00:00:00 2001 From: kevinjulian Date: Sun, 4 Jul 2021 21:08:46 +0700 Subject: [PATCH 4/5] fix testcase --- tests/rpc/test_rpc_telegram.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py index 241805736..4784f1172 100644 --- a/tests/rpc/test_rpc_telegram.py +++ b/tests/rpc/test_rpc_telegram.py @@ -515,8 +515,6 @@ def test_telegram_balance_handle(default_conf, update, mocker, rpc_balance, tick patch_get_signal(freqtradebot, (True, False)) telegram._balance(update=update, context=MagicMock()) - print('msg_mock.call_args_list') - print(msg_mock.call_args_list) result = msg_mock.call_args_list[0][0][0] assert msg_mock.call_count == 1 assert '*BTC:*' in result @@ -528,7 +526,7 @@ def test_telegram_balance_handle(default_conf, update, mocker, rpc_balance, tick assert 'Balance:' in result assert 'Est. BTC:' in result assert 'BTC: 12.00000000' in result - assert "*3 Other Currencies:*" in result + assert "*3 Other Currencies (< 0.0001 BTC):*" in result assert 'BTC: 0.00000309' in result From c3cf71bba8465675aab47c14233664ce89d58ebe Mon Sep 17 00:00:00 2001 From: kevinjulian Date: Sun, 4 Jul 2021 22:04:39 +0700 Subject: [PATCH 5/5] sort import --- freqtrade/rpc/telegram.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 0bacf0504..171a53ca1 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -11,6 +11,7 @@ from html import escape from itertools import chain from math import isnan from typing import Any, Callable, Dict, List, Optional, Union + import arrow from tabulate import tabulate from telegram import (CallbackQuery, InlineKeyboardButton, InlineKeyboardMarkup, KeyboardButton, @@ -23,7 +24,7 @@ from freqtrade.__init__ import __version__ from freqtrade.constants import DUST_PER_COIN from freqtrade.enums import RPCMessageType from freqtrade.exceptions import OperationalException -from freqtrade.misc import chunks, round_coin_value, plural +from freqtrade.misc import chunks, plural, round_coin_value from freqtrade.rpc import RPC, RPCException, RPCHandler