📜  如何在Python中计算指数移动平均线?

📅  最后修改于: 2022-05-13 01:55:31.603000             🧑  作者: Mango

如何在Python中计算指数移动平均线?

移动平均线是用于长期分析股票价值的财务指标。即计算该长期的平均值。指数移动平均线 (EMA)移动平均线的一种。它可以帮助用户过滤噪音并产生平滑的曲线。在移动平均线中 2 非常受欢迎。

  1. 简单移动平均线
  2. 指数移动平均线

简单移动平均线只是通过对给定数据执行平均操作来计算平均值,但它会随着间隔的变化而变化。但是在指数移动平均线中也使用简单平均线来计算其平均值,但由于最新值具有更大的权重,因此对新添加的值给予更多的权重。

公式

今天的指数移动平均值是使用指数移动平均值的先前值计算的。在这里,较旧的值获得的权重较小,而较新的值获得更多的权重。值权重的减少是使用称为衰减量值计算的。因此,随着天数的增加,价值变得不那么重要。它有助于防止值的波动。

在 Pandas 中使用 ewm 方法

指数加权平均法用于计算以衰减常数为参数的EMA。

句法

示例 1:

由于与原始股票值相比,EMA 值的曲线几乎没有平滑,这表明指数移动平均线的性质。

Python3
# import necessary packages
import pandas as pd
import matplotlib.pyplot as plt
 
# create a dataframe
stockValues = pd.DataFrame(
    {'Stock_Values': [60, 102, 103, 104, 101,
                      105, 102, 103, 103, 102]})
 
# finding EMA
# use any constant value that results in
# good smoothened curve
ema = stockValues.ewm(com=0.4).mean()
 
# Comparison plot b/w stock values & EMA
plt.plot(stockValues, label="Stock Values")
plt.plot(ema, label="EMA Values")
plt.xlabel("Days")
plt.ylabel("Price")
plt.legend()
plt.show()


Python3
# import necessary packages
import pandas as pd
import matplotlib.pyplot as plt
 
# create a dataframe
stockValues = pd.DataFrame(
    {'Stock_Values': [60, 102, 103, 104, 101, 105,
                      102, 103, 103, 102]})
 
# finding EMA
# used constant value as 0.8
ema = stockValues.ewm(com=0.8).mean()
 
# Comparison plot b/w stock values & EMA
plt.plot(stockValues, label="Stock Values", color="black")
plt.plot(ema, label="EMA Values", color="red")
plt.xlabel("Days")
plt.ylabel("Price")
plt.legend()
plt.show()


Python3
# import necessary packages
import pandas as pd
import matplotlib.pyplot as plt
 
# create a dataframe
stockValues = pd.DataFrame(
    {'Stock_Values': [60, 102, 103, 104, 101, 105,
                      102, 103, 103, 102]})
 
# finding EMA
# com value=0.1 (0 approx)
ema = stockValues.ewm(com=0.1).mean()
 
# Comparison plot b/w stock values & EMA
plt.plot(stockValues, label="Stock Values", color="blue")
plt.plot(ema, label="EMA Values", color="green")
plt.xlabel("Days")
plt.ylabel("Price")
plt.legend()
plt.show()


输出

示例 2:

在下面的代码中,我们将采用我们上面使用的相同 DataFrame,但它具有不同com 值,该值与上面的值相比更高。它将作为参数传递给ewm 方法。

Python3

# import necessary packages
import pandas as pd
import matplotlib.pyplot as plt
 
# create a dataframe
stockValues = pd.DataFrame(
    {'Stock_Values': [60, 102, 103, 104, 101, 105,
                      102, 103, 103, 102]})
 
# finding EMA
# used constant value as 0.8
ema = stockValues.ewm(com=0.8).mean()
 
# Comparison plot b/w stock values & EMA
plt.plot(stockValues, label="Stock Values", color="black")
plt.plot(ema, label="EMA Values", color="red")
plt.xlabel("Days")
plt.ylabel("Price")
plt.legend()
plt.show()

输出

示例 3:

在这里,我们将考虑我们在上述 2 个示例中使用相同 DataFrame ,其com 值几乎接近于零,作为参数传递给 ewm 方法。

Python3

# import necessary packages
import pandas as pd
import matplotlib.pyplot as plt
 
# create a dataframe
stockValues = pd.DataFrame(
    {'Stock_Values': [60, 102, 103, 104, 101, 105,
                      102, 103, 103, 102]})
 
# finding EMA
# com value=0.1 (0 approx)
ema = stockValues.ewm(com=0.1).mean()
 
# Comparison plot b/w stock values & EMA
plt.plot(stockValues, label="Stock Values", color="blue")
plt.plot(ema, label="EMA Values", color="green")
plt.xlabel("Days")
plt.ylabel("Price")
plt.legend()
plt.show()

输出