我正试图用Python绘制一个MACD指示器。我遇到的问题是当我试图计算短期和长期移动平均线时
exp1 = close.y.ewm(span=12, adjust=False).mean()
exp2 = close.y.ewm(span=26, adjust=False).mean()
close
是我的数据框架,有两列用于指数和股票收盘价。我从Alpha VantageAPI获得股票信息
现在由于某种原因,我总是在第一个索引中为exp1
和exp2
得到相同的结果
exp1
exp2
如您所见,两个系列上的0索引是相同的,后面的数据是不同的。所以当我试图计算MACD时,最后一个图点总是等于0
macd = exp1 - exp2
我认为这对MACD来说可能是正常的,但我所看到的每一张MACD图,MACD和单行之间的最后一点都不是0(如雅虎财经的图片所示)
所以我不确定我做错了什么
你现在做的很好。对于第一个数据点,您看到的奇怪行为是EWM假设无限历史*的结果,而实际上我们没有。因此,时间0的EWM(在您的例子中是1743.67500)是时间0时序列的值(基本上,X的平均值是X)。因此,对于时间0,跨度为26的EWM与对于时间0,跨度为12的EWM相同,并且对于时间0,MACD为0
在MACD的上下文中,您(通常)寻找的是MACD和股票(或工具)价值之间的交叉点。MACD和值将在时间0处相遇,但它不是交叉,因为在时间0之前没有任何东西
简单的解决方案是从第N天(如第15天)开始绘制MACD图。也就是说,如果您对6月1日开始的MACD感兴趣,请创建一个数据框,计算5月1日或5月15日开始的MACD,但只绘制6月1日和6月1日的数据图表
*注-pandas' documentation关于EWM的陈述是“……有一个假设:𝑥0不是一个普通值,而是无穷级数到该点的指数加权矩”
相关问题 更多 >
编程相关推荐