/// <summary>
        /// Displays optimization results
        /// </summary>
        private void DisplayOptimizationResults(OptimizationResultGeneticAlgo result)
        {
            try
            {
                if (Logger.IsInfoEnabled)
                {
                    Logger.Info("Parameter Results, PnL=" + result.FitnessValue, _type.FullName, "DisplayOptimizationResults");
                }
                // Update Fitness
                Pnl = Math.Round(result.FitnessValue, 5);

                // Update UI Element
                _currentDispatcher.Invoke(DispatcherPriority.Normal, (Action)(() =>
                {
                    foreach (var info in result.OptimizedParameters)
                    {
                        _parametersInfo.Add(new ParameterStats(info.Key.ToString(), info.Value));
                        if (Logger.IsInfoEnabled)
                        {
                            Logger.Info("Param=" + info.Key + " , Value=" + info.Value, _type.FullName, "DisplayOptimizationResults");
                        }
                    }
                    _parametersInfo.Add(new ParameterStats("Risk", Pnl));
                }));
                Task.Factory.StartNew(() => { EventSystem.Publish <ExecuteNext>(new ExecuteNext()); });
            }
            catch (Exception exception)
            {
                Logger.Error(exception, _type.FullName, "DisplayOptimizationResults");
            }
        }
Exemple #2
0
        private void PublishParameters(int index)
        {
            // Get Optimized parameters info
            Dictionary <int, double> optimizedParameters = ProvideOptimizedParameterInfo(index);

            // Create result to be displayed on UI
            var result = new OptimizationResultGeneticAlgo(_populationArray[index].FitnessMax, optimizedParameters);

            // Publish event to UI
            EventSystem.Publish <OptimizationResultGeneticAlgo>(result);
        }
Exemple #3
0
        /// <summary>
        /// Handles incoming strategy optimization requests
        /// </summary>
        /// <param name="strategyInfo">Information to optimized specified strategy</param>
        private void OptimizeStrategy(OptimizeStrategyGeneticAlgo strategyInfo)
        {
            // Save constructor arguments
            _ctorArguments = strategyInfo.CtorArgs;
            // Save user strategy type
            _strategyType = strategyInfo.StrategyType;
            // Save optimization parameters info
            _optimizationParameters = strategyInfo.OptimzationParameters;
            //save iterations
            _iterations = strategyInfo.Iterations;
            //save population size
            _populationSize = strategyInfo.PopulationSize;
            //initialize range
            if (_ranges == null)
            {
                InitializeRangeArray();
            }

            //ExecuteSingleRun();
            //Initialize Required parameters
            if (InitializeOptimizationParameters())
            {
                int index;
                // Start Optimization
                if ((index = StartOptimizationProcess()) >= 0)
                {
                    // Get Optimized parameters info
                    Dictionary <int, double> optimizedParameters = ProvideOptimizedParameterInfo(index);

                    // Create result to be displayed on UI
                    var result = new OptimizationResultGeneticAlgo(_populationArray[index].FitnessMax, optimizedParameters);
                    // Publish event to UI
                    EventSystem.Publish <OptimizationResultGeneticAlgo>(result);
                    //Dispose();
                }
            }
        }