Python 中的指数移动平均值

2025年03月17日 | 阅读 9 分钟

移动平均线是当我们查找特定时期内股票或份额的趋势时必不可少的指标。移动平均线严格分析时间序列;因此,它们对于经济学家、交易员和分析师来说非常有用,可以深入了解市场趋势,识别关键表现和支撑位,并跟踪任何股票的过去和未来表现。

交易员通常在入场和出场点使用移动平均线,并帮助他们衡量趋势、任何交易中证券的强度以及预测股票的未来趋势。

移动平均线主要有三种类型。它们是简单移动平均线(SMA)、加权移动平均线(WMA)和指数移动平均线(EMA)。SMA 是最基本的一种。它简单地找出 m 个数据点的平均值,其中 m 是给定 MA 的周期。加权移动平均线为 SMA 中涉及的数据点提供权重。EMA 也与 WMA 相同,因为这两种类型都更侧重于当前或最近的数据。

EMA 是一种加权移动平均线。它们更侧重于最近的数据,因此可以跟踪任何股票在给定期间的表现。这使得这些平均线在对给定期间的价格变化做出反应时更快。

在这里,我们将了解更多关于 EMA 以及如何在 Python 中实现它。

什么是指数移动平均线?

EMA 提供了一种衡量股票平均价格的方法。它更侧重于当前数据点。与 SMA 相比,EMA 对近期价格变动反应更快,并对所有观察值赋予相同权重。

基于先前价格的指数移动平均线(EMA)是一种技术指标,显示证券价格的趋势。因此,EMA 是滞后指标,它们突出股票价格模式而不是预测未来价值。

在确定股票市场的 EMA 时,应考虑以下因素

  • 在市场分析和交易中分析 SMA 和 EMA 时,应遵循相同的预定义规则。
  • 与 SMA 相比,EMA 测量对即使是微小的价格变化也更敏感,并且可以比 SMA 更早地识别市场模式。
  • 由于 EMA 对股票市场的价格变化敏感,因此 EMA 是一种流行的衡量短期走势的指标。
  • 通过 EMA,我们可以更好地理解趋势,从而顺应趋势。在股票市场中,如果股票的 EMA 正在增加,则应考虑购买股票;如果 EMA 正在减少,则应考虑出售股票。
  • EMA 上升表示我们应该进行交易,从而采取行动,而如果 EMA 下降,则表示我们不应该进行任何交易;因此它抵制行动。
  • EMA 并不意味着它可以可靠地预测交易方向(上涨或下跌)。但是,它有助于我们了解趋势的总体方向,但在入场和出场点存在滞后。

指数移动平均线 (EMA) 的计算公式

以下是计算 EMA 的公式

Exponential Moving Average in Python

计算 EMA 的步骤

以下是计算 EMA 的步骤

步骤 1 - 确定简单移动平均线。因此,如果我们希望估计前十天的简单移动平均线,将商品的最新十个值相加,然后将总和除以 10。

例如 - (1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10) / 10 = 5.5

步骤 2 - 使用以下公式计算要乘以特定时期差异的加权常数

EMA(当前) = ((价格(当前) - EMA (之前)) x 乘数) + EMA(之前)

步骤 3 - 现在您已经有了 SMA 和常数乘数的值,您可以使用该公式计算 EMA

(收盘价 - EMA(前一天)) x 乘数 + EMA(前一天)

在这种情况下,EMA 利用前一天的读数,并将所有价格数据合并到其当前值中。先前价格对移动平均线的影响可以忽略不计,但新价格的影响最大。

Exponential Moving Average in Python

Curr = 当前值

Prev = EMA 的先前值

W = 指数加权常数

EMA 告诉你什么?

EMA 计算是计算 10、15、20、50、100 和 200 天移动平均线的好选择。

  • 移动平均收敛散度 (MACD) 和百分比价格振荡器 (PPO) 是使用 12 和 25 天指数移动平均线 (EMA) 计算的,这些被认为是短期平均线。
  • 50 天和 200 天 EMA 被视为长期趋势的指标。
  • 交易员可以发现利用敏锐的 EMA 分析股票的优势。但是,如果此移动平均线显示的指标处理不当,它们可能会造成损害。滞后指标(例如 EMA)确认市场在任何时候如何运作,并说明市场的健康或强劲程度。
  • 趋势分析中的 EMA 有助于减少滞后的负面影响,因为它优先考虑价格活动并且更敏感。这是确定交易入场信号的绝佳方法。
  • 在趋势市场中,EMA 很有用。股票方向的 EMA 和从一个区域到下一个区域的变化率对交易员很有用。EMA 在强劲市场中显示上升趋势,在疲软市场中显示下降趋势。
  • 例如,交易员可能正在投资于积极趋势。如果他借助 EMA 趋势表明牛市趋势的反转或稳定。在这种情况下,这表明他适合转向另一项实质性投资。

