彭博API论证通过

Bloomberg API argument passing

本文关键字:API 彭博      更新时间:2023-10-16

作为我下载许多选项波动率项目的一部分,我以前的代码将给定权益的CHAIN_TICKERS保存在文本文件(BB.txt)中,格式如下:

MSFT US 01/20/17 C23
MSFT US 01/20/17 C25
MSFT US 01/20/17 C30
MSFT US 01/20/17 C33
MSFT US 01/20/17 C35
MSFT US 01/20/17 C38
MSFT US 01/20/17 C40
MSFT US 01/20/17 C43
MSFT US 01/20/17 C45
MSFT US 01/20/17 C47
MSFT US 01/20/17 C50
MSFT US 01/20/17 C52.5
MSFT US 01/20/17 C55
MSFT US 01/20/17 C57.5
MSFT US 01/20/17 C60
MSFT US 01/20/17 C65
MSFT US 01/20/17 C70

首先,我定义了一个结构来保存不同选项的相关数据:

struct option{
string ticker;
char date;
double strike;
double vol;
} options [1000];

现在,为了我的进一步分析,我希望下载这些选项的波动率。目前,我只是逐行读取文本文件,然后在for循环中将ticker传递给下载函数。

std::fstream myfile("BB.txt");
int linenumber = 0;
string linetext;
string ticker;
while (std::getline(myfile, linetext))
{
    options[linenumber].ticker = linetext;
    linenumber++;
}

for (int i = 0; i < linenumber; i++)
{
    std::cout << options[i].ticker << endl;
    ticker = options[i].ticker;
    try
    {
        example.run2(ticker);
    }
    catch (Exception &e)
    {
        std::cerr << "Library Exception!!!" << e.description() << std::endl;
    }
}

我的run2的代码如下:

public void run2(string ticker)
{ ...
request.append("securities", ticker);
request.append("fields", "IVOL_MID");
CorrelationId cid(this);
session.sendRequest(request, cid);
(followed by the eventhandler processMessage taken from the SimpleRefDataOverrideExample.cpp of the Bloomberg API)

现在,问题就在眼前:

request.append("securities", ticker);

错误C2664:无法将参数2从"std::string"转换为"bool",因此附加值似乎必须是bool值?这对我来说似乎很困惑,因为以前我总是毫无问题地在字段中输入"MSFT US EQUITY"之类的文本。

那么,我如何将我的股票代码传递给run2函数,以便下载相应股票代码的波动率呢?

(还有,有没有比将我所有的CHAIN_TICKERS导出到文本文件然后重新导入更简单的方法?)

此处有文档blpapi::Request。在CCD_ 3处于第二位置时不存在CCD_ 2的过载。对bool的抱怨只是你的编译器试图猜测你可能是指哪个过载。

请尝试采用const char *的版本,使用ticker.c_str():

request.append("securities", ticker.c_str());