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