From 31522c681e696dfa69758d26390ef47460264e0b Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 17 Jul 2025 20:27:53 +0200 Subject: [PATCH] feat: update get_best_pair to allow better filtering --- freqtrade/persistence/trade_model.py | 10 +++++----- freqtrade/rpc/rpc.py | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/freqtrade/persistence/trade_model.py b/freqtrade/persistence/trade_model.py index 4f3390117..ee1f9d9ff 100644 --- a/freqtrade/persistence/trade_model.py +++ b/freqtrade/persistence/trade_model.py @@ -2090,17 +2090,17 @@ class Trade(ModelBase, LocalTrade): return resp @staticmethod - def get_best_pair(start_date: datetime | None = None): + def get_best_pair(trade_filter: list | None = None): """ Get best pair with closed trade. NOTE: Not supported in Backtesting. :returns: Tuple containing (pair, profit_sum) """ - filters: list = [Trade.is_open.is_(False)] - if start_date: - filters.append(Trade.close_date >= start_date) + if not trade_filter: + trade_filter = [] + trade_filter.append(Trade.is_open.is_(False)) - pair_rates_query = Trade._generic_performance_query([Trade.pair], filters) + pair_rates_query = Trade._generic_performance_query([Trade.pair], trade_filter) best_pair = Trade.session.execute(pair_rates_query).first() # returns pair, profit_ratio, abs_profit, count return best_pair diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index 532aa67ca..e32bd811b 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -612,7 +612,7 @@ class RPC: closed_trade_count = len([t for t in trades if not t.is_open]) - best_pair = Trade.get_best_pair(start_date) + best_pair = Trade.get_best_pair([Trade.close_date > start_date, dir_filter]) trading_volume = Trade.get_trading_volume( [Order.order_filled_date >= start_date, dir_filter] )