/// <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));
            }
        }