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

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

移动平均线是一种金融指标,用于分析长时间内的股票价值,即计算该长时间内的平均值。指数移动平均线(EMA)是移动平均线的种类型。它帮助用户过滤噪音并产生平滑的曲线。在移动平均线中,有两个非常受欢迎。

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

简单移动平均法只是通过对给定的数据进行平均运算来计算平均值,但它在不同的区间内会发生变化。但在指数移动平均法中,也使用简单平均法来计算其平均值,但对新增加的数值给予更多的权重,因为最新的数值具有更大的权重。

公式:

EMA Today =( Value Today *(Constant/ (1+No. Of Days)) )+( EMA Yesterday *(1-(Constant/(1+No. Of Days)) )

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

在Pandas中使用ewm方法

指数加权平均法是用来计算EMA的,它以一个衰减常数作为参数。

语法

DataFrameName.ewm(com=value)

示例 1:

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

# 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()

输出

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

示例 2:

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

# 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()

输出

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

示例 3:

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

# 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()

输出

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程