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); } }
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(); } }