using static Managing.Common.Enums;

namespace Managing.Domain.Backtests;

public class BacktestScoringParams
{
    public double SharpeRatio { get; }
    public double GrowthPercentage { get; }
    public double HodlPercentage { get; }
    public double WinRate { get; }
    public double TotalPnL { get; }
    public double Fees { get; }
    public int TradeCount { get; }
    public TimeSpan MaxDrawdownRecoveryTime { get; }
    
    // New properties for enhanced scoring
    public decimal MaxDrawdown { get; }
    public decimal InitialBalance { get; }
    public decimal TradingBalance { get; }
    public DateTime StartDate { get; }
    public DateTime EndDate { get; }
    public Timeframe Timeframe { get; }
    public LightMoneyManagement MoneyManagement { get; }

    public BacktestScoringParams(
        double sharpeRatio,
        double growthPercentage,
        double hodlPercentage,
        double winRate,
        double totalPnL,
        double fees,
        int tradeCount,
        TimeSpan maxDrawdownRecoveryTime,
        decimal maxDrawdown = 0,
        decimal initialBalance = 0,
        decimal tradingBalance = 0,
        DateTime startDate = default,
        DateTime endDate = default,
        Timeframe timeframe = Timeframe.OneHour,
        LightMoneyManagement moneyManagement = null)
    {
        SharpeRatio = sharpeRatio;
        GrowthPercentage = growthPercentage;
        HodlPercentage = hodlPercentage;
        WinRate = winRate;
        TotalPnL = totalPnL;
        Fees = fees;
        TradeCount = tradeCount;
        MaxDrawdownRecoveryTime = maxDrawdownRecoveryTime;
        MaxDrawdown = maxDrawdown;
        InitialBalance = initialBalance;
        TradingBalance = tradingBalance;
        StartDate = startDate;
        EndDate = endDate;
        Timeframe = timeframe;
        MoneyManagement = moneyManagement;
    }
}