Forex_Strategy_Builder.Backtester.SetAdditioanlMoneyStats C# (CSharp) Method

SetAdditioanlMoneyStats() static private method

Sets the additional stats in Money.
static private SetAdditioanlMoneyStats ( ) : void
return void
        static void SetAdditioanlMoneyStats()
        {
            string unit = " " + Configs.AccountCurrency;

            additionalStatsParamName = new string[]
            {
                Language.T("Initial account"),
                Language.T("Account balance"),
                Language.T("Net profit"),
                Language.T("Net profit") + " %",
                Language.T("Gross profit"),
                Language.T("Gross loss"),
                Language.T("Profit factor"),
                Language.T("Annualized profit"),
                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") + " %",
                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"),
                Language.T("Average holding period returns"),
                Language.T("Geometric holding period returns"),
                Language.T("Sharpe ratio")
            };

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

            additionalStatsValueTotal = new string[]
            {
                Configs.InitialAccount.ToString("F2") + unit,
                NetMoneyBalance.ToString("F2") + unit,
                (NetMoneyBalance - Configs.InitialAccount).ToString("F2") + unit,
                (100 * ((NetMoneyBalance - Configs.InitialAccount) / Configs.InitialAccount)).ToString("F2") + "%",
                grossMoneyProfit.ToString("F2") + unit,
                grossMoneyLoss.ToString("F2") + unit,
                (grossMoneyLoss == 0 ? "N/A" : Math.Abs(grossMoneyProfit / grossMoneyLoss).ToString("F2")),
                ((365f / Data.Time[Data.Bars-1].Subtract(Data.Time[0]).Days) * (NetMoneyBalance - Configs.InitialAccount)).ToString("F2") + unit,
                (100 * (365f / Data.Time[Data.Bars-1].Subtract(Data.Time[0]).Days) * (NetMoneyBalance - Configs.InitialAccount) / Configs.InitialAccount).ToString("F2") + "%",
                MinMoneyBalance.ToString("F2") + unit,
                minMoneyBalanceDate.ToShortDateString(),
                MaxMoneyBalance.ToString("F2") + unit,
                maxMoneyBalanceDate.ToShortDateString(),
                (Configs.InitialAccount - MinMoneyBalance).ToString("F2") + unit,
                maxMoneyDrawdown.ToString("F2") + unit,
                maxMoneyDrawdownPercent.ToString("F2") + "%",
                maxMoneyDrawdownDate.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.Max(maxLongMoneyWin, maxShortMoneyWin).ToString("F2") + unit,
                (grossMoneyProfit / totalWinTrades).ToString("F2") + unit,
                Math.Min(maxLongMoneyLoss, maxShortMoneyLoss).ToString("F2") + unit,
                (grossMoneyLoss / totalLossTrades).ToString("F2") + unit,
                (1f * (NetMoneyBalance - Configs.InitialAccount) / totalTrades).ToString("F2") + unit,
                AHPR.ToString("F2") + "%",
                GHPR.ToString("F2") + "%",
                sharpeRatio.ToString("F2")
            };

            additionalStatsValueLong = new string[]
            {
                Configs.InitialAccount.ToString("F2") + unit,
                NetLongMoneyBalance.ToString("F2") + unit,
                (NetLongMoneyBalance - Configs.InitialAccount).ToString("F2") + unit,
                (100 * ((NetLongMoneyBalance - Configs.InitialAccount) / Configs.InitialAccount)).ToString("F2") + "%",
                grossLongMoneyProfit.ToString("F2") + unit,
                grossLongMoneyLoss.ToString("F2") + unit,
                (grossLongMoneyLoss == 0 ? "N/A" : Math.Abs(grossLongMoneyProfit/grossLongMoneyLoss).ToString("F2")),
                ((365f / Data.Time[Data.Bars-1].Subtract(Data.Time[0]).Days) * (NetLongMoneyBalance - Configs.InitialAccount)).ToString("F2") + unit,
                (100 * (365f / Data.Time[Data.Bars-1].Subtract(Data.Time[0]).Days) * (NetLongMoneyBalance - Configs.InitialAccount) / Configs.InitialAccount).ToString("F2") + "%",
                MinLongMoneyBalance.ToString("F2") + unit,
                minLongMoneyBalanceDate.ToShortDateString(),
                MaxLongMoneyBalance.ToString("F2") + unit,
                maxLongMoneyBalanceDate.ToShortDateString(),
                (Configs.InitialAccount - MinLongMoneyBalance).ToString("F2") + unit,
                maxLongMoneyDrawdown.ToString("F2") + unit,
                maxLongMoneyDrawdownPercent.ToString("F2") + "%",
                maxLongMoneyDrawdownDate.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"),
                maxLongMoneyWin.ToString("F2") + unit,
                (grossLongMoneyProfit / winningLongTrades).ToString("F2") + unit,
                maxLongMoneyLoss.ToString("F2") + unit,
                (grossLongMoneyLoss / losingLongTrades).ToString("F2") + unit,
                (1f * (NetLongMoneyBalance - Configs.InitialAccount) / (winningLongTrades + losingLongTrades)).ToString("F2") + unit,
                AHPRLong.ToString("F2") + "%",
                GHPRLong.ToString("F2") + "%",
                sharpeRatioLong.ToString("F2")
            };

            additionalStatsValueShort = new string[]
            {
                Configs.InitialAccount.ToString("F2") + unit,
                NetShortMoneyBalance.ToString("F2") + unit,
                (NetShortMoneyBalance - Configs.InitialAccount).ToString("F2") + unit,
                (100 * ((NetShortMoneyBalance - Configs.InitialAccount) / Configs.InitialAccount)).ToString("F2") + "%",
                grossShortMoneyProfit.ToString("F2") + unit,
                grossShortMoneyLoss.ToString("F2") + unit,
                (grossShortMoneyLoss == 0 ? "N/A" : Math.Abs(grossShortMoneyProfit/grossShortMoneyLoss).ToString("F2")),
                ((365f / Data.Time[Data.Bars-1].Subtract(Data.Time[0]).Days) * (NetShortMoneyBalance - Configs.InitialAccount)).ToString("F2") + unit,
                (100 * (365f / Data.Time[Data.Bars-1].Subtract(Data.Time[0]).Days) * (NetShortMoneyBalance - Configs.InitialAccount) / Configs.InitialAccount).ToString("F2") + "%",
                MinShortMoneyBalance.ToString("F2") + unit,
                minShortMoneyBalanceDate.ToShortDateString(),
                MaxShortMoneyBalance.ToString("F2") + unit,
                maxShortMoneyBalanceDate.ToShortDateString(),
                (Configs.InitialAccount - MinShortMoneyBalance).ToString("F2") + unit,
                maxShortMoneyDrawdown.ToString("F2") + unit,
                maxShortMoneyDrawdownPercent.ToString("F2") + "%",
                maxShortMoneyDrawdownDate.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"),
                maxShortMoneyWin.ToString("F2") + unit,
                (grossShortMoneyProfit / winningShortTrades).ToString("F2") + unit,
                maxShortMoneyLoss.ToString("F2") + unit,
                (grossShortMoneyLoss / losingShortTrades).ToString("F2") + unit,
                (1f * (NetShortMoneyBalance - Configs.InitialAccount) / (winningShortTrades + losingShortTrades)).ToString("F2") + unit,
                AHPRShort.ToString("F2") + "%",
                GHPRShort.ToString("F2") + "%",
                sharpeRatioShort.ToString("F2")
               };
        }