Example #1
0
        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);
            }
        }
Example #3
0
        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";
            }
        }
Example #4
0
        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;
            }
        }
Example #5
0
 private void ParamGrid_TargetUpdated(object sender, DataTransferEventArgs e)
 {
     NumIterations.Text = string.Format("Total # of Iterations: {0}", OptimizerGrid.NumIterations(_algorithm));
 }