Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Python中的TA Lib在计算ATR时返回nan?_Python_Quantitative Finance_Ta Lib - Fatal编程技术网

为什么Python中的TA Lib在计算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

我试图用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 = 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()。你的问题可能也存在于此。如果一段时间后你在这里没有得到答案,你可能有更好的机会。