python指数移动平均线

时间:2018-11-01 17:45:15

标签: python excel pandas

我想计算数据的指数移动平均值,像往常一样,有几种不同的方法可以在python中实现它。在我使用它们之前,我想了解一下(验证),结果非常令人惊讶,它们都不一样!

下面,我使用TA-Lib EMA以及pandas ewm功能。我还包括了一个来自excel的数据,使用公式[现在的数据-EMA(先前的数据)] x乘数+ EMA(先前的数据),乘数= 0.1818。

有人可以解释它们的计算方式吗?为什么它们都有不同的结果?哪个是正确的?

df = pd.DataFrame({"Number": [x for x in range(1,7)]*5})
data = df["Number"]
df["TA_MA"] = MA(data, timeperiod = 5)
df["PD_MA"] = data.rolling(5).mean()
df["TA_EMA"] = EMA(data, timeperiod = 5)
df["PD_EMA_1"] = data.ewm(span=5, adjust=False).mean()
df["PD_EMA_2"] = data.ewm(span=5, adjust=True).mean()

    Number  TA_MA  PD_MA    TA_EMA  PD_EMA_1  PD_EMA_2  Excel_EMA
0        1    NaN    NaN       NaN  1.000000  1.000000  NaN
1        2    NaN    NaN       NaN  1.333333  1.600000  NaN
2        3    NaN    NaN       NaN  1.888889  2.263158  NaN
3        4    NaN    NaN       NaN  2.592593  2.984615  NaN
4        5    3.0    3.0  3.000000  3.395062  3.758294  3.00
5        6    4.0    4.0  4.000000  4.263374  4.577444  3.55
6        1    3.8    3.8  3.000000  3.175583  3.310831  3.08
7        2    3.6    3.6  2.666667  2.783722  2.856146  2.89
8        3    3.4    3.4  2.777778  2.855815  2.905378  2.91
9        4    3.2    3.2  3.185185  3.237210  3.276691  3.11
10       5    3.0    3.0  3.790123  3.824807  3.857846  3.45
11       6    4.0    4.0  4.526749  4.549871  4.577444  3.91
12       1    3.8    3.8  3.351166  3.366581  3.378804  3.38
13       2    3.6    3.6  2.900777  2.911054  2.917623  3.13
14       3    3.4    3.4  2.933852  2.940703  2.945145  3.11
15       4    3.2    3.2  3.289234  3.293802  3.297299  3.27
16       5    3.0    3.0  3.859490  3.862534  3.865443  3.58
17       6    4.0    4.0  4.572993  4.575023  4.577444  4.02
18       1    3.8    3.8  3.381995  3.383349  3.384424  3.47
19       2    3.6    3.6  2.921330  2.922232  2.922811  3.21
20       3    3.4    3.4  2.947553  2.948155  2.948546  3.17
21       4    3.2    3.2  3.298369  3.298770  3.299077  3.32
22       5    3.0    3.0  3.865579  3.865847  3.866102  3.63
23       6    4.0    4.0  4.577053  4.577231  4.577444  4.06
24       1    3.8    3.8  3.384702  3.384821  3.384915  3.50
25       2    3.6    3.6  2.923135  2.923214  2.923265  3.23
26       3    3.4    3.4  2.948756  2.948809  2.948844  3.19
27       4    3.2    3.2  3.299171  3.299206  3.299233  3.33
28       5    3.0    3.0  3.866114  3.866137  3.866160  3.64
29       6    4.0    4.0  4.577409  4.577425  4.577444  4.07

0 个答案:

没有答案