Forex_Strategy_Builder.Journal_Positions.UpdateJournalData C# (CSharp) Метод

UpdateJournalData() защищенный Метод

Updates the journal data from the backtester
protected UpdateJournalData ( ) : void
Результат void
        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;
        }