Bloomberg .Net-API - Antwort-Daten für Mehrere Wertpapiere
Davon aus, dass wir senden, Bloomberg Historische Daten Anforderung für mehrere securities mit .Net-API, gibt es eine elegante Möglichkeit, Sie zu trennen/erkennen response-Daten der jeweiligen Sicherheit.Ich bin mir bewusst, dass es ein Feld "sequenceNumber" in der Antwort aber nicht sicher, wie abgebildet, zu jeder Sicherheit. Mein code-snippet wird unten gegeben.
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?();
}
}
}
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
sequenceNumber
Wert, der zurückgegeben wird, entspricht der Reihenfolge, in der Sie Hinzugefügt haben, werden die Wertpapiere mit dem AufrufAppendValue
Als pro die BLPAPI: Developer ' s Guide:
müssen Sie möglicherweise eine weitere Schleife:
In Java (leicht übertragbar):
Können Sie extrahieren die Bloomberg code aus der
securityData
Element, wie dieses: