Я пытаюсь сделать некоторый технический анализ эти данные с помощью та Пб библиотека в C ++. Проблема с ta-lib
в том, что существует очень мало (скорее всего, нет, кроме документации) учебников по их использованию в C ++. Я преобразовал open
значения (третий / C-й столбец) в электронной таблице к вектору double vec
размером 124. Я хочу использовать этот вектор для расчета EMA и RSI 10-дневного периода. Это
//headers used
#include <vector>
#include <ta-lib/ta_libc.h>
std::vector <double> vec;
//Technical analysis part of the code
int n=vec.size(); //size of the vector
std::cout <<"size "<< n << ' ';
TA_RetCode retCode;
retCode = TA_Initialize( );
if( retCode != TA_SUCCESS )
std::cout<<"Cannot initialize TA-Lib !\n"<< retCode <"\n";
else
{
std::cout<<"TA-Lib correctly initialized.\n" ;
/* ... other TA-Lib functions can be used here. */
double ma=TA_MA(0,n,vec,10,TA_MAType_EMA);
double rsi=TA_RSI(0,n,vec,10);
std::cout <<"EMA "<< ma <<"\n";
std::cout <<"RSI "<< rsi <<"\n";
TA_Shutdown();
}
Ошибка
ошибка: невозможно преобразовать ‘std :: vector ’в‘ const double * ’для
аргумент «3» для TA_RetCode TA_MA (int, int, const double *, int,
TA_MAType, int *, int *, double *)
Ну, твой код совершенно неверный.
Если вы хотите придерживаться std::vector
тебе нужно пройти
vec.data()
к функциям TA-Lib вместо vec
,
Почему вы думаете TA_MA()
возвращает значение МА? Они все возвращаются
TA_RetCode
с TA_SUCCESS
или код ошибки. Заявлено по ошибке
сообщение, которое вы предоставляете и в
документация.
И есть хороший пример того, как вызвать такую функцию со статическим
массивы.
TA_MA
который являетсяstd::vector<double>
Вы должны объявить один для результатов и предварительно заполнитьstd::vector<double>::data()
снова.Других решений пока нет …