现在我们将看到如何在 Python 中计算指数移动平均线

Python 中的 EMA

方法 1

在此示例中,我们不会使用任何内置库或函数。我们将创建自己的算法来计算 EMA。我们将创建一小组数据值以供参考。

代码

输出

The EMA values are:
 [121, 117.64, 118.3, 115.98, 117.39, 118.96, 121.21, 122.27, 124.43, 125.15, 127.35, 129.49, 130.19, 131.82, 131.59, 133.1, 133.35, 134.93, 134.95, 136.36, 136.54]

方法 2

在此示例中,我们将使用 Pandas 库的 emw 函数来计算 EMA。让我们首先看一下此函数的语法。

函数语法

其中 com = 1 / (1 + K),其中 K 是用于计算 EMA 的公式中的平滑因子。

示例 1

我们将计算数据值的 EMA,并使用 matplotlib 库绘制数据和移动平均线。由于 EMA 是一个平均值,它是实际时间序列数据的平滑版本。我们将 com 值取为 2.5,这是我们为 K = 0.28 计算的。然后,我们可以比较我们使用算法计算的 EMA 值和内置 ewm 函数计算的 EMA 值。

代码

输出

EMA:          Values
0   121.000000
1   114.000000
2   116.697248
3   114.110360
4   116.528432
5   118.660629
6   121.293028
7   122.429146
8   124.702267
9   125.382271
10  127.613872
11  129.762086
12  130.409649
13  132.021396
14  131.727681
15  133.241006
16  133.458575
17  135.045557
18  135.032519
19  136.453498
20  136.609775           

我们可以看到 EMA 值与我们之前计算的值接近。因此,这证明该算法给出了 EMA 的合理估计。

示例 2

在此示例中,我们将使用与上一示例中相同的时间序列。但是,我们将看到更改 com 值后对 EMA 的影响。

代码

输出

EMA:          Values
0   121.000000
1   114.333333
2   116.655738
3   114.401084
4   116.364112
5   118.162807
6   120.399265
7   121.504908
8   123.467316
9   124.258843
10  126.171358
11  128.067380
12  128.899659
13  130.385056
14  130.512530
15  131.847603
16  132.287999
17  133.655025
18  133.927954
19  135.156527
20  135.528654

示例 3

在此示例中,我们还将使用与之前相同的时间序列。在这里,我们将为 emw 函数提供不同的 com 值。这次该值将接近零。我们将看到如此小的值如何改变 EMA 计算,并将像上面案例中那样将其可视化。

代码

输出

Exponential Moving Average in Python

指数移动平均线和简单移动平均线之间的差异

  • 分析师和交易员使用 EMA 和 SMA 通过平滑原始数据值来衡量时间序列趋势。它有助于平滑波动,这将使分析更容易。以下是简单移动平均线和指数移动平均线之间的主要区别。
  • SMA 更倾向于计算特定时期内时间序列数据的平均值。然而,EMA 倾向于发现数据的当前趋势。
  • 这两者之间的另一个区别是,EMA 需要超过十天的数据才能给出正确的 10 天 EMA 衡量标准。
  • 由于 EMA 对数据值使用指数权重,因此它对数据值的波动或变化稍微更敏感。这使得它在识别趋势方面效率更高。甚至比 SMA 更快。EMA 的这一特性使其在股票市场分析中非常有用。因为 EMA 的结果将是最新的。
  • SMA 和 EMA 在计算平均值方面很重要,但 EMA 估计趋势比 SMA 快得多。因此,EMA 更适合短期分析。

指数移动平均线的局限性

  • 一部分分析师认为,在衡量趋势时应强调当前数据,因为它增加了更多价值。然而,一些分析师认为,过分强调当前数据将导致研究中引入偏差,从而导致更多的假阳性案例。
  • EMA 的另一个改进领域是它依赖于过去的数据,这通常不涉及未来趋势。
  • 基于 EMA,我们无法决定特定资产的价值未来会增加还是减少。因此,它无法确定地预测属性的未来趋势。
  • 它容易受到不必要的价值波动的影响。