private void OptimizationButton_Click(object sender, RoutedEventArgs e) { Task optimizationManagementTask = new Task(() => { _activityModel.Optimizing = true; int numberUniformSamples = _optimizationConfigurationModel.NumberUniformSamples; //int runCount = 1; _activityModel.PercentComplete = 0; _backtestModel = new BacktestingModel(); Action updatePlots = () => { UpdateOptimizationPlot(); _optimizationResetEvent.Set(); }; _reportModel = new OptimizationBatchReportModel(_backtestModel, _activityModel /*, updatePlots*/); BindOptimizationModel(); Action <Response> doWork = (response) => { RunOptimizationModel(response); _optimizationResetEvent.WaitOne(30000); }; RunOptimization1D(numberUniformSamples, doWork); _activityModel.Optimizing = false; }); optimizationManagementTask.Start(); }
//TOGGLE FOR TEMPORARY TESTING private void RunBacktestButton_Click(object sender, System.Windows.RoutedEventArgs e) { UnbindInitializationModels(); UnbindReportModels(); _backtest.Clear(); _activityModel.Status = "Backtest started."; var tickDataGroups = BacktestingTickFileControl.GetSelectedFilePaths(); _activityModel.NumberTestsToRun = tickDataGroups.Count; _activityModel.NumberTestsCompleted = 0; foreach (var _tickDataGroup in tickDataGroups) { var _backtestingModel = new BacktestingModel(); _backtestingModel.CacheWait = _backtestingConfigurationModel.CacheWait; var _reportModel = new BatchReportModel(_backtestingModel, _activityModel /*, updatePlots*/); var info = TickFileNameInfo.GetTickFileInfoFromLongName(_tickDataGroup.First()); _reportModel.ReportName = "Y:" + info.Year.ToString() + ",M:" + info.Month.ToString() + ",D:" + info.Day.ToString(); _backtest.AddRun(_backtestingModel, _reportModel); _reportModel.RegisterDispatcher(DispatchableType.Fill, FillsTab.Dispatcher); _reportModel.RegisterDispatcher(DispatchableType.Indicator, IndicatorTab.Dispatcher); _reportModel.RegisterDispatcher(DispatchableType.Message, MessagesTab.Dispatcher); _reportModel.RegisterDispatcher(DispatchableType.Order, OrdersTab.Dispatcher); _reportModel.RegisterDispatcher(DispatchableType.Plot, BacktestPlotter.Dispatcher); _reportModel.RegisterDispatcher(DispatchableType.Position, PositionTab.Dispatcher); BindInitializationModels(); _backtestingModel.LoadResponse(_backtestingConfigurationModel.GetFreshResponseInstance()); _backtestingModel.LoadTickData(_tickDataGroup); _backtestingModel.Play(_backtestingConfigurationModel.SelectedPlayToValue); } Task.Factory.StartNew(() => { _activityModel.AllRunsCompleted.WaitOne(); if (_backtest.BacktestReports.Any()) { _backtest.SelectedReport = _backtest.BacktestReports.First(); BindStatisticsModels("Results"); } }); }
public void AddRun(BacktestingModel testModel, BatchReportModel reportModel) { _backtestModels.Add(testModel); _backtestReports.Add(reportModel); }