コード例 #1
0
        /// <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;
        }
コード例 #2
0
        /// <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");
            }
        }
コード例 #3
0
 /// <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;
 }