3

我正在使用 Bloomberg API 来获取数据。目前,根据开发人员指南,我有 3 个进程以典型方式获取数据。就像是:

Service refDataService = session.getService("//blp/refdata");
Request request = refDataService.createRequest("ReferenceDataRequest");
request.append("securities", "IBM US Equity");
request.append("fields", "PX_LAST");
cid = session.sendRequest(request, null);

这样可行。现在我想将逻辑扩展为更像一个更新队列。我希望每个进程都将他们的请求发送到更新队列进程,该进程又负责创建会话和服务,然后发送请求。但是,我没有看到没有服务创建请求的任何方法。此外,由于请求类型(参考数据、历史数据、日内报价)如此多样并且具有如此不同的属性,因此创建一个我的更新队列可以读取的容器对象并非易事。

关于如何做到这一点的任何想法?我的最终目标是拥有一个进程(我正在调用更新队列),它接收请求列表,删除所有重复项,并以 30 秒的间隔向彭博社发送数据。

谢谢!

4

1 回答 1

1

我更新了jBloomberg库以包含刻度数据。您可以向充当队列的BloombergSession提交不同类型的查询。因此,如果您想提交不同类型的请求,您可以编写如下内容:

RequestBuilder<IntradayTickData> tickRequest =
    new IntradayTickRequestBuilder("SPX Index",
        DateTime.now().minusHours(2),
        DateTime.now());

RequestBuilder<IntradayBarData> barRequest =
    new IntradayBarRequestBuilder("SPX Index",
        DateTime.now().minusHours(2),
        DateTime.now())
        .period(5, TimeUnit.MINUTES);

RequestBuilder<ReferenceData> refRequest =
    new ReferenceRequestBuilder("SPX Index", "NAME");

Future<IntradayTickData> ticks = session.submit(tickRequest);
Future<IntradayBarData> bars = session.submit(barRequest);
Future<ReferenceData> name = session.submit(refRequest);

javadoc中提供了更多示例。

如果您需要定期获取相同的信息,您可以重用构建器并将其与ScheduledThreadPoolExecutor结合使用。

注意:该库仍处于测试状态,所以不要在自动交易的黑匣子中盲目使用它!

于 2013-01-29T00:13:02.530 回答