public void InitializeChartNoStrategy(MainForm mainForm, ContextChart contextChart) { string msig = "ChartFormsManager.InitializeChartNoStrategy(" + contextChart + "): "; this.MainForm = mainForm; if (this.DataSnapshot.ChartSerno == -1) { int charSernoNext = mainForm.GuiDataSnapshot.ChartSernoNextAvailable; bool createdNewFile = this.DataSnapshotSerializer.Initialize(Assembler.InstanceInitialized.AppDataPath, "ChartFormDataSnapshot-" + charSernoNext + ".json", "Workspaces", Assembler.InstanceInitialized.AssemblerDataSnapshot.CurrentWorkspaceName, true, true); this.DataSnapshot = this.DataSnapshotSerializer.Deserialize(); // will CREATE a new ChartFormDataSnapshot and keep the reference for further Serialize(); we should fill THIS object this.DataSnapshot.ChartSerno = charSernoNext; this.DataSnapshotSerializer.Serialize(); } this.ChartForm = new ChartForm(this); this.DataSnapshot.StrategyGuidJsonCheck = "NO_STRATEGY_CHART_ONLY"; if (this.DataSnapshot.ChartSettings == null) { // delete "ChartSettings": {} from JSON to reset to ChartControl>Design>ChartSettings>Properties this.DataSnapshot.ChartSettings = this.ChartForm.ChartControl.ChartSettings; // opening from Datasource => save } else { this.ChartForm.ChartControl.ChartSettings = this.DataSnapshot.ChartSettings; // otherwize JustDeserialized => propagate this.ChartForm.ChartControl.PropagateSettingSplitterDistancePriceVsVolume(); } if (contextChart != null) { // contextChart != null when opening from Datasource; contextChart == null when JustDeserialized this.DataSnapshot.ContextChart = contextChart; } this.DataSnapshotSerializer.Serialize(); this.ChartForm.FormClosed += this.MainForm.MainFormEventManager.ChartForm_FormClosed; //this.ChartForm.CtxReporters.Enabled = false; this.ChartForm.DdbReporters.Enabled = false; this.ChartForm.DdbBacktest.Enabled = false; this.ChartForm.DdbStrategy.Enabled = false; this.ChartForm.MniShowSourceCodeEditor.Enabled = false; this.EventManager = new ChartFormEventManager(this); this.ChartForm.AttachEventsToChartFormsManager(); try { this.PopulateSelectorsFromCurrentChartOrScriptContextLoadBarsSaveBacktestIfStrategy(msig); } catch (Exception ex) { string msg = "PopulateCurrentChartOrScriptContext(): "; Assembler.PopupException(msg + msig, ex); } }
public void InitializeWithStrategy(MainForm mainForm, Strategy strategy) { string msig = "ChartFormsManager.InitializeWithStrategy(" + strategy + "): "; this.MainForm = mainForm; this.Strategy = strategy; //this.Executor = new ScriptExecutor(mainForm.Assembler, this.Strategy); if (this.DataSnapshot.ChartSerno == -1) { int charSernoNext = mainForm.GuiDataSnapshot.ChartSernoNextAvailable; bool createdNewFile = this.DataSnapshotSerializer.Initialize(Assembler.InstanceInitialized.AppDataPath, "ChartFormDataSnapshot-" + charSernoNext + ".json", "Workspaces", Assembler.InstanceInitialized.AssemblerDataSnapshot.CurrentWorkspaceName, true, true); this.DataSnapshot = this.DataSnapshotSerializer.Deserialize(); this.DataSnapshot.ChartSerno = charSernoNext; } this.DataSnapshot.StrategyGuidJsonCheck = strategy.Guid.ToString(); this.DataSnapshotSerializer.Serialize(); if (this.ChartForm == null) { // 1. create ChartForm.Chart.Renderer this.ChartForm = new ChartForm(this); this.ChartForm.FormClosed += this.MainForm.MainFormEventManager.ChartForm_FormClosed; // 2. create Executor with Renderer this.Executor.Initialize(this.ChartForm.ChartControl as ChartShadow, this.Strategy, Assembler.InstanceInitialized.OrderProcessor, Assembler.InstanceInitialized.StatusReporter); // 3. initialize Chart with Executor (I don't know why it should be so crazy) //this.ChartForm.Chart.Initialize(this.Executor); //ScriptExecutor.DataSource: you should not access DataSource before you've set Bars //this.ChartForm.ChartStreamingConsumer.Initialize(this); this.scriptEditorFormFactory = new ScriptEditorFormFactory(this, Assembler.InstanceInitialized.RepositoryDllJsonStrategy); this.ChartForm.CtxReporters.Items.AddRange(this.ReportersFormsManager.MenuItemsProvider.MenuItems.ToArray()); this.EventManager = new ChartFormEventManager(this); this.ChartForm.AttachEventsToChartFormsManager(); } else { // we had chart already opened with bars loaded; then we clicked on a strategy and we want strategy to be backtested on these bars this.Executor.Initialize(this.ChartForm.ChartControl as ChartShadow, this.Strategy, Assembler.InstanceInitialized.OrderProcessor, Assembler.InstanceInitialized.StatusReporter); if (this.ChartForm.CtxReporters.Items.Count == 0) { this.ChartForm.CtxReporters.Items.AddRange(this.ReportersFormsManager.MenuItemsProvider.MenuItems.ToArray()); } } if (this.DataSnapshot.ChartSettings == null) { this.DataSnapshot.ChartSettings = this.ChartForm.ChartControl.ChartSettings; // opening from Datasource => save } else { this.ChartForm.ChartControl.ChartSettings = this.DataSnapshot.ChartSettings; // otherwize JustDeserialized => propagate this.ChartForm.ChartControl.PropagateSettingSplitterDistancePriceVsVolume(); } //this.ChartForm.CtxReporters.Enabled = true; this.ChartForm.DdbReporters.Enabled = true; this.ChartForm.DdbStrategy.Enabled = true; this.ChartForm.DdbBacktest.Enabled = true; this.ChartForm.MniShowSourceCodeEditor.Enabled = !this.Strategy.ActivatedFromDll; try { //I'm here via Persist.Deserialize() (=> Reporters haven't been restored yet => backtest should be postponed); will backtest in InitializeStrategyAfterDeserialization this.PopulateSelectorsFromCurrentChartOrScriptContextLoadBarsSaveBacktestIfStrategy(msig, true, true); } catch (Exception ex) { string msg = "PopulateCurrentChartOrScriptContext(): "; Assembler.PopupException(msg + msig, ex); } }