【问题标题】:MACD with Python Pandas on 0 index always equals to 0带有 Python Pandas 在 0 索引上的 MACD 始终等于 0
【发布时间】:2020-06-05 15:40:12
【问题描述】:

我正在尝试使用 Python Pandas 绘制 MACD 指标。我遇到的问题是当我试图计算短期和长期移动平均线时。

exp1 = close.y.ewm(span=12, adjust=False).mean()
exp2 = close.y.ewm(span=26, adjust=False).mean()

close 是我的数据框,其中包含指数和股票收盘价的两列。我从 Alpha Vantage API 获取股票 TIME_SERIES_INTRADAY 信息。

现在由于某种原因,我总是在exp1exp2 的第一个索引中得到相同的结果

exp1

exp2

如您所见,两个系列的 0 索引相同,而后面的数据不同。所以当我尝试计算 MACD 时,最后一个图形点总是等于 0。

macd = exp1 - exp2

我认为这对于 MACD 来说可能是正常的,但是我所看到的每张 MACD 图表,MACD 和单线之间的最后一个点都不在 0(如雅虎财经的图片所示)

所以我不确定我做错了什么。

【问题讨论】:

  • 是关于 MACD 的问题,还是关于熊猫中 ewm 的行为?

标签: python pandas moving-average alpha-vantage


【解决方案1】:

你正在做的很好。您看到的第一个数据点的奇怪行为是因为您的 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 日及以后的数据。

* 注意 - pandas' documentation 关于 EWM 声明“......假设 ?0 不是一个普通值,而是直到该点的无限级数的指数加权矩”。

【讨论】:

  • 我有一种感觉,这样的事情会是问题所在。但是我该如何解决呢?我是否需要一些如何按降序重新排序索引,以便 ewm 正确查看历史记录?
  • 更新了帖子。请参阅以“简单解决方案”开头的段落。
猜你喜欢
  • 2017-01-18
  • 1970-01-01
  • 1970-01-01
  • 2021-07-21
  • 2021-06-16
  • 1970-01-01
  • 2012-09-02
  • 1970-01-01
  • 2016-03-13
相关资源
最近更新 更多