假设我们使用.Net API发送彭博历史数据请求以获取多种证券,是否有任何优雅的方法来分离/识别每种证券的响应数据。我知道响应中有一个字段``sequenceNumber'',但不确定如何它映射到每个证券。我的代码段如下。
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 …Run Code Online (Sandbox Code Playgroud) 我正在努力克服使用.Net API 3.0从Bloomberg获取每小时OPEN,HIGH,LOW和LAST_PRICE快照的逻辑.我用google搜索过很多次但没有运气!任何有关这方面的帮助将非常感激.
我试图在Bloomberg .Net API(C#)中找到等效的以下VBA BDH功能.
BDH(B5,C6:F6,TODAY()-30,"","BarTp=T","BarSz=120","days=T","Dir=V","Dts=S",,"Quot??e=C","UseDPDF=Y","Sort=D",,"cols=5;rows=271")
Run Code Online (Sandbox Code Playgroud)
其中B5是安全名称,C6:F6包含OPEN,HIGH,LOW和LAST_PRICE字段.我已经尝试了Intraday Bar请求,但它没有返回与此BDH函数返回的值相同的值.此外,历史数据请求没有HOURLY间隔选项,它从DAILY间隔开始.
以下是我到目前为止尝试过的代码:
BBService refDataService = session.GetService("//blp/refdata");
BBRequest request = refDataService.CreateRequest("IntradayBarRequest");
request.Set("security", "SPX INDEX");
request.Set("eventType", "TRADE");
request.Set("interval", 120); // bar interval in minutes
request.Set("startDateTime", new BBDateTime(2012, 08, 11, 07, 30, 0, 0));
request.Set("endDateTime", new BBDateTime(2012, 08, 20, 18, 30, 0, 0));
session.SendRequest(request, null);
Run Code Online (Sandbox Code Playgroud)