diff --git a/freqtrade/edge/edge_positioning.py b/freqtrade/edge/edge_positioning.py index 721e22262..0449d6ebe 100644 --- a/freqtrade/edge/edge_positioning.py +++ b/freqtrade/edge/edge_positioning.py @@ -240,7 +240,7 @@ class Edge: return self._final_pairs - def accepted_pairs(self) -> list: + def accepted_pairs(self) -> List[Dict[str, Any]]: """ return a list of accepted pairs along with their winrate, expectancy and stoploss """ diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py index 97a01fc53..c619559de 100644 --- a/freqtrade/rpc/telegram.py +++ b/freqtrade/rpc/telegram.py @@ -861,9 +861,17 @@ class Telegram(RPCHandler): """ try: edge_pairs = self._rpc._rpc_edge() - edge_pairs_tab = tabulate(edge_pairs, headers='keys', tablefmt='simple') - message = f'Edge only validated following pairs:\n
{edge_pairs_tab}'
- self._send_msg(message, parse_mode=ParseMode.HTML)
+ if not edge_pairs:
+ message = 'Edge only validated following pairs:'
+ self._send_msg(message, parse_mode=ParseMode.HTML)
+
+ for chunk in chunks(edge_pairs, 25):
+ edge_pairs_tab = tabulate(chunk, headers='keys', tablefmt='simple')
+ message = (f'Edge only validated following pairs:\n'
+ f'{edge_pairs_tab}')
+
+ self._send_msg(message, parse_mode=ParseMode.HTML)
+
except RPCException as e:
self._send_msg(str(e))
diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py
index 6a36c12a7..6d42a6845 100644
--- a/tests/rpc/test_rpc_telegram.py
+++ b/tests/rpc/test_rpc_telegram.py
@@ -1102,6 +1102,15 @@ def test_edge_enabled(edge_conf, update, mocker) -> None:
assert 'Edge only validated following pairs:\n' in msg_mock.call_args_list[0][0][0]
assert 'Pair Winrate Expectancy Stoploss' in msg_mock.call_args_list[0][0][0]
+ msg_mock.reset_mock()
+
+ mocker.patch('freqtrade.edge.Edge._cached_pairs', mocker.PropertyMock(
+ return_value={}))
+ telegram._edge(update=update, context=MagicMock())
+ assert msg_mock.call_count == 1
+ assert 'Edge only validated following pairs:' in msg_mock.call_args_list[0][0][0]
+ assert 'Winrate' not in msg_mock.call_args_list[0][0][0]
+
def test_telegram_trades(mocker, update, default_conf, fee):