使用pandas计算指数移动平均值

11

我尝试使用 Pandas 计算 EMA,但结果不太好。我尝试了2种计算技术:

第一种技术是使用 Pandas 的 ewn 函数:

window = 100
c = 2 / float(window + 1)
df['100ema'] = df['close'].ewm(com=c).mean()

但是这个函数的最终结果为2695.4,而真正的结果是2656.2

第二种技术是

window = 100
c = 2 / float(window + 1)
df['100sma'] = df['close'].rolling(window).mean()
df['100ema'] = (c * df['close']) + ((1 - c) * df['100sma'])

结果为2649.1,比第一种方法更接近,但仍然不理想。

sma函数提供了良好的结果。

**编辑**

响应为

df['100ema'] = pd.Series.ewm(df['close'], span=window).mean()

非常感谢您的本地熊猫响应!!! - A. STEFANI
2个回答

7

如果你想在Python中计算EWMA或任何技术指标,我建议使用ta-lib


1
我想使用这个库,而不是自己费尽心思去编写。 - john
我花了好几天的时间,愿意再花几天的时间自己实现其中的20个。谢谢。在我的工作中,我搜索的所有内容中,“Python TA库”都不在其中。 - Hudson Hughes
2
df是我的数据框,‘close’是股票的收盘价。我使用以下指令计算了各种时间段的EMA:
df['ema12'] = talib.EMA(df['close'],timeperiod=12) df['ema18'] = talib.EMA(df['close'],timeperiod=18) df['ema25'] = talib.EMA(df['close'],timeperiod=25)
- KawaiKx

2
expwighted_avg = ts_log.ewm(halflife=12).mean()

其中'ts_log'是时间序列的数据帧或系列

注:Time Series即时间序列


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接