feat: update get_best_pair to allow better filtering

This commit is contained in:
Matthias
2025-07-17 20:27:53 +02:00
parent a5ac8a95a7
commit 31522c681e
2 changed files with 6 additions and 6 deletions

View File

@@ -2090,17 +2090,17 @@ class Trade(ModelBase, LocalTrade):
return resp return resp
@staticmethod @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. Get best pair with closed trade.
NOTE: Not supported in Backtesting. NOTE: Not supported in Backtesting.
:returns: Tuple containing (pair, profit_sum) :returns: Tuple containing (pair, profit_sum)
""" """
filters: list = [Trade.is_open.is_(False)] if not trade_filter:
if start_date: trade_filter = []
filters.append(Trade.close_date >= start_date) 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() best_pair = Trade.session.execute(pair_rates_query).first()
# returns pair, profit_ratio, abs_profit, count # returns pair, profit_ratio, abs_profit, count
return best_pair return best_pair

View File

@@ -612,7 +612,7 @@ class RPC:
closed_trade_count = len([t for t in trades if not t.is_open]) 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( trading_volume = Trade.get_trading_volume(
[Order.order_filled_date >= start_date, dir_filter] [Order.order_filled_date >= start_date, dir_filter]
) )