【发布时间】:2016-11-24 09:19:02
【问题描述】:
我的原始数据框是这样的:
Date C
0 a
1 b
2 c
3 d
这是一个股票数据。 0,1,2,3 是时间,C:Close 是浮点数。
我需要能够将 EMA(指数移动平均)列添加到通过从当前列 C 计算获得的原始数据帧中 以及之前的新列 ('EMA')。
Cr:http://investexcel.net/how-to-calculate-ema-in-excel/
所以结果应该是这样的
C EMA
0 a start value as ema0
1 b (ema0*alpha) + (b * (1-alpha)) as ema1
2 c (ema1*alpha) + (c * (1-alpha)) as ema2
3 d (ema2*alpha) + (d * (1-alpha)) as ema3
4 e (ema3*alpha) + (e * (1-alpha)) as ema4
... ... ....
起始值将是一个简单的平均值,所以我尝试了以下方法。 创造起始价值的第一个条件 但在计算 EMA 值时,它不适用于第二个条件。
ema_period = 30
myalpha = 2/(ema_period+1)
data['EMA'] = np.where(data['index'] < ema_period,data['C'].rolling(window=ema_period, min_periods=ema_period).mean(), data['C']*myalpha +data['EMA'].shift(1)*(1-myalpha) )
【问题讨论】:
-
C 未用于您的 EMA 值定义。这正常吗?
-
非常感谢。你是对的,我已经更正了结果表。