diff --git a/docs/telegram-usage.md b/docs/telegram-usage.md
index 824cb17c7..07f5fe7dd 100644
--- a/docs/telegram-usage.md
+++ b/docs/telegram-usage.md
@@ -262,11 +262,11 @@ Note that for this to work, `forcebuy_enable` needs to be set to true.
Return the performance of each crypto-currency the bot has sold.
> Performance:
-> 1. `RCN/BTC 57.77%`
-> 2. `PAY/BTC 56.91%`
-> 3. `VIB/BTC 47.07%`
-> 4. `SALT/BTC 30.24%`
-> 5. `STORJ/BTC 27.24%`
+> 1. `RCN/BTC 0.003 BTC (57.77%) (1)`
+> 2. `PAY/BTC 0.0012 BTC (56.91%) (1)`
+> 3. `VIB/BTC 0.0011 BTC (47.07%) (1)`
+> 4. `SALT/BTC 0.0010 BTC (30.24%) (1)`
+> 5. `STORJ/BTC 0.0009 BTC (27.24%) (1)`
> ...
### /balance
diff --git a/freqtrade/persistence/models.py b/freqtrade/persistence/models.py
index afd51366a..8d2c9d1d3 100644
--- a/freqtrade/persistence/models.py
+++ b/freqtrade/persistence/models.py
@@ -815,18 +815,20 @@ class Trade(_DECL_BASE, LocalTrade):
pair_rates = Trade.query.with_entities(
Trade.pair,
func.sum(Trade.close_profit).label('profit_sum'),
+ func.sum(Trade.close_profit_abs).label('profit_sum_abs'),
func.count(Trade.pair).label('count')
).filter(Trade.is_open.is_(False))\
.group_by(Trade.pair) \
- .order_by(desc('profit_sum')) \
+ .order_by(desc('profit_sum_abs')) \
.all()
return [
{
'pair': pair,
- 'profit': rate,
+ 'profit': profit,
+ 'profit_abs': profit_abs,
'count': count
}
- for pair, rate, count in pair_rates
+ for pair, profit, profit_abs, count in pair_rates
]
@staticmethod
diff --git a/freqtrade/rpc/api_server/api_schemas.py b/freqtrade/rpc/api_server/api_schemas.py
index c324f8828..4d06d3ecf 100644
--- a/freqtrade/rpc/api_server/api_schemas.py
+++ b/freqtrade/rpc/api_server/api_schemas.py
@@ -57,6 +57,7 @@ class Count(BaseModel):
class PerformanceEntry(BaseModel):
pair: str
profit: float
+ profit_abs: float
count: int
diff --git a/freqtrade/rpc/telegram.py b/freqtrade/rpc/telegram.py
index 8aa96f7b1..2e288ee33 100644
--- a/freqtrade/rpc/telegram.py
+++ b/freqtrade/rpc/telegram.py
@@ -711,8 +711,11 @@ class Telegram(RPCHandler):
trades = self._rpc._rpc_performance()
output = "Performance:\n"
for i, trade in enumerate(trades):
- stat_line = (f"{i+1}.\t {trade['pair']}\t{trade['profit']:.2f}% "
- f"({trade['count']})
\n")
+ stat_line = (
+ f"{i+1}.\t {trade['pair']}\t"
+ f"{round_coin_value(trade['profit_abs'], self._config['stake_currency'])} "
+ f"({trade['profit']:.2f}%) "
+ f"({trade['count']})
\n")
if len(output + stat_line) >= MAX_TELEGRAM_MESSAGE_LENGTH:
self._send_msg(output, parse_mode=ParseMode.HTML)
diff --git a/tests/rpc/test_rpc_apiserver.py b/tests/rpc/test_rpc_apiserver.py
index fc0dee14b..1a66b2e81 100644
--- a/tests/rpc/test_rpc_apiserver.py
+++ b/tests/rpc/test_rpc_apiserver.py
@@ -710,7 +710,7 @@ def test_api_stats(botclient, mocker, ticker, fee, markets,):
assert 'draws' in rc.json()['durations']
-def test_api_performance(botclient, mocker, ticker, fee):
+def test_api_performance(botclient, fee):
ftbot, client = botclient
patch_get_signal(ftbot, (True, False))
@@ -728,6 +728,7 @@ def test_api_performance(botclient, mocker, ticker, fee):
)
trade.close_profit = trade.calc_profit_ratio()
+ trade.close_profit_abs = trade.calc_profit()
Trade.query.session.add(trade)
trade = Trade(
@@ -743,14 +744,16 @@ def test_api_performance(botclient, mocker, ticker, fee):
close_rate=0.391
)
trade.close_profit = trade.calc_profit_ratio()
+ trade.close_profit_abs = trade.calc_profit()
+
Trade.query.session.add(trade)
Trade.query.session.flush()
rc = client_get(client, f"{BASE_URI}/performance")
assert_response(rc)
assert len(rc.json()) == 2
- assert rc.json() == [{'count': 1, 'pair': 'LTC/ETH', 'profit': 7.61},
- {'count': 1, 'pair': 'XRP/ETH', 'profit': -5.57}]
+ assert rc.json() == [{'count': 1, 'pair': 'LTC/ETH', 'profit': 7.61, 'profit_abs': 0.01872279},
+ {'count': 1, 'pair': 'XRP/ETH', 'profit': -5.57, 'profit_abs': -0.1150375}]
def test_api_status(botclient, mocker, ticker, fee, markets):
diff --git a/tests/rpc/test_rpc_telegram.py b/tests/rpc/test_rpc_telegram.py
index 37b5045f8..6008ede66 100644
--- a/tests/rpc/test_rpc_telegram.py
+++ b/tests/rpc/test_rpc_telegram.py
@@ -929,7 +929,7 @@ def test_performance_handle(default_conf, update, ticker, fee,
telegram._performance(update=update, context=MagicMock())
assert msg_mock.call_count == 1
assert 'Performance' in msg_mock.call_args_list[0][0][0]
- assert 'ETH/BTC\t6.20% (1)
' in msg_mock.call_args_list[0][0][0]
+ assert 'ETH/BTC\t0.00006217 BTC (6.20%) (1)
' in msg_mock.call_args_list[0][0][0]
def test_count_handle(default_conf, update, ticker, fee, mocker) -> None: