public OptimizerResults(OptimizerGrid optimizer) { InitializeComponent(); _optimizer = optimizer; ResultGrid.ItemsSource = _optimizer.Results; }
private void OptimizeSettings() { // we only optimize settings on the top instance, // not those used for walk-forward optimization if (!IsOptimizing) { // enable optimizer parameters foreach (var s in OptimizerParams) { s.Value.IsEnabled = true; } // run optimization var optimizer = new OptimizerGrid(this, false); var end = SimTime[0]; var start = end - TimeSpan.FromDays(90); optimizer.Run(start, end); // apply parameters from best result var best = optimizer.Results .OrderByDescending(r => r.Fitness) .FirstOrDefault(); optimizer.SetParametersFromResult(best); } }
private void SelectAlgo(string algoLookupName) { ClearLog(); _currentAlgorithm = null; _currentAlgorithmInfo = null; _optimizer = null; RunButton.IsEnabled = false; MenuEditAlgorithm.IsEnabled = false; ReportButton.IsEnabled = false; OptimizerButton.IsEnabled = false; ResultsButton.IsEnabled = false; var allAlgorithms = TuringTrader.Simulator.AlgorithmLoader.GetAllAlgorithms(); var matchedAlgorithms = allAlgorithms .Where(t => AlgoLookupName(t) == algoLookupName) .ToList(); if (matchedAlgorithms.Count == 1) { AlgorithmInfo algoInfo = matchedAlgorithms.First(); _currentAlgorithmInfo = algoInfo; GlobalSettings.MostRecentAlgorithm = algoLookupName; _currentAlgorithm = AlgorithmLoader.InstantiateAlgorithm(algoInfo); _currentAlgorithmTimestamp = _currentAlgorithmInfo.SourcePath != null ? (new FileInfo(_currentAlgorithmInfo.SourcePath).LastWriteTime) : default(DateTime); } UpdateParameterDisplay(); MenuEditAlgorithm.IsEnabled = _currentAlgorithmInfo != null && _currentAlgorithmInfo.SourcePath != null; if (_currentAlgorithm != null) { RunButton.IsEnabled = true; ReportButton.IsEnabled = false; OptimizerButton.IsEnabled = _currentAlgorithm.OptimizerParams.Count > 0; ResultsButton.IsEnabled = false; Title = "TuringTrader - " + _currentAlgorithm.Name; } else { Title = "TuringTrader"; } }
private async void OptimizeButton_Click(object sender, RoutedEventArgs e) { RunButton.IsEnabled = false; ReportButton.IsEnabled = false; OptimizerButton.IsEnabled = false; ResultsButton.IsEnabled = false; AlgoMenu.IsEnabled = false; ClearLog(); var optimizerSettings = new OptimizerSettings(_currentAlgorithm); if (optimizerSettings.ShowDialog() == true) { if (OptimizerGrid.NumIterations(_currentAlgorithm) == 1) { // just a single iteration, no need to run optimizer RunButton.IsEnabled = true; ReportButton.IsEnabled = false; OptimizerButton.IsEnabled = true; ResultsButton.IsEnabled = true; AlgoMenu.IsEnabled = true; _runningOptimization = false; UpdateParameterDisplay(); RunButton_Click(null, null); } else { // run optimizer in background await Task.Run(() => { _optimizer = new OptimizerGrid(_currentAlgorithm); _runningOptimization = true; try { _optimizer.Run(); } catch (Exception exception) { WriteEventHandler( string.Format("EXCEPTION: {0}{1}", exception.Message, exception.StackTrace) + Environment.NewLine); } LogOutput.Dispatcher.BeginInvoke(new Action(() => { RunButton.IsEnabled = true; ReportButton.IsEnabled = false; OptimizerButton.IsEnabled = true; ResultsButton.IsEnabled = true; AlgoMenu.IsEnabled = true; _runningOptimization = false; ResultsButton_Click(null, null); })); }); } } else { RunButton.IsEnabled = true; ReportButton.IsEnabled = false; OptimizerButton.IsEnabled = true; ResultsButton.IsEnabled = false; AlgoMenu.IsEnabled = true; _runningOptimization = false; } }
private void ParamGrid_TargetUpdated(object sender, DataTransferEventArgs e) { NumIterations.Text = string.Format("Total # of Iterations: {0}", OptimizerGrid.NumIterations(_algorithm)); }