4

我正在努力使用 .Net API 3.0 从 Bloomberg 获取每小时 OPEN、HIGH、LOW 和 LAST_PRICE 快照的逻辑。我用谷歌搜索了很多次,但没有运气!对此的任何帮助将不胜感激。

我试图在 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") 

其中 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);
4

2 回答 2

6

在 Bloomberg API 发行版中,查看出色的“示例”文件夹。

下面的示例应用程序实现了您的请求。:

\blp\API\APIv3\DotnetAPI\v3.2.9.0\examples\WinForm\C#\SimpleIntradayBarExample

基本上“核心”是这样的:

        Service refDataService = d_session.GetService("//blp/refdata");
        // create intraday bar request 
        Request request = refDataService.CreateRequest("IntradayBarRequest");
        // set request parameters
        request.Set("eventType", "TRADE");
        request.Set("security", "SPX Index");
        DateTime startDate = dateTimePickerStartDate.Value;
        DateTime endDate = dateTimePickerEndDate.Value;
        request.Set("startDateTime", new BDateTime(startDate.Year, startDate.Month, startDate.Day,
                startDate.Hour, startDate.Minute, startDate.Second, 0));
        request.Set("endDateTime", new BDateTime(endDate.Year, endDate.Month, endDate.Day,
            endDate.Hour, endDate.Minute, endDate.Second, 0));
        request.Set("gapFillInitialBar", True);
        request.Set("interval",60);
        // create correlation id
        CorrelationID cID = new CorrelationID(1);
        d_session.Cancel(cID);
        // send request
        d_session.SendRequest(request, cID);
        toolStripStatusLabel1.Text = "Submitted request. Waiting for response...";

提交后,您必须接受彭博回复,解析并使用它。

快乐编码。

编辑:

请查找示例 C# 代码的结果以及 Bloomberg 提出的等效请求。请记住时区的差异!当您使用 C# 编码时,Bloomberg 库使用 UTC,而使用 Excel 插件时区是您的本地区域。

在此处输入图像描述

于 2012-08-23T14:28:30.297 回答
1

您可能已经解决了这个问题,但您需要注意您所处时代的时区。

彭博盘中时间都在格林威治标准时间 - 我认为它在某处的文档中说明了这一点。这适用于"IntradayBarRequest""IntradayTickRequest"

注意,这与订阅实时数据(例如使用Subscriptionand Session)不同,后者使用您的本地时区(在您的彭博终端中设置)。也就是说,当然,除非您使用 override "useGMT"

于 2012-08-24T18:19:45.577 回答