diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index f48666748..c2f097319 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -9,6 +9,7 @@ from typing import Dict, Tuple, Any import arrow import sqlalchemy as sql from pandas import DataFrame +from numpy import mean, nan_to_num from freqtrade import exchange from freqtrade.misc import shorten_date @@ -209,14 +210,14 @@ class RPC(object): fiat = self.freqtrade.fiat_converter # Prepare data to display profit_closed_coin = round(sum(profit_closed_coin), 8) - profit_closed_percent = round(sum(profit_closed_percent) * 100, 2) + profit_closed_percent = round(nan_to_num(mean(profit_closed_percent)) * 100, 2) profit_closed_fiat = fiat.convert_amount( profit_closed_coin, stake_currency, fiat_display_currency ) profit_all_coin = round(sum(profit_all_coin), 8) - profit_all_percent = round(sum(profit_all_percent) * 100, 2) + profit_all_percent = round(nan_to_num(mean(profit_all_percent)) * 100, 2) profit_all_fiat = fiat.convert_amount( profit_all_coin, stake_currency, diff --git a/freqtrade/tests/rpc/test_rpc.py b/freqtrade/tests/rpc/test_rpc.py index 1cf374b6b..a6ac45b58 100644 --- a/freqtrade/tests/rpc/test_rpc.py +++ b/freqtrade/tests/rpc/test_rpc.py @@ -206,15 +206,30 @@ def test_rpc_trade_statistics(default_conf, ticker, ticker_sell_up, fee, trade.close_date = datetime.utcnow() trade.is_open = False + freqtradebot.create_trade() + trade = Trade.query.first() + # Simulate fulfilled LIMIT_BUY order for trade + trade.update(limit_buy_order) + + # Update the ticker with a market going up + mocker.patch.multiple( + 'freqtrade.freqtradebot.exchange', + validate_pairs=MagicMock(), + get_ticker=ticker_sell_up + ) + trade.update(limit_sell_order) + trade.close_date = datetime.utcnow() + trade.is_open = False + (error, stats) = rpc.rpc_trade_statistics(stake_currency, fiat_display_currency) assert not error assert prec_satoshi(stats['profit_closed_coin'], 6.217e-05) assert prec_satoshi(stats['profit_closed_percent'], 6.2) assert prec_satoshi(stats['profit_closed_fiat'], 0.93255) - assert prec_satoshi(stats['profit_all_coin'], 6.217e-05) - assert prec_satoshi(stats['profit_all_percent'], 6.2) - assert prec_satoshi(stats['profit_all_fiat'], 0.93255) - assert stats['trade_count'] == 1 + assert prec_satoshi(stats['profit_all_coin'], 5.632e-05) + assert prec_satoshi(stats['profit_all_percent'], 2.81) + assert prec_satoshi(stats['profit_all_fiat'], 0.8448) + assert stats['trade_count'] == 2 assert stats['first_trade_date'] == 'just now' assert stats['latest_trade_date'] == 'just now' assert stats['avg_duration'] == '0:00:00'