bloomberg API:数据馈送用户不允许的字段

bloomberg API: field not permitted to datafeed users

我用bloomberg API(c++)做一个项目。 我已经能够发送带有身份的请求。 例如,我发送这样的请求:

    Request request = session.createRequest("ReferenceDataRequest");
    request.append("securities", "IBM US Equity");
    request.append("fields", "PX_LAST");
    session.sendRequest(request, identity, CorrelationId(20));

发送此请求后,我收到了回复。 但是当我发布响应时,我总是得到一个异常:"NO_AUTH, field not permitted to datafeed users"。 处理响应的函数:

void handleResponseEvent(Event e, Identity identity)
{
    MessageIterator msgIter(e);
    while (msgIter.next())
    {
        Message message = msgIter.message();
        message.print(cout);
    }
}

我知道这是不正确的,因为我没有使用 "identity"。我认为这就是我得到异常 "NO_AUTH" 的原因。 能否请教一下如何发布带有身份的回复?

澄清一下 - 我正在使用 B-PIPE,而不是 D-API 连接到 Bloomberg。

如何初始化传递给 sendRequest() 的 'identity' 参数?如果您使用 Desktop Api (DAPI),则不需要身份参数,可以按以下方式发送请求:

session.sendRequest(request, CorrelationId(20));

使用 B-PIPE,您是否已验证您的 OS_LOGONAPPLICATION 已获得您请求的数据的授权?

如果您从 WAPI 下载 B-PIPE 包,则有一个 (Windows) 演示应用程序可用于独立于您可能使用的任何代码检查您的登录凭据...

/path/to/BPipe/APIv3/bin/BLPAPIDemo.exe

设置您的身份验证类型、主机和端口:

然后通过设置 tickers/fields/dates 并单击 运行 来测试您的数据请求:

如果您遇到错误 - 例如EID 许可问题——您知道您没有该数据的身份验证。如果是这种情况,您需要与贵公司/彭博社代表的 B-PIPE 经理取得联系。

如果您没有收到错误/确实获取了数据,那么问题出在您的代码中的某处...