Forex_Strategy_Builder.Backtester.SetAdditioanlStats C# (CSharp) Method

SetAdditioanlStats() static private method

Sets the additional stats in pips.
static private SetAdditioanlStats ( ) : void
return void
        static void SetAdditioanlStats()
        {
            string unit = " " + Language.T("pips");

            additionalStatsParamName = new string[]
            {
                Language.T("Initial account"),
                Language.T("Account balance"),
                Language.T("Net profit"),
                Language.T("Gross profit"),
                Language.T("Gross loss"),
                Language.T("Profit factor"),
                Language.T("Annualized profit"),
                Language.T("Minimum account"),
                Language.T("Minimum account date"),
                Language.T("Maximum account"),
                Language.T("Maximum account date"),
                Language.T("Absolute drawdown"),
                Language.T("Maximum drawdown"),
                Language.T("Maximum drawdown date"),
                Language.T("Historical bars"),
                Language.T("Tested bars"),
                Language.T("Bars with trades"),
                Language.T("Bars with trades") + " %",
                Language.T("Number of trades"),
                Language.T("Winning trades"),
                Language.T("Losing trades"),
                Language.T("Win/loss ratio"),
                Language.T("Maximum profit"),
                Language.T("Average profit"),
                Language.T("Maximum loss"),
                Language.T("Average loss"),
                Language.T("Expected payoff")
            };

            int totalWinTrades  = winningLongTrades + winningShortTrades;
            int totalLossTrades = losingLongTrades  + losingShortTrades;
            int totalTrades     = totalWinTrades    + totalLossTrades;

            additionalStatsValueTotal = new string[]
            {
                "0" + unit,
                NetBalance.ToString() + unit,
                NetBalance.ToString() + unit,
                Math.Round(grossProfit).ToString() + unit,
                Math.Round(grossLoss).ToString()   + unit,
                (grossLoss == 0 ? "N/A" : Math.Abs(grossProfit / grossLoss).ToString("F2")),
                Math.Round(((365f / Data.Time[Data.Bars-1].Subtract(Data.Time[0]).Days) * NetBalance)).ToString() + unit,
                MinBalance.ToString() + unit,
                minBalanceDate.ToShortDateString(),
                MaxBalance.ToString() + unit,
                maxBalanceDate.ToShortDateString(),
                Math.Abs(MinBalance).ToString()    + unit,
                Math.Round(maxDrawdown).ToString() + unit,
                maxDrawdownDate.ToShortDateString(),
                Data.Bars.ToString(),
                (Data.Bars - Data.FirstBar).ToString(),
                barsWithPos.ToString(),
                (100f * barsWithPos /(Data.Bars - Data.FirstBar)).ToString("F2") + "%",
                totalTrades.ToString(),
                totalWinTrades.ToString(),
                totalLossTrades.ToString(),
                (1f * totalWinTrades/(totalWinTrades + totalLossTrades)).ToString("F2"),
                Math.Round(Math.Max(maxLongWin, maxShortWin)).ToString()   + unit,
                Math.Round(grossProfit / totalWinTrades).ToString()        + unit,
                Math.Round(Math.Min(maxLongLoss, maxShortLoss)).ToString() + unit,
                Math.Round(grossLoss / totalLossTrades).ToString()         + unit,
                (1f * NetBalance / totalTrades).ToString("F2")             + unit
            };

            additionalStatsValueLong = new string[]
            {
                "0" + unit,
                NetLongBalance.ToString() + unit,
                NetLongBalance.ToString() + unit,
                Math.Round(grossLongProfit).ToString() + unit,
                Math.Round(grossLongLoss).ToString()   + unit,
                (grossLongLoss == 0 ? "N/A" : Math.Abs(grossLongProfit/grossLongLoss).ToString("F2")),
                Math.Round(((365f / Data.Time[Data.Bars-1].Subtract(Data.Time[0]).Days) * NetLongBalance)).ToString() + unit,
                MinLongBalance.ToString() + unit,
                minLongBalanceDate.ToShortDateString(),
                MaxLongBalance.ToString() + unit,
                maxLongBalanceDate.ToShortDateString(),
                Math.Round(Math.Abs(minLongBalance)).ToString() + unit,
                Math.Round(maxLongDrawdown).ToString() + unit,
                maxLongDrawdownDate.ToShortDateString(),
                Data.Bars.ToString(),
                (Data.Bars - Data.FirstBar).ToString(),
                barsWithLongPos.ToString(),
                (100f * barsWithLongPos /(Data.Bars - Data.FirstBar)).ToString("F2") + "%",
                totalLongTrades.ToString(),
                winningLongTrades.ToString(),
                losingLongTrades.ToString(),
                (1f * winningLongTrades /(winningLongTrades + losingLongTrades)).ToString("F2"),
                Math.Round(maxLongWin).ToString() + unit,
                Math.Round(grossLongProfit / winningLongTrades).ToString() + unit,
                Math.Round(maxLongLoss).ToString() + unit,
                Math.Round(grossLongLoss / losingLongTrades).ToString() + unit,
                (1f * NetLongBalance / (winningLongTrades + losingLongTrades)).ToString("F2") + unit
            };

            additionalStatsValueShort = new string[]
            {
                "0" + unit,
                NetShortBalance.ToString() + unit,
                NetShortBalance.ToString() + unit,
                Math.Round(grossShortProfit).ToString() + unit,
                Math.Round(grossShortLoss).ToString()   + unit,
                (grossShortLoss == 0 ? "N/A" : Math.Abs(grossShortProfit/grossShortLoss).ToString("F2")),
                Math.Round(((365f / Data.Time[Data.Bars-1].Subtract(Data.Time[0]).Days) * NetShortBalance)).ToString() + unit,
                MinShortBalance.ToString() + unit,
                minShortBalanceDate.ToShortDateString(),
                MaxShortBalance.ToString() + unit,
                maxShortBalanceDate.ToShortDateString(),
                Math.Round(Math.Abs(minShortBalance)).ToString() + unit,
                Math.Round(maxShortDrawdown).ToString() + unit,
                maxShortDrawdownDate.ToShortDateString(),
                Data.Bars.ToString(),
                (Data.Bars - Data.FirstBar).ToString(),
                barsWithShortPos.ToString(),
                (100f * barsWithShortPos /(Data.Bars - Data.FirstBar)).ToString("F2") + "%",
                totalShortTrades.ToString(),
                winningShortTrades.ToString(),
                losingShortTrades.ToString(),
                (1f * winningShortTrades / (winningShortTrades + losingShortTrades)).ToString("F2"),
                Math.Round(maxShortWin).ToString() + unit,
                Math.Round(grossShortProfit / winningShortTrades).ToString() + unit,
                Math.Round(maxShortLoss).ToString() + unit,
                Math.Round(grossShortLoss / losingShortTrades).ToString() + unit,
                (1f * NetShortBalance / (winningShortTrades + losingShortTrades)).ToString("F2") + unit
            };
        }