void UpdateJournalData()
{
asJournalData = new string[shownPos, columns];
aiPositionIcons = new Image[shownPos];
for (int pos = firstPos; pos < firstPos + shownPos; pos++)
{
int row = pos - firstPos;
int bar = Backtester.PosCoordinates[pos].Bar;
Position position = Backtester.PosFromNumb(pos);
string posAmount;
if (Configs.AccountInMoney)
posAmount = (position.PosDir == PosDirection.Short ? "-" : "") +
(position.PosLots * Data.InstrProperties.LotSize).ToString();
else
posAmount = position.PosLots.ToString();
string profitLoss;
if (Configs.AccountInMoney)
profitLoss = position.MoneyProfitLoss.ToString("F2");
else
profitLoss = position.ProfitLoss.ToString("F2");
string floatingPL;
if (Configs.AccountInMoney)
floatingPL = position.MoneyFloatingPL.ToString("F2");
else
floatingPL = position.FloatingPL.ToString("F2");
int p = 0;
asJournalData[row, p++] = (pos + 1).ToString();
asJournalData[row, p++] = (bar + 1).ToString();
asJournalData[row, p++] = Data.Time[bar].ToString(Data.DF) + Data.Time[bar].ToString(" HH:mm");
asJournalData[row, p++] = Language.T(position.Transaction.ToString());
asJournalData[row, p++] = Language.T(position.PosDir.ToString());
asJournalData[row, p++] = posAmount;
asJournalData[row, p++] = position.FormOrdPrice.ToString(Data.FF);
asJournalData[row, p++] = position.PosPrice.ToString(Data.FF);
asJournalData[row, p++] = position.RequiredMargin.ToString("F2");
// Charges
if (Configs.AccountInMoney)
{ // in currency
if (position.Transaction == Transaction.Open ||
position.Transaction == Transaction.Add ||
position.Transaction == Transaction.Reverse)
asJournalData[row, p++] = position.MoneySpread.ToString("F2");
else
asJournalData[row, p++] = "-";
if (position.Transaction == Transaction.Transfer)
asJournalData[row, p++] = position.MoneyRollover.ToString("F2");
else
asJournalData[row, p++] = "-";
if (position.Transaction == Transaction.Open ||
position.Transaction == Transaction.Close ||
position.Transaction == Transaction.Add ||
position.Transaction == Transaction.Reduce ||
position.Transaction == Transaction.Reverse)
{
asJournalData[row, p++] = position.MoneyCommission.ToString("F2");
asJournalData[row, p++] = position.MoneySlippage.ToString("F2");
}
else
{
asJournalData[row, p++] = "-";
asJournalData[row, p++] = "-";
}
}
else
{ // In pips
if (position.Transaction == Transaction.Open ||
position.Transaction == Transaction.Add ||
position.Transaction == Transaction.Reverse)
asJournalData[row, p++] = position.Spread.ToString();
else
asJournalData[row, p++] = "-";
if (position.Transaction == Transaction.Transfer)
asJournalData[row, p++] = position.Rollover.ToString("F2");
else
asJournalData[row, p++] = "-";
if (position.Transaction == Transaction.Open ||
position.Transaction == Transaction.Close ||
position.Transaction == Transaction.Add ||
position.Transaction == Transaction.Reduce ||
position.Transaction == Transaction.Reverse)
{
asJournalData[row, p++] = position.Commission.ToString("F2");
asJournalData[row, p++] = position.Slippage.ToString();
}
else
{
asJournalData[row, p++] = "-";
asJournalData[row, p++] = "-";
}
}
// Profit Loss
if (position.Transaction == Transaction.Close ||
position.Transaction == Transaction.Reduce ||
position.Transaction == Transaction.Reverse)
asJournalData[row, p++] = profitLoss;
else
asJournalData[row, p++] = "-";
// Floating Profit Loss
if (position.PosNumb == Backtester.SummaryPosNumb(bar) &&
position.Transaction != Transaction.Close)
asJournalData[row, p++] = floatingPL; //Last position of the bar only
else
asJournalData[row, p++] = "-";
// Balance / Equity
if (Configs.AccountInMoney)
{
asJournalData[row, p++] = position.MoneyBalance.ToString("F2");
asJournalData[row, p++] = position.MoneyEquity.ToString("F2");
}
else
{
asJournalData[row, p++] = position.Balance.ToString("F2");
asJournalData[row, p++] = position.Equity.ToString("F2");
}
asJournalData[row, p++] = Language.T(Backtester.BackTestEval(bar));
// Icons
aiPositionIcons[row] = position.PositionIcon;
}
return;
}