void simulationPreBarsSubstitute() { bool shouldRaise = false; if (this.BarsOriginal == null) { shouldRaise = true; } else { if (this.BarsOriginal != this.Executor.Bars) { shouldRaise = true; } } try { if (shouldRaise) { this.BarsOriginal = this.Executor.Bars; this.Executor.EventGenerator.RaiseBacktesterBarsIdenticalButEmptySubstitutedToGrowStep1of4(); } this.BarsSimulating = this.BarsOriginal.CloneNoBars("BACKTEST for " + this.BarsOriginal); this.BacktestDataSource = new BacktestDataSource(this.BarsSimulating); this.BarsSimulating.DataSource = this.BacktestDataSource; this.BacktestDataSource.StreamingProvider.ConsumerQuoteRegister( this.BarsSimulating.Symbol, this.BarsSimulating.ScaleInterval, this.backtestQuoteBarConsumer); this.BacktestDataSource.StreamingProvider.ConsumerBarRegister( this.BarsSimulating.Symbol, this.BarsSimulating.ScaleInterval, this.backtestQuoteBarConsumer); this.Executor.BacktestContextInitialize(this.BarsSimulating); // consumers will expect this.BarsOriginal != null this.Executor.EventGenerator.RaiseBacktesterSimulationContextInitializedStep2of4(); } catch (Exception e) { string msg = "PreBarsSubstitute(): Backtester caught a long beard..."; this.Executor.PopupException(msg, e); } finally { this.BarsSimulatedSoFar = 0; setBacktestAborted = false; this.BacktestAborted.Reset(); this.RequestingBacktestAbort.Reset(); //this.BacktestIsRunningBool = true; this.BacktestIsRunning.Set(); // Calling ManualResetEvent.Reset closes the gate. // Threads that call WaitOne on a closed gate will block this.BacktestCompletedQuotesCanGo.Reset(); } }
void simulationPreBarsSubstitute() { bool shouldRaise = false; if (this.BarsOriginal == null) { shouldRaise = true; } else { if (this.BarsOriginal != this.Executor.Bars) shouldRaise = true; } try { if (shouldRaise) { this.BarsOriginal = this.Executor.Bars; this.Executor.EventGenerator.RaiseBacktesterBarsIdenticalButEmptySubstitutedToGrowStep1of4(); } this.BarsSimulating = this.BarsOriginal.CloneNoBars("BACKTEST for " + this.BarsOriginal); this.BacktestDataSource = new BacktestDataSource(this.BarsSimulating); this.BarsSimulating.DataSource = this.BacktestDataSource; this.BacktestDataSource.StreamingProvider.ConsumerQuoteRegister( this.BarsSimulating.Symbol, this.BarsSimulating.ScaleInterval, this.backtestQuoteBarConsumer); this.BacktestDataSource.StreamingProvider.ConsumerBarRegister( this.BarsSimulating.Symbol, this.BarsSimulating.ScaleInterval, this.backtestQuoteBarConsumer); this.Executor.BacktestContextInitialize(this.BarsSimulating); // consumers will expect this.BarsOriginal != null this.Executor.EventGenerator.RaiseBacktesterSimulationContextInitializedStep2of4(); } catch (Exception e) { string msg = "PreBarsSubstitute(): Backtester caught a long beard..."; this.Executor.PopupException(msg, e); } finally { this.BarsSimulatedSoFar = 0; setBacktestAborted = false; this.BacktestAborted.Reset(); this.RequestingBacktestAbort.Reset(); //this.BacktestIsRunningBool = true; this.BacktestIsRunning.Set(); // Calling ManualResetEvent.Reset closes the gate. // Threads that call WaitOne on a closed gate will block this.BacktestCompletedQuotesCanGo.Reset(); } }