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");
                }
            });
        }
Exemple #3
0
 public void AddRun(BacktestingModel testModel, BatchReportModel reportModel)
 {
     _backtestModels.Add(testModel);
     _backtestReports.Add(reportModel);
 }