/// <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()); }
/// <summary> /// Initializes main controls of optimizer. /// </summary> private void InitializeControls() { pnlParamsBase = new Panel(); pnlParamsBase2 = new Panel(); pnlCaptions = new Panel(); pnlParams = new Panel(); pnlCriteriaBase = new FancyPanel(Language.T("Acceptance Criteria")); criteriaPanel = new ScrollFlowPanel(); criteriaControls = new CriteriaControls(); pnlSettings = new FancyPanel(Language.T("Settings")); scrollBar = new VScrollBar(); balanceChart = new SmallBalanceChart(); progressBar = new ProgressBar(); btnOptimize = new Button(); btnAccept = new Button(); btnCancel = new Button(); lblNoParams = new Label(); fontIndicator = new Font(Font.FontFamily, 11); colorText = LayoutColors.ColorControlText; // Panel Parameters Base pnlParamsBase.Parent = this; pnlParamsBase.BackColor = LayoutColors.ColorControlBack; pnlParamsBase.Paint += PnlParamsBasePaint; // Panel Captions pnlCaptions.Parent = pnlParamsBase; pnlCaptions.Dock = DockStyle.Top; pnlCaptions.BackColor = LayoutColors.ColorCaptionBack; pnlCaptions.ForeColor = LayoutColors.ColorCaptionText; pnlCaptions.Paint += PnlCaptionsPaint; // Panel Parameters Base 2 pnlParamsBase2.Parent = pnlParamsBase; pnlParamsBase2.BackColor = LayoutColors.ColorControlBack; pnlParamsBase2.Resize += PnlParamsBase2Resize; // ScrollBar scrollBar.Parent = pnlParamsBase2; scrollBar.Dock = DockStyle.Right; scrollBar.TabStop = true; scrollBar.ValueChanged += ScrollBarValueChanged; scrollBar.MouseWheel += ScrollBarMouseWheel; // Panel Parameters pnlParams.Parent = pnlParamsBase2; pnlParams.BackColor = LayoutColors.ColorControlBack; // Label No Parameters lblNoParams.Parent = pnlParams; lblNoParams.Text = Language.T("There are no parameters suitable for optimization."); lblNoParams.AutoSize = true; lblNoParams.Visible = false; // Panel Limitations pnlCriteriaBase.Parent = this; pnlCriteriaBase.Visible = false; // Panel Settings pnlSettings.Parent = this; pnlSettings.Visible = false; // Small Balance Chart balanceChart.Parent = this; balanceChart.BackColor = LayoutColors.ColorControlBack; balanceChart.SetChartData(); // ProgressBar progressBar.Parent = this; progressBar.Minimum = 1; progressBar.Maximum = 100; progressBar.Step = 1; // Button Optimize btnOptimize.Parent = this; btnOptimize.Name = "btnOptimize"; btnOptimize.Text = Language.T("Optimize"); btnOptimize.TabIndex = 0; btnOptimize.Click += BtnOptimizeClick; btnOptimize.UseVisualStyleBackColor = true; // Button Accept btnAccept.Parent = this; btnAccept.Name = "btnAccept"; btnAccept.Text = Language.T("Accept"); btnAccept.TabIndex = 1; btnAccept.Enabled = false; btnAccept.DialogResult = DialogResult.OK; btnAccept.UseVisualStyleBackColor = true; // Button Cancel btnCancel.Parent = this; btnCancel.Text = Language.T("Cancel"); btnCancel.TabIndex = 2; btnCancel.DialogResult = DialogResult.Cancel; btnCancel.UseVisualStyleBackColor = true; // BackGroundWorker bgWorker = new BackgroundWorker { WorkerReportsProgress = true, WorkerSupportsCancellation = true }; bgWorker.DoWork += BgWorkerDoWork; bgWorker.ProgressChanged += BgWorkerProgressChanged; bgWorker.RunWorkerCompleted += BgWorkerRunWorkerCompleted; }
/// <summary> /// Initializes main controls of optimizer. /// </summary> private void InitializeControls() { pnlParamsBase = new Panel(); pnlParamsBase2 = new Panel(); pnlCaptions = new Panel(); pnlParams = new Panel(); pnlCriteriaBase = new FancyPanel(Language.T("Acceptance Criteria")); criteriaPanel = new ScrollFlowPanel(); criteriaControls = new CriteriaControls(); pnlSettings = new FancyPanel(Language.T("Settings")); scrollBar = new VScrollBar(); balanceChart = new SmallBalanceChart(); progressBar = new ProgressBar(); btnOptimize = new Button(); btnAccept = new Button(); btnCancel = new Button(); lblNoParams = new Label(); fontIndicator = new Font(Font.FontFamily, 11); colorText = LayoutColors.ColorControlText; // Panel Parameters Base pnlParamsBase.Parent = this; pnlParamsBase.BackColor = LayoutColors.ColorControlBack; pnlParamsBase.Paint += PnlParamsBasePaint; // Panel Captions pnlCaptions.Parent = pnlParamsBase; pnlCaptions.Dock = DockStyle.Top; pnlCaptions.BackColor = LayoutColors.ColorCaptionBack; pnlCaptions.ForeColor = LayoutColors.ColorCaptionText; pnlCaptions.Paint += PnlCaptionsPaint; // Panel Parameters Base 2 pnlParamsBase2.Parent = pnlParamsBase; pnlParamsBase2.BackColor = LayoutColors.ColorControlBack; pnlParamsBase2.Resize += PnlParamsBase2Resize; // ScrollBar scrollBar.Parent = pnlParamsBase2; scrollBar.Dock = DockStyle.Right; scrollBar.TabStop = true; scrollBar.ValueChanged += ScrollBarValueChanged; scrollBar.MouseWheel += ScrollBarMouseWheel; // Panel Parameters pnlParams.Parent = pnlParamsBase2; pnlParams.BackColor = LayoutColors.ColorControlBack; // Label No Parameters lblNoParams.Parent = pnlParams; lblNoParams.Text = Language.T("There are no parameters suitable for optimization."); lblNoParams.AutoSize = true; lblNoParams.Visible = false; // Panel Limitations pnlCriteriaBase.Parent = this; pnlCriteriaBase.Visible = false; // Panel Settings pnlSettings.Parent = this; pnlSettings.Visible = false; // Small Balance Chart balanceChart.Parent = this; balanceChart.BackColor = LayoutColors.ColorControlBack; balanceChart.SetChartData(); // ProgressBar progressBar.Parent = this; progressBar.Minimum = 1; progressBar.Maximum = 100; progressBar.Step = 1; // Button Optimize btnOptimize.Parent = this; btnOptimize.Name = "btnOptimize"; btnOptimize.Text = Language.T("Optimize"); btnOptimize.TabIndex = 0; btnOptimize.Click += BtnOptimizeClick; btnOptimize.UseVisualStyleBackColor = true; // Button Accept btnAccept.Parent = this; btnAccept.Name = "btnAccept"; btnAccept.Text = Language.T("Accept"); btnAccept.TabIndex = 1; btnAccept.Enabled = false; btnAccept.DialogResult = DialogResult.OK; btnAccept.UseVisualStyleBackColor = true; // Button Cancel btnCancel.Parent = this; btnCancel.Text = Language.T("Cancel"); btnCancel.TabIndex = 2; btnCancel.DialogResult = DialogResult.Cancel; btnCancel.UseVisualStyleBackColor = true; // BackGroundWorker bgWorker = new BackgroundWorker {WorkerReportsProgress = true, WorkerSupportsCancellation = true}; bgWorker.DoWork += BgWorkerDoWork; bgWorker.ProgressChanged += BgWorkerProgressChanged; bgWorker.RunWorkerCompleted += BgWorkerRunWorkerCompleted; }