Exemple #1
0
        /// <summary>
        /// Executes single iteration of the given strategy instance
        /// </summary>
        public double ExecuteStrategy(double alpha, double beta, double gemma, double epsilon)
        {
            //SetStrategyParameters(alpha, beta, gemma, epsilon);

            _manualReset = new ManualResetEvent(false);

            // Update Strategy Parameters
            _tradeHubStrategy.SetParameters(new object[] { alpha, beta, gemma, epsilon });

            // Reset Statistics for current iteration
            _statistics.ResetAllValues();

            // Start Strategy Execution
            _tradeHubStrategy.Run();

            // Wait for the strategy to execute
            _manualReset.WaitOne();

            ////Dispose Object
            //_tradeHubStrategy.Dispose();

            //// Force garbage collector to free memory
            //GC.Collect();
            //GC.WaitForPendingFinalizers();

            //ExecuteStrategy(alpha, beta, gemma, epsilon);

            // return current iterations PnL
            return((double)_statistics.GetRisk());
        }
        /// <summary>
        /// Execute Strategy iteration to calculate Fitness
        /// </summary>
        /// <returns>Return Strategy's Fitness for current execution</returns>
        public double ExecuteStrategy(double[] values)
        {
            try
            {
                _manualReset = new ManualResetEvent(false);

                //convert all parameters to object.
                object[] array = new object[values.Length];
                for (int i = 0; i < values.Length; i++)
                {
                    array[i] = values[i];
                }
                // Update Strategy Parameters
                _tradeHubStrategy.SetParameters(array);

                // Reset Statistics for current iteration
                _statistics.ResetAllValues();
                _orderExecutor.Clear();

                // Start Strategy Execution
                _tradeHubStrategy.Run();

                // Wait for the strategy to execute
                _manualReset.WaitOne();

                // Clear subscription maps
                _dataHandler.ClearMaps();
                _tradeHubStrategy.ClearOrderMap();

                // return current iterations risk
                return(-1 * (double)_tradeHubStrategy.GetObjectiveFunctionValue());
            }
            catch (Exception exception)
            {
                _logger.Error(exception, _type.FullName, "ExecuteStrategy");
                return(default(double));
            }
        }