2015-02-09 2 views
4

В рамках моего проекта для загрузки летучести для многих вариантов, мой предыдущий код сохраняет CHAIN_TICKERS для данного капитала в текстовом файле (BB.txt) в следующем формате:Bloomberg API аргумент прохождение

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 из «станд: : string 'to' bool ', поэтому кажется, что добавленное значение должно быть значением bool? Мне кажется, это сбивает с толку, так как до этого я всегда вводил текст, такой как «MSFT US EQUITY», в поле без проблем.

Итак, как я могу передать свой тикер функции run2, чтобы загрузить волатильность для соответствующего тикера?

(Кроме того, есть более простой способ, чем экспортировать все мои CHAIN_TICKERS в текстовый файл, а затем повторного импорта?)

ответ

2

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

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

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

Работает отлично - любые предложения по второму вопросу? – Olorun

Смежные вопросы