2012-01-29 39 views
0

因此,在过去三天里,我一直试图找出TA-Lib与python一起工作。这是我编译成一个dylib(一个.so的Mac版本)和Python脚本编码为一直在呼吁它遵循源:Ctypes TA-Lib,帮助调用函数

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,无论什么阵列值。我无法从0或1更改TA_S_SMA的第四个参数,否则我会收到一个python 138错误,接着是python崩溃。任何人都可以向我解释调用这个函数的正确方法吗?我的C技能是有限的(读0)。

相关链接:

谢谢!

回答

0

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

+0

我会尝试这个并回复你。谢谢。我也是2.7 – NoviceCoding 2012-01-29 04:46:14

0

你应该看看这个TA-Lib Python项目。

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