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