📜  如何计算 R 中的指数移动平均线?(1)

📅  最后修改于: 2023-12-03 14:53:17.055000             🧑  作者: Mango

如何计算 R 中的指数移动平均线?

指数移动平均线(Exponential Moving Average,简称 EMA)是一种广泛应用于技术分析的指标,它给予较高权重给最近时期的数据,同时逐渐降低较早时期数据的权重。在 R 语言中,我们可以使用 TTR 包中的 EMA 函数来计算指数移动平均线。

安装 TTR 包

在开始之前,我们需要先安装 TTR 包。TTR 包提供了许多流行的技术分析函数,包括 EMA 函数。

可以使用以下命令来安装 TTR 包:

install.packages("TTR")

安装完成后,可以使用以下命令加载 TTR 包:

library(TTR)
计算指数移动平均线

TTR 包中的 EMA 函数提供了许多可调参数:

  1. x:数据向量。
  2. n:EMA 的周期。
  3. wilders:逻辑值,如果为 TRUE,则使用 Wilder 的方法计算 EMA,如果为 FALSE,则使用默认方法。Wilder 的方法对于短期交易尤其有用。

以下是在 R 中计算指数移动平均线的示例:

# 创建一个包含随机数的向量
data <- rnorm(100)

# 计算指数移动平均线,周期为 10
ema <- EMA(data, n = 10)

# 输出结果
ema

输出结果:

 [1]         NA         NA         NA         NA         NA         NA         NA         NA         NA -0.0694725
[11] -0.3476817 -0.3995477 -0.3094073 -0.3387086 -0.2805554 -0.2821690 -0.2462495 -0.2763586 -0.2302856 -0.2349263
[21] -0.2487209 -0.2372522 -0.2255403 -0.2020507 -0.1963821 -0.2070451 -0.3125479 -0.4110669 -0.3449101 -0.2343575
[31] -0.3125321 -0.3064103 -0.3060577 -0.2805785 -0.2231961 -0.1992387 -0.2003368 -0.1846678 -0.3058228 -0.3168813
[41] -0.2680430 -0.2904077 -0.2243505 -0.1833676 -0.2326427 -0.2202278 -0.1312280 -0.1230355 -0.0782352  0.1007114
[51] -0.0037313  0.0225828 -0.0583405 -0.0464370 -0.1362468 -0.0526329 -0.1310470 -0.1281053 -0.1475482 -0.0392238
[61] -0.0167509 -0.1147174 -0.1354388 -0.2182836 -0.1297983 -0.1259147 -0.1058285 -0.1009334 -0.1813545 -0.1344644
[71] -0.1357041 -0.1962898 -0.3289870 -0.3077479 -0.1190919 -0.1844365 -0.1306221 -0.2726658 -0.3574170 -0.2576271
[81] -0.2872227 -0.2648764 -0.3190477 -0.3825928 -0.3955126 -0.3801759 -0.4057352 -0.3550292 -0.3733226 -0.3990684
[91] -0.4549193 -0.5471724

我们可以看到,EMA 函数返回了一个包含指数移动平均线数值的向量。前 10 个值为 NA,因为它们对于计算 EMA 是必要的。后面的值取决于前面的值,因此它们将取决于前面的 10 个 NA 值。

绘制指数移动平均线

我们可以使用 ggplot2 包将数据和指数移动平均线绘制在同一张图中:

library(ggplot2)

# 创建数据框
df <- data.frame(x = seq(1, length(data)), y = data)

# 添加 EMA 列
df$ema <- ema

# 绘制图形
ggplot(df, aes(x = x)) +
  geom_line(aes(y = y)) +
  geom_line(aes(y = ema), color = "red") +
  theme_minimal()

输出结果:

EMA plot

我们可以看到,在 100 个数据点中,指数移动平均线比数据更平滑,并有助于更好地理解趋势。