Python计算MACD的误区
指数函数是重要的基本初等函数之一。一般地,y=a^x函数(a为常数且以a>0,a≠1)叫做指数函数,函数的定义域是 R 。
df['EMA_short'] = df['收盘价_复权'].ewm(span=12, adjust=False).mean()
df['EMA_long'] = df['收盘价_复权'].ewm(span=26, adjust=False).mean()
span=12不能实现取出过去12天的数据。
alpha=2/(1+span),span=12意味着df[‘EMA_short’]中每个数都由上一个df[‘EMA_short’]和df[‘收盘价_复权’]生成,上一个df[‘EMA_short’]的权重为11/13,df[‘收盘价_复权’]的权重为2/13
同样的数据,上图为上面方法计算的MACD,下图为下面方法计算出的MACD,结果并不相同。
同样,上下图是两种不同方法的ema,12日线和36日线。
正确的代码应该如下:
# 计算MACD
df['EMA_short'] = df['收盘价_复权'].ewm(com=1, adjust