Forex_Strategy_Builder.Dialogs.Generator.Generator.CalculateTheResult C# (CSharp) Метод

CalculateTheResult() приватный Метод

Calculates the generated result
private CalculateTheResult ( bool isSaveEqualResult ) : bool
isSaveEqualResult bool
Результат bool
        bool CalculateTheResult(bool isSaveEqualResult)
        {
            bool isBetter = false;
            cycles++;

            Data.FirstBar = Data.Strategy.SetFirstBar();
            Data.Strategy.AdjustUsePreviousBarValue();

            // Sets default logical group for all slots that are open (not locked or linked).
            foreach (IndicatorSlot slot in Data.Strategy.Slot)
                if (slot.SlotStatus == StrategySlotStatus.Open)
                    slot.LogicalGroup = Data.Strategy.GetDefaultGroup(slot.SlotNumber);

            try
            {
                Backtester.Calculate();

                int balance = (isOOS ? Backtester.Balance(barOOS) : Backtester.NetBalance);
                bool isLimitationsOK = IsLimitationsFulfilled();

                if (isLimitationsOK)
                {
                    if (bestBalance < balance || (bestBalance == balance && (isSaveEqualResult || Data.Strategy.Slots < strategyBest.Slots)))
                    {
                        strategyBest = Data.Strategy.Clone();
                        strategyBest.PropertiesStatus = Data.Strategy.PropertiesStatus;
                        for (int slot = 0; slot < Data.Strategy.Slots; slot++)
                            strategyBest.Slot[slot].SlotStatus = Data.Strategy.Slot[slot].SlotStatus;

                        string description = GenerateDescription();
                        if (balance > bestBalance)
                            AddStrategyToGeneratorHistory(description);
                        else
                            UpdateStrategyInGeneratorHistory(description);
                        SetSrategyDescriptionButton();

                        bestBalance = balance;
                        isBetter = true;
                        isStartegyChanged = true;

                        RefreshSmallBalanceChart();
                        RefreshAccountStatisticas();
                        RebuildStrategyLayout(strategyBest);
                        Top10AddStrategy();
                    }
                    else if (top10Layout.IsNominated(balance))
                    {
                        Top10AddStrategy();
                    }
                }

                SetLabelCyclesText(cycles.ToString());
            }
            catch (Exception excaption)
            {
                string text    = GenerateCalculationErrorMessage(excaption.Message);
                string caption = "Strategy Calculation Error";
                ReportIndicatorError(text, caption);

                isBetter = false;
            }

            return isBetter;
        }