/// <summary> /// Updates the journal data from the backtester /// </summary> void UpdateJournalData() { asJournalData = new string[shownBars, columns]; aiPositionIcons = new Image[shownBars]; for (int bar = firstBar; bar < firstBar + shownBars; bar++) { int row = bar - firstBar; asJournalData[row, 0] = (bar + 1).ToString(); asJournalData[row, 1] = Data.Time[bar].ToString(Data.DF); asJournalData[row, 2] = Data.Time[bar].ToString("HH:mm"); asJournalData[row, 3] = Data.Open[bar].ToString(Data.FF); asJournalData[row, 4] = Data.High[bar].ToString(Data.FF); asJournalData[row, 5] = Data.Low[bar].ToString(Data.FF); asJournalData[row, 6] = Data.Close[bar].ToString(Data.FF); asJournalData[row, 7] = Data.Volume[bar].ToString(); if (Backtester.IsPos(bar)) { asJournalData[row, 8] = Language.T(Backtester.SummaryTrans(bar).ToString()); asJournalData[row, 9] = Language.T(Backtester.SummaryDir(bar).ToString()); if (Configs.AccountInMoney) { string sign = Backtester.SummaryDir(bar) == PosDirection.Short ? "-" : ""; asJournalData[row, 10] = sign + Backtester.SummaryAmount(bar).ToString(); } else { asJournalData[row, 10] = Backtester.SummaryLots(bar).ToString(); } asJournalData[row, 11] = Backtester.SummaryPrice(bar).ToString(Data.FF); if (Configs.AccountInMoney) { // Profit Loss if (Backtester.SummaryTrans(bar) == Transaction.Close || Backtester.SummaryTrans(bar) == Transaction.Reduce || Backtester.SummaryTrans(bar) == Transaction.Reverse) { asJournalData[row, 12] = Backtester.MoneyProfitLoss(bar).ToString("F2"); } else { asJournalData[row, 12] = "-"; } // Floating Profit Loss if (Backtester.SummaryTrans(bar) != Transaction.Close) { asJournalData[row, 13] = Backtester.MoneyFloatingPL(bar).ToString("F2"); } else { asJournalData[row, 13] = "-"; } } else { // Profit Loss if (Backtester.SummaryTrans(bar) == Transaction.Close || Backtester.SummaryTrans(bar) == Transaction.Reduce || Backtester.SummaryTrans(bar) == Transaction.Reverse) { asJournalData[row, 12] = Backtester.ProfitLoss(bar).ToString(); } else { asJournalData[row, 12] = "-"; } // Floating Profit Loss if (Backtester.SummaryTrans(bar) != Transaction.Close) { asJournalData[row, 13] = Backtester.FloatingPL(bar).ToString(); } else { asJournalData[row, 13] = "-"; } } // Icons aiPositionIcons[row] = Backtester.SummaryPositionIcon(bar); } else { // Icons aiPositionIcons[row] = Properties.Resources.pos_square; } if (Configs.AccountInMoney) { asJournalData[row, 14] = Backtester.MoneyBalance(bar).ToString("F2"); asJournalData[row, 15] = Backtester.MoneyEquity(bar).ToString("F2"); } else { asJournalData[row, 14] = Backtester.Balance(bar).ToString(); asJournalData[row, 15] = Backtester.Equity(bar).ToString(); } asJournalData[row, 16] = Backtester.SummaryRequiredMargin(bar).ToString("F2"); asJournalData[row, 17] = Backtester.SummaryFreeMargin(bar).ToString("F2"); asJournalData[row, 18] = Language.T(Backtester.BackTestEval(bar)); } return; }