【发布时间】:2021-04-04 11:04:32
【问题描述】:
编辑!
对于任何想知道同样事情的人,我想通了。下面的实现没有错。事实是 EMA 需要超过 21 个数据点来计算 20 个数据点的指数移动平均线。原因是较早的数据点会影响您尝试计算的数据点。简单来说,我测试了您,您需要大约 40-50 个数据点才能获得与 100 多个数据点相同的 20 天 EMA。
我正在尝试计算股票的 EMA(指数移动平均线),但我的计算有问题。我已经导出了 AAPL 过去 22 天以上的股票数据,当我尝试为此计算 EMA 时,每次都会出现问题。
这是我的示例的数据:https://pastebin.com/raw/2MsgCeQx
这是我尝试计算 20 天 EMA 的解决方案。
#Imported the data as "data".
#With Ta-lib
data["EMA20Talib"] = talib.EMA(data.uClose, timeperiod = 20)
#And with pandas
data["EMA20Pandas"] = data["uClose"].ewm(span=20, adjust = False).mean()
我这里是数据和结果的图像。 https://i.imgur.com/pFtc7x8.png
如您所见,Real20EMA 与 TA-lib 或 pandas 20EMA 不匹配。我做错了什么?
uClose 是我计算 EMA 的列,“Real20EMA”取自交易视图(与 marketwatch 交叉引用以确保其正确)。
我注意到之前这里有一个类似的问题,同样的问题:Pandas' EMA not matching the stock's EMA?。当您对索引进行排序时,问题就在那里解决了,并且我确保我已经正确排序了,但是我仍然遇到同样的问题。
我想使用某些工具获得与其他金融网站相同的数字。奇怪的是,即使我尝试过的这两种方法也没有返回相同的结果。
【问题讨论】: