Files
Freqtrade/CustomPerformanceLoss.py
Jérôme Delacotte 26aa1ea32b CustomPerformanceLoss
2026-02-26 19:47:31 +01:00

30 lines
791 B
Python

from freqtrade.optimize.hyperopt import IHyperOptLoss
from math import sqrt
class CustomPerformanceLoss(IHyperOptLoss):
@staticmethod
def hyperopt_loss_function(results, trade_count, *args, **kwargs):
total_profit = results['profit_total_abs']
max_dd = results['max_drawdown']
profit_factor = results['profit_factor']
sqn = results['sqn']
# Sécurité minimale
if trade_count < 30:
return 1000
# Éviter division par zéro
if max_dd == 0:
max_dd = 0.0001
# Score principal
performance_score = (
(profit_factor * sqn * total_profit)
/ (max_dd ** 1.5)
)
# On retourne l'inverse car hyperopt minimise
return -performance_score