/// <summary>
        ///     Constructor
        /// </summary>
        public Generator()
        {
            GeneratedDescription = string.Empty;
            strategyBest = Data.Strategy.Clone();
            bestValue = isOOS ? Backtester.Balance(barOOS) : Backtester.NetBalance;
            isGenerating = false;
            isStartegyChanged = false;
            indicatorBlackList = new List<string>();

            colorText = LayoutColors.ColorControlText;

            toolStrip = new ToolStrip();
            strategyField = new StrategyLayout(strategyBest);
            pnlCommon = new FancyPanel(Language.T("Common"));
            pnlCriteriaBase = new FancyPanel(Language.T("Acceptance Criteria"));
            criteriaPanel = new ScrollFlowPanel();
            criteriaControls = new CriteriaControls();
            pnlSettings = new FancyPanel(Language.T("Settings"));
            pnlSorting = new FancyPanel(Language.T("Custom Sorting"));
            pnlTop10 = new FancyPanel(Language.T("Top 10"));
            pnlIndicators = new FancyPanel(Language.T("Indicators"));
            balanceChart = new SmallBalanceChart();
            infpnlAccountStatistics = new InfoPanel();
            progressBar = new ProgressBar();
            lblCalcStrInfo = new Label();
            lblCalcStrNumb = new Label();
            lblBenchmarkInfo = new Label();
            lblBenchmarkNumb = new Label();
            btnAccept = new Button();
            btnGenerate = new Button();
            btnCancel = new Button();
            chbGenerateNewStrategy = new CheckBox();
            chbPreserveSameDirAction = new CheckBox();
            chbPreserveOppDirAction = new CheckBox();
            chbPreservePermSL = new CheckBox();
            chbPreservePermTP = new CheckBox();
            chbPreserveBreakEven = new CheckBox();
            chbInitialOptimization = new CheckBox();
            nudWorkingMinutes = new NumericUpDown();
            chbWorkingMinutes = new CheckBox();

            MaximizeBox = false;
            Icon = Data.Icon;
            FormBorderStyle = FormBorderStyle.FixedDialog;
            BackColor = LayoutColors.ColorFormBack;
            AcceptButton = btnGenerate;
            Text = Language.T("Strategy Generator") + " - " + Data.Symbol + " " + Data.PeriodString + ", " +
                   Data.Bars + " " + Language.T("bars");
            FormClosing += GeneratorFormClosing;

            // Tool Strip
            toolStrip.Parent = this;
            toolStrip.Dock = DockStyle.Top;
            toolStrip.AutoSize = true;

            // Creates a Strategy Layout
            strategyField.Parent = this;
            strategyField.ShowAddSlotButtons = false;
            strategyField.ShowRemoveSlotButtons = false;
            strategyField.ShowPadlockImg = true;
            strategyField.SlotPropertiesTipText = Language.T("Lock or unlock the slot.");
            strategyField.SlotToolTipText = Language.T("Lock, link, or unlock the slot.");

            pnlCommon.Parent = this;
            pnlCriteriaBase.Parent = this;
            pnlSettings.Parent = this;
            pnlSorting.Parent = this;
            pnlTop10.Parent = this;
            pnlIndicators.Parent = this;

            // Small Balance Chart
            balanceChart.Parent = this;
            balanceChart.BackColor = LayoutColors.ColorControlBack;
            balanceChart.Visible = true;
            balanceChart.Cursor = Cursors.Hand;
            balanceChart.IsContextButtonVisible = true;
            balanceChart.PopUpContextMenu.Items.AddRange(GetBalanceChartContextMenuItems());
            balanceChart.Click += AccountOutputClick;
            balanceChart.DoubleClick += AccountOutputClick;
            toolTip.SetToolTip(balanceChart, Language.T("Show account statistics."));
            balanceChart.SetChartData();

            // Info Panel Account Statistics
            infpnlAccountStatistics.Parent = this;
            infpnlAccountStatistics.Visible = false;
            infpnlAccountStatistics.Cursor = Cursors.Hand;
            infpnlAccountStatistics.IsContextButtonVisible = true;
            infpnlAccountStatistics.PopUpContextMenu.Items.AddRange(GetInfoPanelContextMenuItems());
            infpnlAccountStatistics.Click += AccountOutputClick;
            infpnlAccountStatistics.DoubleClick += AccountOutputClick;
            toolTip.SetToolTip(infpnlAccountStatistics, Language.T("Show account chart."));

            // ProgressBar
            progressBar.Parent = this;
            progressBar.Minimum = 1;
            progressBar.Maximum = 100;
            progressBar.Step = 1;

            //Button Generate
            btnGenerate.Parent = this;
            btnGenerate.Name = "Generate";
            btnGenerate.Text = Language.T("Generate");
            btnGenerate.Click += BtnGenerateClick;
            btnGenerate.UseVisualStyleBackColor = true;

            //Button Accept
            btnAccept.Parent = this;
            btnAccept.Name = "Accept";
            btnAccept.Text = Language.T("Accept");
            btnAccept.Enabled = false;
            btnAccept.DialogResult = DialogResult.OK;
            btnAccept.UseVisualStyleBackColor = true;

            //Button Cancel
            btnCancel.Parent = this;
            btnCancel.Text = Language.T("Cancel");
            btnCancel.DialogResult = DialogResult.Cancel;
            btnCancel.UseVisualStyleBackColor = true;

            // BackgroundWorker
            bgWorker = new BackgroundWorker {WorkerReportsProgress = true, WorkerSupportsCancellation = true};
            bgWorker.DoWork += BgWorkerDoWork;
            bgWorker.ProgressChanged += BgWorkerProgressChanged;
            bgWorker.RunWorkerCompleted += BgWorkerRunWorkerCompleted;

            // Apply a Cryptographic Random Seed
            var rng = new RNGCryptoServiceProvider();
            var rndBytes = new byte[4];
            rng.GetBytes(rndBytes);
            int rand = BitConverter.ToInt32(rndBytes, 0);
            random = new Random(rand);

            SetButtonsStrategy();
            SetButtonsGenerator();
            SetPanelCommon();
            SetCriteriaPanel();
            SetPanelSettings();
            SetPanelSorting();
            SetPanelTop10();
            SetPanelIndicators();
            LoadOptions();
            SetCustomSortingUI();
            SetStrategyDescriptionButton();

            chbHideFsb.CheckedChanged += HideFSBClick;

            if (Data.AutostartGenerator)
                BtnGenerateClick(this, new EventArgs());
        }
