/// <summary>
        /// Calculates the generated result
        /// </summary>
        private 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);
                }
            }

#if !DEBUG
            try
            {
#endif
            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);
                    }
                    SetStrategyDescriptionButton();

                    _bestBalance       = balance;
                    isBetter           = true;
                    _isStartegyChanged = true;

                    RefreshSmallBalanceChart();
                    RefreshAccountStatisticas();
                    RebuildStrategyLayout(_strategyBest);
                    Top10AddStrategy();
                }
                else if (Top10Field.IsNominated(balance))
                {
                    Top10AddStrategy();
                }
            }

            SetLabelCyclesText(_cycles.ToString(CultureInfo.InvariantCulture));
#if !DEBUG
        }

        catch (Exception exception)
        {
            string       text    = GenerateCalculationErrorMessage(exception.Message);
            const string caption = "Strategy Calculation Error";
            ReportIndicatorError(text, caption);

            isBetter = false;
        }
#endif

            return(isBetter);
        }