首页 > 解决方案 > 未检测到 TaLib 锤纹

问题描述

我正在开发一个用于检测趋势的自动化项目。这将是一个使用多个不同输入的集成模型,其中一个输入是检测到的烛台模式(已知模式将首先用作输入,最终仅用于对应该自动识别此类模式的嵌入层的完整性检查)。在环顾四周时,我发现了一个库,它应该能够检测像锤子图案这样的烛台图案。当我对其进行测试时,我发现一些结果在我看来并不正确。

import re
import numpy as np
import talib
import plotly.graph_objects as go
import plotly.io as pio
data = np.load('usd-bitcoin.npy')
open_ = data[1, -10:].astype(float)
high_ = data[2, -10:].astype(float)
low_ = data[3, -10:].astype(float)
close_ = data[4, -10:].astype(float)

pio.renderers.default = "png"
fig = go.Figure(data=[go.Candlestick(x=data[0, -10:],
                                     open=open_,
                                     high=high_,
                                     low=low_,
                                     close=close_)])
fig.write_image("plots/fig1.png")

cdls = re.findall('(CDL\w*)', ' '.join(dir(talib)))
for cdl in cdls:
    toExec = getattr(talib, cdl)
    out    = toExec(open_, high_, low_, close_)
    print(str(out) + ' ' + cdl)

正如您在下图中看到的那样,数据和烛台图似乎显示了 2 个锤子形态,一个从开始位置 3 个位置,一个距离结束位置 3 个位置。但是程序的输出显示没有检测到锤子,这是按预期工作还是我应该以某种方式预处理数据?

[0 0 0 0 0 0 0 0 0 0] CDLHAMMER

数据 烛台图

标签: pythoncandlestick-chartta-lib

解决方案


来自 CDL Hammer 文档

https://sourceforge.net/p/ta-lib/code/HEAD/tree/trunk/ta-lib/c/src/ta_func/ta_CDLHAMMER.c#l236

所以你测试的应该是倒锤而不是锤子。

/* 继续计算所请求的范围。

* Must have:
* - small real body
* - long upper shadow
* - no, or very short, lower shadow
* - gap down
* The meaning of "short", "very short" and "long" is specified with TA_SetCandleSettings;
* outInteger is positive (1 to 100): inverted hammer is always bullish;
* the user should consider that an inverted hammer must appear in a downtrend, while this function does not consider it

https://sourceforge.net/p/ta-lib/code/HEAD/tree/trunk/ta-lib/c/src/ta_func/ta_CDLINVERTEDHAMMER.c


推荐阅读