示例#2
0
        /// <summary>
        /// Constructor
        /// </summary>
        public Generator()
        {
            GeneratedDescription = string.Empty;
            _strategyBest = Data.Strategy.Clone();
            _bestBalance = _isOOS ? Backtester.Balance(_barOOS) : Backtester.NetBalance;
            _isGenerating = false;
            _isStartegyChanged = false;
            _indicatorBlackList = new List<string>();

            ColorText = LayoutColors.ColorControlText;

            TsStrategy = new ToolStrip();
            TsGenerator = new ToolStrip();
            StrategyField = new StrategyLayout(_strategyBest);
            PnlCommon = new FancyPanel(Language.T("Common"));
            PnlLimitations = new FancyPanel(Language.T("Limitations"));
            PnlSettings = new FancyPanel(Language.T("Settings"));
            PnlTop10 = new FancyPanel(Language.T("Top 10"));
            PnlIndicators = new FancyPanel(Language.T("Indicators"));
            BalanceChart = new SmallBalanceChart();
            InfpnlAccountStatistics = new InfoPanel();
            ProgressBar = new ProgressBar();
            LblCalcStrInfo = new Label();
            LblCalcStrNumb = new Label();
            BtnAccept = new Button();
            BtnGenerate = new Button();
            BtnCancel = new Button();
            ChbGenerateNewStrategy = new CheckBox();
            ChbPreservePermSL = new CheckBox();
            ChbPreservePermTP = new CheckBox();
            ChbPreserveBreakEven = new CheckBox();
            ChbInitialOptimization = new CheckBox();
            NudWorkingMinutes = new NumericUpDown();
            LblWorkingMinutes = new Label();

            MaximizeBox = false;
            Icon = Data.Icon;
            FormBorderStyle = FormBorderStyle.FixedDialog;
            BackColor = LayoutColors.ColorFormBack;
            AcceptButton = BtnGenerate;
            Text = Language.T("Strategy Generator") + " - " + Data.Symbol + " " + Data.PeriodString + ", " +
                   Data.Bars + " " + Language.T("bars");
            FormClosing += GeneratorFormClosing;

            // Tool Strip Strategy
            TsStrategy.Parent = this;
            TsStrategy.Dock = DockStyle.None;
            TsStrategy.AutoSize = false;

            // Tool Strip Generator
            TsGenerator.Parent = this;
            TsGenerator.Dock = DockStyle.None;
            TsGenerator.AutoSize = false;

            // Creates a Strategy Layout
            StrategyField.Parent = this;
            StrategyField.ShowAddSlotButtons = false;
            StrategyField.ShowRemoveSlotButtons = false;
            StrategyField.ShowPadlockImg = true;
            StrategyField.SlotPropertiesTipText = Language.T("Lock or unlock the slot.");
            StrategyField.SlotToolTipText = Language.T("Lock, link, or unlock the slot.");

            PnlCommon.Parent = this;
            PnlLimitations.Parent = this;
            PnlSettings.Parent = this;
            PnlTop10.Parent = this;
            PnlIndicators.Parent = this;

            // Small Balance Chart
            BalanceChart.Parent = this;
            BalanceChart.BackColor = LayoutColors.ColorControlBack;
            BalanceChart.Visible = true;
            BalanceChart.Cursor = Cursors.Hand;
            BalanceChart.IsContextButtonVisible = true;
            BalanceChart.PopUpContextMenu.Items.AddRange(GetBalanceChartContextMenuItems());
            BalanceChart.Click += AccountAutputClick;
            BalanceChart.DoubleClick += AccountAutputClick;
            toolTip.SetToolTip(BalanceChart, Language.T("Show account statistics."));
            BalanceChart.SetChartData();

            // Info Panel Account Statistics
            InfpnlAccountStatistics.Parent = this;
            InfpnlAccountStatistics.Visible = false;
            InfpnlAccountStatistics.Cursor = Cursors.Hand;
            InfpnlAccountStatistics.IsContextButtonVisible = true;
            InfpnlAccountStatistics.PopUpContextMenu.Items.AddRange(GetInfoPanelContextMenuItems());
            InfpnlAccountStatistics.Click += AccountAutputClick;
            InfpnlAccountStatistics.DoubleClick += AccountAutputClick;
            toolTip.SetToolTip(InfpnlAccountStatistics, Language.T("Show account chart."));

            // ProgressBar
            ProgressBar.Parent = this;
            ProgressBar.Minimum = 1;
            ProgressBar.Maximum = 100;
            ProgressBar.Step = 1;

            //Button Generate
            BtnGenerate.Parent = this;
            BtnGenerate.Name = "Generate";
            BtnGenerate.Text = Language.T("Generate");
            BtnGenerate.Click += BtnGenerateClick;
            BtnGenerate.UseVisualStyleBackColor = true;

            //Button Accept
            BtnAccept.Parent = this;
            BtnAccept.Name = "Accept";
            BtnAccept.Text = Language.T("Accept");
            BtnAccept.Enabled = false;
            BtnAccept.DialogResult = DialogResult.OK;
            BtnAccept.UseVisualStyleBackColor = true;

            //Button Cancel
            BtnCancel.Parent = this;
            BtnCancel.Text = Language.T("Cancel");
            BtnCancel.DialogResult = DialogResult.Cancel;
            BtnCancel.UseVisualStyleBackColor = true;

            // BackgroundWorker
            BgWorker = new BackgroundWorker {WorkerReportsProgress = true, WorkerSupportsCancellation = true};
            BgWorker.DoWork += BgWorkerDoWork;
            BgWorker.ProgressChanged += BgWorkerProgressChanged;
            BgWorker.RunWorkerCompleted += BgWorkerRunWorkerCompleted;

            SetButtonsStrategy();
            SetButtonsGenerator();
            SetPanelCommon();
            SetPanelLimitations();
            SetPanelSettings();
            SetPanelTop10();
            SetPanelIndicators();
            LoadOptions();
            SetStrategyDescriptionButton();

            ChbHideFsb.CheckedChanged += HideFSBClick;
        }