неверные данные, поступающие из Ta-Lib - PullRequest
0 голосов
/ 15 марта 2019

Я пытаюсь использовать семейство функций TA_HT_ * в TA-lib. Я заметил очень странную вещь: в зависимости от того, сколько выводов я запрашиваю, я получаю разные значения, относящиеся к одним и тем же входам. Позвольте мне объяснить:

std::vector<double> results(prices.size());
std::vector<double> leadResults(prices.size());
int outBeg;
int outNbElement;
assert(prices.size() > TA_HT_SINE_Lookback());
TA_HT_SINE(0, prices.size() - 1, prices.data(), &outBeg, &outNbElement, results.data(), leadResults.data());
assert(outNbElement >= 1);
auto lastSine = results[outNbElement - 1];

(результаты содержат 0,00143562, -0,0118441, ..., -0,318535, -0,278893) дает другой результат (lastSine), чем

std::array<double, 2> results;
std::array<double, 2> leadResults;
int outBeg;
int outNbElement;
assert(prices.size() > TA_HT_SINE_Lookback() + 1);
TA_HT_SINE(prices.size() - 2, prices.size() - 1, prices.data(), &outBeg, &outNbElement, results.data(), leadResults.data());
assert(outNbElement == 2);
auto lastSine = results[1];

(массив содержит: -0.300364, -0.264885), что, в свою очередь, приводит к другому результату (lastSine), чем

double lastSine;
double lastLeadSine;
int outBeg;
int outNbElement;
assert(prices.size() > TA_TH_SINE_Lookback());
TA_HT_SINE(prices.size() - 1, prices.size() - 1, prices.data(), &outBeg, &outNbElement, &lastSine, &lastLeadSine);
assert(outNbElement == 1);

(здесь lastSine -0.238856) почему? Это ошибка в моем коде или в TA lib? Я ожидаю, что я всегда вычисляю значение, связанное с последней ценой. Я считаю, что я веду библиотеку, как описано в документах .

...