4

我试图摆弄 TA-Lib 函数,试图了解它们如何识别模式。

以下代码产生奇怪的结果

import talib  
import numpy  
sample_data = [  
    ['1/22/14', 10, 18,  5, 20],  
    ['1/23/14', 12, 21,  7, 22],  
    ['1/24/14', 14, 24, 9 , 24],  
    ['1/25/14', 16, 27, 11, 26],  
    ['1/26/14', 18, 30, 13, 28],  
    ['1/27/14', 20, 33, 15, 30],  
    ['1/28/14', 22, 36, 17, 32],  
    ['1/29/14', 24, 39, 19, 34],  
    ['1/30/14', 26, 41, 21, 38],  
    ['1/31/14', 30, 45, 25, 40],  
    ['2/01/14', 43, 44, 42, 43.01],  
    ['2/02/14', 46, 47, 45, 46.01],  
    ['2/03/14', 44, 45, 43, 44.01],  
    ['2/04/14', 40, 55, 35, 50],  
]

# convert data to columns  
sample_data = numpy.column_stack(sample_data)

# extract the columns we need, making sure to make them 64-bit floats  
o = sample_data[1].astype(float)  
h = sample_data[2].astype(float)  
l = sample_data[3].astype(float)  
c = sample_data[4].astype(float)

print(talib.CDLDOJI(o,h,l,c))  

结果是 :

打印(talib.CDLDOJI(o,h,l,c)) [0 0 0 0 0 0 0 0 0 0 0 0 0 0]

如果我在这里查看 ta_global.c

当实体短于前 10 根蜡烛高低范围平均值的 10% 时,实体就像十字星的实体

{ TA_BodyDoji, TA_RangeType_HighLow, 10, 0.1 },

我根据这个定义和 ta_CDLDOJI.c 的定义计算,这里的函数应该产生三个 Doji:

[0 0 0 0 0 0 0 0 0 0 100 100 100 0]

我在这里想念什么?

4

2 回答 2

2

我已经更改了基础数据,使其更加明显

sample_data = [ ['1/22/14', 10, 22, 5, 20], ['1/23/14', 12, 23, 7, 22], ['1/24/14', 14, 24, 9 , 24], ['1/25/14', 16, 27, 11, 26], ['1/26/14', 18, 30, 13, 28], ['1/27/14', 20, 33, 15, 30], ['1/28/14', 22, 36, 17, 32], ['1/29/14', 24, 39, 19, 34], ['1/30/14', 26, 41, 21, 38], ['1/31/14', 30, 45, 25, 40], ['2/01/14', 43, 46, 40, 43.001], ['2/02/14', 46, 54, 38, 46.001], ['2/03/14', 39.99, 40.01, 39.99, 40.01], ['2/04/14', 40, 55, 35, 50], ] 第 12 根蜡烛显然是十字星,而第 13 根蜡烛也应归为此类,如果您要考虑高低而不是 abs(收盘价)。CDLDOJI 函数都将 a 返回为零...

于 2016-06-30T15:29:33.220 回答
0

如果您在 Windows 上运行 python 和 TA-Lib,则会出现此问题,因为安装的 TA-Lib 二进制文件存在问题。

根据https://github.com/mrjbq7/ta-lib从源代码构建后,我在使用 Python 2.7 的 Linux 机器上检查了这一点。正如 truf 在他的评论中指出的那样,输出是正确的。

我观察到您在我的 Windows 10 64 位安装/Python 2.7 中指出的问题,为此我从http://www.lfd.uci.edu/~gohlke/pythonlibs/#ta-lib下载了 TA-Lib 的 whl 文件

Windows 上的最佳解决方案似乎是从头开始构建 TA-Lib。但是在 64 位机器上存在很多问题。更多信息可以在 mrjbq7 的 ta-lib github 页面的问题部分找到。

于 2016-08-15T18:35:36.380 回答