/// <summary>
 /// Initializes protection parameter.
 /// </summary>
 private void CreateProtectionParameters()
 {
     int par = 0;
     if (Data.Strategy.UsePermanentSL)
     {
         AParameter[par] = new Parameter(OptimizerParameterType.PermanentSL, -1, 0);
         par++;
     }
     if (Data.Strategy.UsePermanentTP)
     {
         AParameter[par] = new Parameter(OptimizerParameterType.PermanentTP, -1, 0);
         par++;
     }
     if (Data.Strategy.UseBreakEven)
     {
         AParameter[par] = new Parameter(OptimizerParameterType.BreakEven, -1, 0);
     }
 }
        /// <summary>
        /// Sets the parameters.
        /// </summary>
        private void SetIndicatorParams()
        {
            _protections = 0;
            _parameters = 0;

            CountParameters();
            CountPermanentProtections();
            CreateControls();
            CreateProtectionParameters();

            for (int prot = 0; prot < _protections; prot++)
            {
                SetParametersValues(prot);
            }

            int param = _protections;
            for (int slot = 0; slot < Data.Strategy.Slots; slot++)
            {
                for (int numParam = 0; numParam < 6; numParam++)
                {
                    if (!Data.Strategy.Slot[slot].IndParam.NumParam[numParam].Enabled) continue;
                    AParameter[param] = new Parameter(OptimizerParameterType.Indicator, slot, numParam);
                    SetParametersValues(param);
                    param++;
                }
            }

            int totalHeight = ArrangeControls();

            if (_parameters == 0)
            {
                PnlParams.Height = 50;
                LblNoParams.Visible = true;
            }
            else
            {
                PnlParams.Height = totalHeight;
            }

            BtnOptimize.Focus();
        }
        /// <summary>
        /// Creates control arrays.
        /// </summary>
        private void CreateControls()
        {
            AParameter = new Parameter[_parameters];
            AchbxParameterName = new CheckBox[_parameters];
            AlblInitialValue = new Label[_parameters];
            AlblParameterValue = new Label[_parameters];
            AnudParameterMin = new NumericUpDown[_parameters];
            AnudParameterMax = new NumericUpDown[_parameters];
            AnudParameterStep = new NumericUpDown[_parameters];
            AlblIndicatorName = new Label[_parameters];

            for (int param = 0; param < _parameters; param++)
            {
                AlblIndicatorName[param] = new Label();
                AchbxParameterName[param] = new CheckBox();
                AlblInitialValue[param] = new Label();
                AlblParameterValue[param] = new Label();
                AnudParameterMin[param] = new NumericUpDown();
                AnudParameterMax[param] = new NumericUpDown();
                AnudParameterStep[param] = new NumericUpDown();
            }

            _initialValues = new double[_parameters];
        }