public void OverRideTickEventTestCase() { _tradeHubStrategy.InitializeMarketDataServiceDisruptor(new IEventHandler <RabbitMqRequestMessage>[] { this }); _tickArrived = false; _manualTickEvent = new ManualResetEvent(false); Thread.Sleep(5000); _tradeHubStrategy.Run(); _manualTickEvent.WaitOne(300000, false); Assert.AreEqual(true, _tickArrived, "Tick Arrived"); }
/// <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> /// Starts custom strategy execution /// </summary> public void ExecuteStrategy() { try { // Verify Strategy Instance if (_tradeHubStrategy == null) { //create DB strategy Strategy strategy = new Strategy(); strategy.Name = _strategyType.Name; strategy.StartDateTime = DateTime.Now; // Get new strategy instance var strategyInstance = LoadCustomStrategy.CreateStrategyInstance(_strategyType, CtorArguments); if (strategyInstance != null) { // Cast to TradeHubStrategy Instance _tradeHubStrategy = strategyInstance as TradeHubStrategy; } if (_tradeHubStrategy == null) { if (_asyncClassLogger.IsInfoEnabled) { _asyncClassLogger.Info("Unable to initialize Custom Strategy: " + _strategyType.FullName, _type.FullName, "ExecuteStrategy"); } // Skip execution of further actions return; } // Set Strategy Name _tradeHubStrategy.StrategyName = LoadCustomStrategy.GetCustomClassSummary(_strategyType); // Register Events _tradeHubStrategy.OnStrategyStatusChanged += OnStrategyStatusChanged; _tradeHubStrategy.OnNewExecutionReceived += OnNewExecutionReceived; } if (_asyncClassLogger.IsInfoEnabled) { _asyncClassLogger.Info("Executing user strategy: " + _strategyType.FullName, _type.FullName, "ExecuteStrategy"); } //Overriding if running on simulated exchange ManageBackTestingStrategy(); // Start Executing the strategy _tradeHubStrategy.Run(); } catch (Exception exception) { _asyncClassLogger.Error(exception, _type.FullName, "ExecuteStrategy"); } }
/// <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)); } }
/// <summary> /// Starts custom strategy execution /// </summary> public void ExecuteStrategy() { try { bool parameterChanged = true; // Check if any strategy parameter was changed if (_ctorArguments != null) { parameterChanged = _strategyInstance.ParametersChanged(_ctorArguments); // Get updated values to be used if (parameterChanged) { // Get parameter values to be used _ctorArguments = _strategyInstance.GetParameterValues(); } } // Verify Strategy Instance if (_tradeHubStrategy == null || parameterChanged) { //create DB strategy Strategy strategy = new Strategy(); strategy.Name = _strategyType.Name; strategy.StartDateTime = DateTime.Now; // Get parameter values to be used _ctorArguments = _strategyInstance.GetParameterValues(); // Get new strategy instance var strategyInstance = StrategyHelper.CreateStrategyInstance(_strategyType, _ctorArguments); if (strategyInstance != null) { // Cast to TradeHubStrategy Instance _tradeHubStrategy = strategyInstance as TradeHubStrategy; } if (_tradeHubStrategy == null) { if (_asyncClassLogger.IsInfoEnabled) { _asyncClassLogger.Info("Unable to initialize Custom Strategy: " + _strategyType.FullName, _type.FullName, "ExecuteStrategy"); } // Skip execution of further actions return; } // Set Strategy Name _tradeHubStrategy.StrategyName = StrategyHelper.GetCustomClassSummary(_strategyType); // Set notificaitons preference _tradeHubStrategy.SetNewOrderNotification(_newOrderNotification); _tradeHubStrategy.SetAcceptedOrderNotification(_acceptedOrderNotification); _tradeHubStrategy.SetExecutionNotification(_executionNotification); _tradeHubStrategy.SetRejectionNotification(_rejectionNotification); // Register Events RegisterTradeHubStrategyEvent(); } if (_asyncClassLogger.IsInfoEnabled) { _asyncClassLogger.Info("Executing user strategy: " + _strategyType.FullName, _type.FullName, "ExecuteStrategy"); } //Overriding if running on simulated exchange ManageBackTestingStrategy(); _stopInstanceRequested = false; // Start Executing the strategy _tradeHubStrategy.Run(); } catch (Exception exception) { _asyncClassLogger.Error(exception, _type.FullName, "ExecuteStrategy"); } }