我如何在 C++ 中调用 talib macd?

how can i call talib macd in c++?

我可以在 python 中正确使用 talib MACD 函数,但在 c++ 中失败。

talib 在 python 中易于使用,我可以将其用作:

MACD(close, 12, 26,9) # close is a pandas series

但是当我在 C++ 中使用它时,它让我对参数感到困惑。

我有一个函数可以一次更新一个收盘价,所以我将收盘价序列保存在一个向量中,如下所示:

std::vector<double> close_price;
void f(double new_close) {
  close_price.push_back(new_close);
  std::vector<TA_Real> a(655360, 0.0);
  std::vector<TA_Real> b(655360, 0.0);
  std::vector<TA_Real> c(655360, 0.0);
  int s, n;
  TA_RetCode retCode = TA_MACD(0, close_price.size(), close_price.data(), 3, 12, 1, &s, &n, a.data(), b.data(), c.data());
  assert(retCode == TA_SUCCESS);
}

但断言总是失败,错误消息是:

Error 5119(TA_INTERNAL_ERROR): Unexpected Internal Error - Contact TA-Lib.org

我错过了什么吗?我想我将参数作为 talib 提供的示例传递。

endIdx 是最后一个索引,不是大小。因此,您需要将其称为:

TA_MACD(..., close_price.size() - 1, ...);