Assuming we send a Bloomberg request for historical data for several securities using API.Net, is there any elegant way to separate / identify the response data of each security. I know that the answer has a "sequenceNumber" field, but I'm not sure how it compares with each security. The following is a snippet of code.
Service refDataService = session.GetService("//blp/refdata"); Request request = refDataService.CreateRequest("HistoricalDataRequest"); Element securities = request.GetElement("securities"); securities.AppendValue("EURUSD CURNCY"); securities.AppendValue("USDJPY CURNCY"); securities.AppendValue("GBPUSD Curncy"); securities.AppendValue("USDCHF Curncy"); Element fields = request.GetElement("fields"); fields.AppendValue("OPEN"); fields.AppendValue("HIGH"); fields.AppendValue("LOW"); fields.AppendValue("PX_LAST"); request.Set("periodicityAdjustment", "CALENDAR"); request.Set("periodicitySelection", "DAILY"); request.Set("startDate", DateTime.Now.AddDays(-30).ToString("yyyyMMdd")); request.Set("endDate", Convert.ToString(null)); session.SendRequest(request, null); while (true) { Event eventObj = session.NextEvent(); foreach (Message msg in eventObj.GetMessages()) { if (msg.MessageType.Equals(Name.GetName("HistoricalDataResponse"))) { Element secDataArray = msg.GetElement("securityData"); Element securityData = secDataArray.GetElement(3); for (int index = 0; index < securityData.NumValues; index++) { Element fieldData = securityData.GetValueAsElement(index); Datetime time = fieldData.GetElementAsDate("date"); decimal? open = fieldData.HasElement("OPEN") ? Convert.ToDecimal(fieldData.GetElementAsFloat64("OPEN")) : new decimal?(); decimal? high = fieldData.HasElement("HIGH") ? Convert.ToDecimal(fieldData.GetElementAsFloat64("HIGH")) : new decimal?(); decimal? low = fieldData.HasElement("LOW") ? Convert.ToDecimal(fieldData.GetElementAsFloat64("LOW")) : new decimal?(); decimal? close = fieldData.HasElement("PX_LAST") ? Convert.ToDecimal(fieldData.GetElementAsFloat64("PX_LAST")) : new decimal?(); } } } }
source share