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