Передача аргументов API Bloomberg

Как часть моего проекта по загрузке волатильностей для многих опций, мой предыдущий код сохраняет 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.

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 в текстовый файл и затем повторно импортировать?)

4

Решение

Есть документация blpapi::Request Вот.Там нет перегрузки blpapi::Request::append принимая std::string во второй позиции. Жалоба на bool просто ваш компилятор пытается угадать, какую перегрузку вы могли иметь в виду.

Попробуйте вместо версии взять const char *, с помощью ticker.c_str():

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

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector