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