void BloombergQuoteListener_OnMessage(object sender, BloombergMessageEventArgs e)
 {
     if (m_quoteEventHandler != null)
     {
         QuoteMessage quote = BuildQuoteMessage(e.Message, e.SubscriptionId);
         if (quote != null)
         {
             m_quoteEventHandler(null, new QuoteEventArgs(quote, e.SubscriptionId.QuoteObject));
         }
     }
 }
        void utilities_OnMessage(object sender, EventArgs e)
        {
            BloombergMessageEventArgs args = e as BloombergMessageEventArgs;

            Bloomberglp.Blpapi.Message message = args.Message;
            string eventType = message.GetElementAsString("EVENT_TYPE");

            if ((eventType == "QUOTE") || (eventType == "SUMMARY"))
            {
                m_logger.Info(args.Message);
            }
        }
Exemple #3
0
        void m_nativeUtilities_OnMessage(object sender, EventArgs e)
        {
            Action a = delegate
            {
                try
                {
                    BloombergMessageEventArgs args         = e as BloombergMessageEventArgs;
                    ISubscriptionId           subscription = args.SubscriptionId;
                    DataSet1.StockQuotesRow   row          = subscription.QuoteObject as DataSet1.StockQuotesRow;

                    if (checkBoxLog.Checked)
                    {
                        m_log.Info(args.MessageToXml());
                    }

                    bool bUpdated = false;
                    switch (args.Message.MessageType.ToString())
                    {
                    case "SubscriptionStarted":
                        row.Subscribed = true;
                        break;

                    case "SubscriptionTerminated":
                    case "SubscriptionFailure":
                        row.Subscribed = false;
                        break;

                    case "MarketDataEvents":

                        if (args.Message.HasElement("OPEN"))
                        {
                            row.Open = (double)args.Message.GetElementAsFloat64("OPEN");
                            bUpdated = true;
                        }

                        if (args.Message.HasElement("PREV_CLOSE_VALUE_REALTIME"))
                        {
                            row.PrevClose = (double)args.Message.GetElementAsFloat64("PREV_CLOSE_VALUE_REALTIME");
                            bUpdated      = true;
                        }

                        if (args.Message.HasElement("LAST_PRICE"))
                        {
                            if (!row.Closed)
                            {
                                row.LastPrice = (double)args.Message.GetElementAsFloat64("LAST_PRICE");
                                bUpdated      = true;
                            }
                        }

                        if (args.Message.HasElement("BID"))
                        {
                            if (!row.Closed)
                            {
                                row.Bid  = (double)args.Message.GetElementAsFloat64("BID");
                                bUpdated = true;
                            }
                        }
                        if (args.Message.HasElement("ASK"))
                        {
                            if (!row.Closed)
                            {
                                row.Ask  = (double)args.Message.GetElementAsFloat64("ASK");
                                bUpdated = true;
                            }
                        }
                        if (args.Message.HasElement("MID"))
                        {
                            if (!row.Closed)
                            {
                                row.Mid  = (double)args.Message.GetElementAsFloat64("MID");
                                bUpdated = true;
                            }
                        }
                        if (args.Message.HasElement("DELTA_MID_RT"))
                        {
                            if (!row.Closed)
                            {
                                row.Delta = (double)args.Message.GetElementAsFloat64("DELTA_MID_RT");
                                bUpdated  = true;
                            }
                        }
                        if (args.Message.HasElement("GAMMA_MID_RT"))
                        {
                            if (!row.Closed)
                            {
                                row.Gamma = (double)args.Message.GetElementAsFloat64("GAMMA_MID_RT");
                                bUpdated  = true;
                            }
                        }
                        if (args.Message.HasElement("THETA_MID_RT"))
                        {
                            if (!row.Closed)
                            {
                                row.Theta = (double)args.Message.GetElementAsFloat64("THETA_MID_RT");
                                bUpdated  = true;
                            }
                        }
                        if (args.Message.HasElement("VEGA_MID_RT"))
                        {
                            if (!row.Closed)
                            {
                                row.Vega = (double)args.Message.GetElementAsFloat64("VEGA_MID_RT");
                                bUpdated = true;
                            }
                        }
                        if (args.Message.HasElement("IVOL_MID_RT"))
                        {
                            if (!row.Closed)
                            {
                                row.ImpliedVol = (double)args.Message.GetElementAsFloat64("IVOL_MID_RT");
                                bUpdated       = true;
                            }
                        }

                        if (args.Message.HasElement("OFFICIAL_CLOSE_TODAY_RT"))
                        {
                            double closingPrice = (double)args.Message.GetElementAsFloat64("OFFICIAL_CLOSE_TODAY_RT");
                            row.ClosingPrice = closingPrice;
                            bUpdated         = true;
                        }

                        if (args.Message.HasElement("RT_SIMP_SEC_STATUS"))
                        {
                            switch (args.Message.GetElementAsString("RT_SIMP_SEC_STATUS"))
                            {
                            case "CLOS":
                            case "POST":
                            case "OUT":
                                if (!row.Closed)
                                {
                                    row.Closed = true;
                                    bUpdated   = true;
                                }
                                break;

                            default:
                                if (row.Closed)
                                {
                                    row.Closed = false;
                                    bUpdated   = true;
                                }
                                break;
                            }
                        }
                        break;
                    }

                    if (bUpdated)
                    {
                        row.Time = DateTime.Now - DateTime.Today;
                    }
                }
                catch (Exception ex)
                {
                    OnError("Error in message handler", ex);
                }
            };

            if (InvokeRequired)
            {
                BeginInvoke(a);
            }
            else
            {
                a.Invoke();
            }
        }