示例#1
0
 private void SendMessageToAllComponents(IMessage message)
 {
     if (_memberManagersList == null)
     {
         return;
     }
     foreach (var manager in _memberManagersList)
     {
         manager.HandleMessage(message);
     }
 }
示例#2
0
        private void SendMessageToSubscribers(IMessage message)
        {
            if (SubscriberDic == null)
            {
                return;
            }
            if (!SubscriberDic.ContainsKey(message.APIDataType))
            {
                return;
            }

            lock (_subscriberSync)
            {
                foreach (var subsciber in SubscriberDic[message.APIDataType])
                {
                    subsciber.HandleMessage(message);
                }
            }
        }
示例#3
0
        protected override void HandleMessage(IMessage message)
        {
            //if (Symbol.Equals("MCD"))//For test
            //{}
            switch (message.APIDataType)
            {
            case EapiDataTypes.AccountSummaryData:
                TradingManager.HandleMessage(message);
                OrdersManager.HandleMessage(message);
                AccountSummaryData = message as AccountSummaryData;
                break;

            case EapiDataTypes.SecurityContract:
                SecurityContract = (SecurityContract)message;
                EvaluateTradingEvents();
                break;

            case EapiDataTypes.SecurityData:
                var securityData = (SecurityData)message;

                if (securityData.SecurityContract.Symbol == Symbol)
                {
                    UnlTradingData.UnlSecurityData = securityData;

                    MainSecurityData = securityData;
                    SendMessageToAllComponents(message);
                }
                break;

            case EapiDataTypes.OptionData:
                OptionsManager.HandleMessage(message);
                break;

            case EapiDataTypes.PositionData:
                PositionsDataBuilder.HandleMessage(message);
                break;

            case EapiDataTypes.OrderData:
                OrdersManager.HandleMessage(message);
                break;

            case EapiDataTypes.OrderStatus:
                OrdersManager.HandleMessage(message);
                break;

            case EapiDataTypes.BrokerConnectionStatus:
                var connectionStatusMessage = (BrokerConnectionStatusMessage)message;
                ConnectionStatus = connectionStatusMessage.Status;
                if (connectionStatusMessage.AfterConnectionToApiWrapper)
                {
                    DoWorkAfterConnection();
                }
                SendMessageToAllComponents(message);
                break;

            case EapiDataTypes.MarginData:
                var marginData = (MarginData)message;
                UnlTradingData.Margin = marginData.Margin;
                break;

            case EapiDataTypes.TransactionData:
                //Filter other unl messages:
                var transactionData = message as TransactionData;
                if (transactionData == null)
                {
                    break;
                }

                if (transactionData.OptionData.OptionContract.Symbol.Equals(Symbol) == false)
                {
                    break;
                }

                var tradingManager = _memberManagersList.First(m => m is ITradingManager) as ITradingManager;
                tradingManager?.HandleMessage(message);

                break;

            case EapiDataTypes.ExceptionData:

                break;
            }
            SendMessageToSubscribers(message);
        }