Ctypes中的TA-Lib,帮助调用函数



所以在过去的三天里,我一直在试图让TA-Lib与python一起工作。这是我编译成dylib(.so的mac版本)的源代码,并一直从如下编码的python脚本中调用它:

from ctypes import *
import numpy
c_float_p = POINTER(c_float)
data = numpy.array([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20])
data = data.astype(numpy.float32)
data_p = data.ctypes.data_as(c_float_p)

dylib = CDLL('libta_lib.dylib')

value = dylib.TA_S_SMA(c_int(0), c_int(data.size - 1), data_p, 0, 19, data_p)

打印值返回2,无论数组值是什么。我不能将TA_S_SMA的第四个参数从0或1更改为0或1,否则我会得到一个python 138错误,然后发生python崩溃。有人能向我解释一下调用这个函数的正确方法吗?我的C技能有限(阅读0)。

有用的链接:

  • SMA函数源代码
  • Tut我当过导游
  • TA Lib源下载链接

谢谢!

几周前我遇到了同样的问题,我找到了这些说明。现在他们没有使用ctypes,但在我看来效果更好。SWIG将为您完成所有包装工作。有几件事需要注意。当你进入Single: Multi:部分时,如果你不知道是哪个,从多开始,如果不起作用,就转到单。再往下看,你会看到他正在将Python 2.3替换为Python 2.6。我使用的是python 2.7,只是用2.7替换了2.6,它就成功了。我不确定这是否适用于更高版本的python,但如果你正在使用它,那么值得一试。希望能有所帮助。

您应该看看这个TA-LibPython项目。

它使用Cython来包装TA-Lib,并且是跨平台的,易于安装,并且比SWIG绑定更快。

最新更新