为什么Python中的TA Lib在计算ATR时返回nan?
我试图用TA Lib获得几个符号(BTCUSDT,ETHUSDT)的ATR,但结果都是“nan”,我不明白为什么 下面是一个示例性数据的最小示例:为什么Python中的TA Lib在计算ATR时返回nan?,python,quantitative-finance,ta-lib,Python,Quantitative Finance,Ta Lib,我试图用TA Lib获得几个符号(BTCUSDT,ETHUSDT)的ATR,但结果都是“nan”,我不明白为什么 下面是一个示例性数据的最小示例: import talib import numpy highs = numpy.array([10697.12, 10706.16, 10744.75, 10747.88, 10745.42]) lows = numpy.array([10683.51, 10694.72, 10705.16, 10728.22, 10727.29]) closes
import talib
import numpy
highs = numpy.array([10697.12, 10706.16, 10744.75, 10747.88, 10745.42])
lows = numpy.array([10683.51, 10694.72, 10705.16, 10728.22, 10727.29])
closes = numpy.array([10696.47, 10705.16, 10728.23, 10742.46, 10730.27])
print(talib.ATR(highs, lows, closes, timeperiod = 5))
以及输出:
[nan nan nan nan nan nan nan nan nan nan nan nan nan nan]
你的例子应该会产生这样的结果
(<TALibResult.OK: 0>, array([nan, nan, nan, nan, nan]))
(<TALibResult.OK: 0>, array([nan, nan, nan, 23.56333333, 21.75222222]))
因为ATR是一个时间周期为N的滚动函数
通常,这些函数的初始“回望”周期(生成输出前所需的观察次数)设置为NaN
从技术上讲,
NaN
s(回望期)的计数取决于传递给滚动平均指标的可选参数(或其中使用的默认值)。但它可能并不等于它。例如,滚动方式指示器的滚动方式。如果您不想从结果数组的开头跳过NaN,但知道要跳过的数据的确切数量,那么您可能会得到此值。我想在python中,这可以通过Ta Lib的抽象API和函数对象的回溯属性来实现。完成后,我已经尽我所能地减少了它,您是对的,它仍然显示出同样的问题。谢谢。您的MRE仍然可以缩短。我编辑了这个问题。我无法验证结果,因为我不想安装TA Lib,所以请检查我的编辑是否改进了帖子。作为一般规则,尽可能简洁,必要时尽可能详细。顺便说一句。你知道吗,还有一个关于定量金融的专门的stackexchange()。你的问题可能也存在于此。如果一段时间后你在这里没有得到答案,你可能有更好的机会。