python - 未检测到 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
解决方案
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
推荐阅读
- php - 使用 foreach 循环将数组转换为 json
- python - 使用格式命令进行 python 字符串操作
- css - cdk-virtual-scroll-viewport 在 Firefox 63.0 版上隐藏滚动条
- python - 如何在 vscode python 交互窗口中显示函数 doc?
- kubernetes - 如何在同一个命名空间中部署多个大使 daemon-set - kuberntes
- python - 如何将解析的 xml 保存为 txt?
- javascript - 从路由中释放 URL
- python - 如何从矩阵中删除行
- python - Python比较关系数据库中两个表之间的数百万行和数百列
- python - 如何标记一个字符串(其中包含有关数学计算和浮点数的数据)?