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")
};
}