/// <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>
 ///     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>
        ///     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];
        }