/// <summary> /// Hooks New Order and Order Rejection events from Order Execution Provider /// </summary> /// <param name="marketOrderProvider">TradeHub Market Order Provider object</param> private void RegisterMarketOrderEvents(IMarketOrderProvider marketOrderProvider) { // Unhook to avoid multiple registrations UnregisterMarketOrderEvents(marketOrderProvider); marketOrderProvider.NewArrived += OnNewArrived; marketOrderProvider.ExecutionArrived += OnExecutionArrived; marketOrderProvider.OrderRejectionArrived += OnOrderRejectionArrived; }
/// <summary> /// Handles New Market Order Request messages from Applications /// </summary> /// <param name="marketOrder">TradeHub Market Order</param> /// <param name="appId">Unique Application ID</param> public void MarketOrderRequestReceived(MarketOrder marketOrder, string appId) { try { if (Logger.IsDebugEnabled) { Logger.Debug( "New Market Order request received from: " + appId + marketOrder.OrderID + " for: " + marketOrder.OrderExecutionProvider, _type.FullName, "MarketOrderRequestReceived"); } IOrderExecutionProvider orderExecutionProvider; if (_providersMap.TryGetValue(marketOrder.OrderExecutionProvider, out orderExecutionProvider)) { IMarketOrderProvider marketOrderProvider = orderExecutionProvider as IMarketOrderProvider; if (marketOrderProvider != null) { // Modify Order ID by appending Application ID in the front marketOrder.OrderID = appId + "|" + marketOrder.OrderID; // Register Market Order Events RegisterMarketOrderEvents(marketOrderProvider); // Send Market Order to Execution Provider marketOrderProvider.SendMarketOrder(marketOrder); } else { if (Logger.IsInfoEnabled) { Logger.Info("Requested provider doesn't support Market Orders", _type.FullName, "MarketOrderRequestReceived"); } } } else { if (Logger.IsInfoEnabled) { Logger.Info( "Order Execution Provider module not available for: " + marketOrder.OrderExecutionProvider, _type.FullName, "MarketOrderRequestReceived"); } } } catch (Exception exception) { Logger.Error(exception, _type.FullName, "MarketOrderRequestReceived"); } }
/// <summary> /// Unhooks New Order and Order Rejection events from Order Execution Provider /// </summary> /// <param name="marketOrderProvider">TradeHub Market Order Provider object</param> private void UnregisterMarketOrderEvents(IMarketOrderProvider marketOrderProvider) { marketOrderProvider.NewArrived -= OnNewArrived; marketOrderProvider.ExecutionArrived -= OnExecutionArrived; marketOrderProvider.OrderRejectionArrived -= OnOrderRejectionArrived; }