R 语言量化投资系列之 AI 时代的技术指标量化分析实践——基于 eTTR 包

引言

在投资领域,尤其是量化投资领域,技术指标扮演着举足轻重的角色。技术指标是基于历史价格、成交量等市场数据,通过特定数学公式计算得出的数值,它们为投资者提供了一种量化分析市场趋势和股票表现的方法。

技术指标有助于投资者识别市场趋势。例如,简单移动平均线(SMA)指标可以通过计算一定时期内股票价格的平均值,平滑价格波动,直观地展示出股价的长期走势。当短期移动平均线向上穿过长期移动平均线时,形成 “黄金交叉”,常被视为股价上涨趋势的信号;反之,“死亡交叉” 则暗示股价可能下跌。这帮助投资者把握市场的大方向,决定是顺势买入还是卖出。

技术指标还能衡量市场的买卖力量。相对强弱指标(RSI)通过比较一段时期内股价的平均涨幅和平均跌幅,来判断市场买卖力量的强弱。当 RSI 值高于 70 时,市场处于超买状态,股价可能回调;低于 30 则表示超卖,股价可能反弹。投资者依据这些信号,可以在市场过热或过冷时做出合理决策,避免盲目跟风。

在量化投资中,技术指标更是构建投资策略的基础要素。量化投资者将多个技术指标结合,通过复杂的算法和模型,制定出买卖规则。比如结合移动平均线和布林带指标,当股价触及布林带下轨且短期均线向上拐头时买入,触及上轨且短期均线向下拐头时卖出。这种基于技术指标的量化策略能够克服投资者的主观情绪影响,实现投资决策的自动化和科学化,提高投资效率和准确性。

技术指标在投资,特别是量化投资中,为投资者提供了洞察市场动态、把握买卖时机的有力工具,帮助投资者做出更理性、科学的投资决策。

但因为量化分析听起来可能过于专业,很多人都认为量化投资需要涉及很多数学公式和计算机代码,很多人对量化分析望而却步。然而,随着 AI 时代的到来,知识将不再难以接触到,编程也不再是量化投资的障碍。我们只要能够找到正确的引导词就可以在 AI 的帮助下进行量化投资了。

本文将重点集中在如何在 AI 工具(以字节跳动旗下豆包为例)用 R 语言进行量化投资实践。

重点提示:

打开:豆包 ——> 选择:智能体 ——> 搜索:R-量化投资  ——> 将正文中的 AI 引导词 复制到 R-量化投资 智能体即可得到本文用到的代码,并可以向智能体提问代码相关问题。

本文未对 SMA 周期参数进行优化,因此,示例结果只用于演示远离,不能直接指导投资实践。如果需要,请在优化 SMA 周期参数之后再实际应用 SMA 指标。

R 语言及 eTTR 包介绍

R 语言是目前国际上最流行、效率最高、算法最灵活的数据分析语言。长期以来,也一直被量化投资分析师和量化投资基金喜爱。 R 语言提供了为数众多的帮助进行量化投资分析的 R 包。其中,用来进行技术分析的 R 包主要包括 TTR 包和 eTTR 包,这两个 R 包功能类似。

eTTR 包集成百余种经典技术指标(如RSI、MACD、布林带等),覆盖趋势跟踪、震荡分析、波动率测算、成交量验证等场景,满足从基础研究到高频交易的多样化需求。eTTR  包目前发布在GitHub 上,由邓一硕维护。

在 R 中安装 eTTR 包的命令如下:

library(devtools)
devtools::install_github("https://github.com/dengyishuo/eTTR")

AI 引导词:

请简单介绍  eTTR  包如何在 R 语言中使用?

(引导词使用方法:打开:豆包 ——> 选择:智能体标签 ——>在智能体标签中 搜索:“R-量化投资”  ——> AI 引导词 复制到 与智能体 R-量化投资的对话框里!)

移动平均指标(MA)

移动平均指标通常又叫均线指标,主要通过计算价格数据的阶段性均值来有效平滑短期波动并提取长期趋势信号。其是技术分析中判断趋势方向、支撑阻力位的核心工具。不同类型移动平均指标通过差异化权重分配,可适应不同交易场景的灵敏度需求。这篇文章主要讲简单移动平均指标及其相关应用。

简单移动平均指标(SMA)

简单移动平均指标是将过去若干个周期的数据进行算术平均,得到一个平滑的数值序列,用来代表数据在该时间段内的平均水平,帮助投资者或分析师观察数据的长期趋势。

它可用作如下判断:

  • 趋势判断:通过观察简单移动平均线的走势,可以判断价格的长期趋势。当价格在移动平均线上方运行时,通常表示市场处于上升趋势;当价格在移动平均线下方运行时,一般意味着市场处于下降趋势。而且,短期移动平均线向上穿过长期移动平均线,被视为买入信号,称为 “黄金交叉”;反之,短期移动平均线向下穿过长期移动平均线,是卖出信号,称为 “死亡交叉”。
  • 支撑与阻力位:简单移动平均线也可以作为支撑位或阻力位。在上升趋势中,移动平均线可以作为价格回调时的支撑线,当价格回落到移动平均线附近时,可能会受到支撑而继续上涨;在下降趋势中,移动平均线则成为价格反弹的阻力线,价格上涨到移动平均线附近时,可能会遇到阻力而再次下跌。

简单移动平均指标的计算公式如下:

SMA_t = (P_{t} + P_{t-1} + ... + P_{t-n+1}) / n

其对待窗口期内所有价格赋予同样权重,反映均衡趋势水平,适合识别长期趋势方向。

SMA 的计算及可视化

R 语言中的 eTTR  包提供了 SMA 函数来计算 SMA 指标。具体命令如下: 

library(tidyverse)
library(quantmod)
library(TTR)
library(eTTR)

# 在线获取特斯拉股票数据
# getSymbols("TSLA", from = "2020 - 01 - 01")
# 加载内置数据
data(TSLA)

# 将TSLA对象转换为tibble
tsla_tibble <- as_tibble(fortify.zoo(TSLA)) %>% 
  rename(date = Index) %>%
  select(date, everything())

# 计算 50 日简单移动平均线
tsla_tibble <- tsla_tibble %>%
  mutate(sma_50 = SMA(Close, n = 50))

# 计算 100 日简单移动平均线
tsla_tibble <- tsla_tibble %>%
  mutate(sma_100 = SMA(Close, n = 100))

# 计算 200 日简单移动平均线
tsla_tibble <- tsla_tibble %>%
  mutate(sma_200 = SMA(Close, n = 200))

# 移除包含缺失值的行
tsla_tibble <- tsla_tibble %>% drop_na() %>%
# 按日期排序
arrange(date)
# 查看对象
tsla_tibble

运行代码之后,将返回一个名字为 tsla_tibble 的对象。

AI 引导词:

请用R中的eTRR包计算参数为50/100/200的SMA指标,生成tibble对象,并用ggplot2和patchwork进行绘图。

(引导词使用方法:打开:豆包 ——> 选择:智能体标签 ——>在智能体标签中 搜索:“R-量化投资”  ——> AI 引导词 复制到 与智能体 R-量化投资的对话框里!)

绘制 TSLA 收盘价格以及三个周期的简单移动平均线的序列图,代码如下:

# 绘制股价图
price_plot <- ggplot(tsla_tibble, aes(x = date, y = Close)) +
  geom_line(color = "black") +
  labs(title = "TSLA 股价", x = "日期", y = "价格")

# 绘制 50 日移动平均线图
sma_50_plot <- ggplot(tsla_tibble, aes(x = date, y = sma_50)) +
  geom_line(color = "blue") +
  labs(title = "TSLA 50 日简单移动平均线", x = "日期", y = "50 日 SMA")

# 绘制 100 日移动平均线图
sma_100_plot <- ggplot(tsla_tibble, aes(x = date, y = sma_100)) +
  geom_line(color = "green") +
  labs(title = "TSLA 100 日简单移动平均线", x = "日期", y = "100 日 SMA")

# 绘制 200 日移动平均线图
sma_200_plot <- ggplot(tsla_tibble, aes(x = date, y = sma_200)) +
  geom_line(color = "red") +
  labs(title = "TSLA 200 日简单移动平均线", x = "日期", y = "200 日 SMA")

# 使用 patchwork 组合图形
combined_plot <- (price_plot / sma_50_plot / sma_100_plot / sma_200_plot) &
  theme_minimal(base_family = "SimHei")

combined_plot

绘图结果如下:

还可以将四张图叠加为一张图,先别问为什么,后面有妙用。代码如下:

price_plot <- ggplot(tsla_tibble, aes(x = date)) +
  geom_line(aes(y = Close, color = "TSLA 股价")) +
  geom_line(aes(y = sma_50, color = "50 日 SMA")) +
  geom_line(aes(y = sma_100,color = "100 日 SMA")) +
  geom_line(aes(y = sma_200, color = "200 日 SMA")) +
  labs(title = "TSLA 股价与简单移动平均线",
       x = "日期",
       y = "价格",
       color = "指标") +
  scale_color_manual(values = c("TSLA 股价" = "black", "50 日 SMA" = "blue", "100 日 SMA" = "green","200 日 SMA" = "red")) +
  theme_minimal(base_family = "SimHei")

绘图结果如下:

简单移动平均线常用量化投资策略

基于 SMA 指标构建的量化投资策略类型极其丰富,这里介绍四类最常见的类型。第一类叫交叉型策略,主要包括双均线交叉策略和多均线组合策略;第二类叫趋势跟踪型策略,主要包括价格突破策略和斜率突破策略;第三类叫均值回复策略,主要包括单纯价格回归策略和布林带回归策略;第四类叫背离策略。

交叉型策略

基于 SMA 指标的交叉型策略是最常见的量化投资策略,很多普通的投资者都不自觉的在使用。这类型策略主要包括双均线交叉和多均线组合交叉两种类型。

双均线交叉及其 R 代码实现

双均线交叉策略。顾名思义,就是生成两个参数不同的 SMA 指标,通过判断两个 SMA 指标的交叉情况来决定交易信号。我们应用最多的双均线策略一般如下:

短期SMA(50)上穿SMA(100)时,生成买入信号;当短期SMA(50)下穿SMA(100)时,生成卖出信号;否则,持仓不动。

用 R 语言和 eTTR 包中的 SMA 函数实现上述信号,并可视化。

# 双均线交叉策略
tsla_tibble <- tsla_tibble %>%
  mutate(signal = case_when(
    # 处理第一行,设为持仓不动
    row_number() == 1 ~ 0,
    # T - 1日,SMA50 < sma100,且T日SMA50 > sma100,买入
    dplyr::lag(sma_50, default = 0) < dplyr::lag(sma_100, default = 0) & sma_50 > sma_100 ~ 1,
    # T - 1日,SMA50 > sma100,且T日SMA50 < sma100,卖出
    dplyr::lag(sma_50, default = 0) > dplyr::lag(sma_100, default = 0) & sma_50 < sma_100 ~ - 1,
    # 其他情况,持仓不动
    TRUE ~ 0
  ))

price_signal_plot <- ggplot(tsla_tibble, aes(x = date)) +
  geom_line(aes(y = Close), color = "blue") +
  geom_point(aes(y = Close, color = factor(signal)), data = subset(tsla_tibble, signal!= 0),size=1) +
  scale_color_manual(values = c("1" = "red", "-1" = "green"), 
                     labels = c("1" = "买入", "-1" = "卖出"), 
                     name = "交易信号") +
  labs(title = "TSLA 股价及交易信号", x = "日期", y = "价格")+
  theme_minimal(base_family = "SimHei")

price_signal_plot

可视化结果如下:

AI 引导词:

请用 R中的 eTRR 包实现基于TSLA数据和SMA函数的双均线交叉策略,并用ggplot2和patchwork进行绘图。

(引导词使用方法:打开:豆包 ——> 选择:智能体标签 ——>在智能体标签中 搜索:“R-量化投资”  ——> AI 引导词 复制到 与智能体 R-量化投资的对话框里!)

多均线组合交叉及其 R 代码实现

通过三条以上均线的排列判断趋势强度。例如,短期均线在长期均线上方且发散时持有多头。举一个简单的例子:

# 使用case_when生成交易信号
tsla_tibble<- tsla_tibble %>%
  mutate(signal = case_when(
    sma_50 > sma_100 & sma_100 > sma_200 ~ 1, # 买入信号
    sma_50 < sma_100 & sma_100 < sma_200 ~ - 1, # 卖出信号
    TRUE ~ 0 # 其他情况,持有信号
  ))

# 查看生成信号后的数据
tsla_tibble

price_signal_plot <- ggplot(tsla_tibble, aes(x = date)) +
  geom_line(aes(y = Close), color = "blue") +
  geom_point(aes(y = Close, color = factor(signal)), data = subset(tsla_tibble, signal!= 0),size=1) +
  scale_color_manual(values = c("1" = "red", "-1" = "green"), 
                     labels = c("1" = "买入", "-1" = "卖出"), 
                     name = "交易信号") +
  labs(title = "TSLA 股价及多均线混合策略交易信号", x = "日期", y = "价格")+
  theme_minimal(base_family = "SimHei")

price_signal_plot

信号可视化结果如下:

AI 引导词:

请用 R中的 eTRR 包实现基于TSLA数据和SMA函数的SMA多均线混合策略,并用ggplot2和patchwork进行绘图。

(引导词使用方法:打开:豆包 ——> 选择:智能体标签 ——>在智能体标签中 搜索:“R-量化投资”  ——> AI 引导词 复制到 与智能体 R-量化投资的对话框里!)

趋势跟踪型策略

价格突破均值策略

# 价格与均线策略
# 使用case_when语句生成交易信号,并将信号添加为tsla_tibble数据框中的新列signal
tsla_tibble <- tsla_tibble %>%
  mutate(signal = case_when(
    row_number() <= 1 ~ 0, 
    # 当昨日Close价格小于昨日SMA50,且今日Close价格大于今日SMA50时,
    # 表明价格上穿50日均线,生成买入信号1
    dplyr::lag(Close, default = 0) < dplyr::lag(sma_50, default = 0) & Close > sma_50 ~ 1, 
    # 当昨日Close价格大于昨日SMA50,且今日Close价格小于今日SMA50时,
    # 表明价格下穿50日均线,生成卖出信号 - 1
    dplyr::lag(Close, default = 0) > dplyr::lag(sma_50, default = 0) & Close < sma_50 ~ - 1, 
    # 其他情况,信号设为0,表示持仓不动
    TRUE ~ 0 
  ))

price_signal_plot <- ggplot(tsla_tibble, aes(x = date)) +
  geom_line(aes(y = Close), color = "blue") +
  geom_point(aes(y =Close, color = factor(signal)), data = subset(tsla_tibble, signal!= 0),size=1) +
  scale_color_manual(values = c("1" = "red", "-1" = "green"), 
                     labels = c("1" = "买入", "-1" = "卖出"), 
                     name = "交易信号") +
  labs(title = "TSLA 股价及交易信号", x = "日期", y = "价格") +
   theme_minimal(base_family = "SimHei")
  
price_signal_plot

AI 引导词:

请用 R中的 eTRR 包实现基于TSLA数据和SMA函数的SMA的价格突破均值策略,并用ggplot2和patchwork进行绘图。

(引导词使用方法:打开:豆包 ——> 选择:智能体标签 ——>在智能体标签中 搜索:“R-量化投资”  ——> AI 引导词 复制到 与智能体 R-量化投资的对话框里!)

价格突破策略

价格在 SMA 上方且均线向上时做多,跌破均线且均线走平 / 向下时平仓。

# 计算SMA的斜率,判断均线方向
tsla_tibble <- tsla_tibble %>%
  mutate(sma_slope = c(NA, diff(sma_50)))

# 生成交易信号
tsla_tibble <- tsla_tibble %>%
  mutate(signal = case_when(
    Close > sma_50 & sma_slope > 0 ~ 1, # 价格在SMA上方且均线向上,做多信号为1
    (Close < sma_50 & sma_slope <= 0) | is.na(sma_slope) ~ 0, # 跌破均线且均线走平/向下,平仓信号为0
    TRUE ~ lag(signal) # 保持之前的信号状态
  ))

price_signal_plot <- ggplot(tsla_tibble, aes(x = date)) +
  geom_line(aes(y = Close), color = "blue") +
  geom_point(aes(y =Close, color = factor(signal)), data = subset(tsla_tibble, signal!= 0),size=1) +
  scale_color_manual(values = c("1" = "red", "-1" = "green"), 
                     labels = c("1" = "买入", "-1" = "卖出"), 
                     name = "交易信号") +
  labs(title = "TSLA股价及价格突破策略交易信号", x = "日期", y = "价格") +
   theme_minimal(base_family = "SimHei")
  
price_signal_plot

​​​​​​​AI 引导词:

请用 R中的 eTRR 包实现基于TSLA数据和SMA函数的SMA价格突破策略,并用ggplot2和patchwork进行绘图。

(引导词使用方法:打开:豆包 ——> 选择:智能体标签 ——>在智能体标签中 搜索:“R-量化投资”  ——> AI 引导词 复制到 与智能体 R-量化投资的对话框里!)

斜率突破

  • 计算 SMA 的斜率,当斜率由负转正时买入,由正转负时卖出。
  • 公式slope = (SMA(n) - SMA(n-1)) / SMA(n-1)
# 计算SMA的斜率
tsla_tibble <- tsla_tibble %>%
  mutate(sma_slope = (sma_50 - dplyr::lag(sma_50, 1)) / dplyr::lag(sma_50, 1))

# 生成交易信号
tsla_tibble <- tsla_tibble %>%
  mutate(signal = case_when(
    is.na(sma_slope) ~ 0, # 首日无斜率,设为0
    dplyr::lag(sma_slope) < 0 & sma_slope > 0 ~ 1, # 斜率由负转正,买入
    dplyr::lag(sma_slope) > 0 & sma_slope < 0 ~ -1, # 斜率由正转负,卖出
    TRUE ~ 0 # 其他情况保持现有仓位(这里设为0,即无操作)
  ))

price_signal_plot <- ggplot(tsla_tibble, aes(x = date)) +
  geom_line(aes(y = Close), color = "blue") +
  geom_point(aes(y =Close, color = factor(signal)), data = subset(tsla_tibble, signal!= 0),size=1) +
  scale_color_manual(values = c("1" = "red", "-1" = "green"), 
                     labels = c("1" = "买入", "-1" = "卖出"), 
                     name = "交易信号") +
  labs(title = "TSLA股价及SMA斜率突破策略交易信号", x = "日期", y = "价格") +
   theme_minimal(base_family = "SimHei")
  
price_signal_plot

​​​​​​​AI 引导词:

请用 R中的 eTRR 包实现基于TSLA数据和SMA函数的SMA斜率突破策略,并用ggplot2和patchwork进行绘图。

(引导词使用方法:打开:豆包 ——> 选择:智能体标签 ——>在智能体标签中 搜索:“R-量化投资”  ——> AI 引导词 复制到 与智能体 R-量化投资的对话框里!)

均值回复策略

价格均值回复

价格均值回复策略基于金融资产价格倾向于围绕其均值波动的原理。当价格大幅偏离移动平均线(SMA)时,认为价格将回归均值,从而进行反向操作。

tsla_tibble <- tsla_tibble %>%
  
  mutate(dev = Close - sma_50, # 计算偏离值
         signal = case_when(
           dev > 3*sd(dev) ~ -1, # 若高于均值3倍标准差,卖出
           dev < -3*sd(dev) ~ 1, # 若低于均值3倍标准差,买入
           TRUE ~ 0
         ))

price_signal_plot <- ggplot(tsla_tibble, aes(x = date)) +
  geom_line(aes(y = Close), color = "blue") +
  geom_point(aes(y =Close, color = factor(signal)), data = subset(tsla_tibble, signal!= 0),size=1) +
  scale_color_manual(values = c("1" = "red", "-1" = "green"), 
                     labels = c("1" = "买入", "-1" = "卖出"), 
                     name = "交易信号") +
  labs(title = "TSLA股价及均值回复策略交易信号", x = "日期", y = "价格") +
   theme_minimal(base_family = "SimHei")
  
price_signal_plot

# 转换为动态图形
dynamic_plot <- ggplotly(price_signal_plot)

# 显示动态图形
dynamic_plot

​​​​​​​AI 引导词:

请用 R中的 eTRR 包实现基于TSLA数据和SMA函数的SMA 均值回复策略,并用ggplot2和patchwork进行绘图。

(引导词使用方法:打开:豆包 ——> 选择:智能体标签 ——>在智能体标签中 搜索:“R-量化投资”  ——> AI 引导词 复制到 与智能体 R-量化投资的对话框里!)

布林带均值回复

结合 SMA 与标准差构建通道,价格触及上轨时做空,下轨时做多。

# 使用BBands函数计算布林带
bbands_result <- BBands(tsla_tibble$Close, n = 20, sd = 2)

# 将布林带结果整合到数据框
tsla_tibble <- tsla_tibble %>%
  mutate(upper_band = bbands_result[, 'up'],
         middle_band = bbands_result[, 'mavg'],
         lower_band = bbands_result[, 'dn'])

# 生成交易信号
tsla_tibble <- tsla_tibble %>%
  mutate(signal = case_when(
    Close >= upper_band ~ -1,  # 价格触及上轨,生成做空信号 -1
    Close <= lower_band ~ 1,   # 价格触及下轨,生成做多信号 1
    TRUE ~ 0                  # 其他情况,保持现有仓位,信号为0
  ))

price_signal_plot <- ggplot(tsla_tibble, aes(x = date)) +
  geom_line(aes(y = Close), color = "blue") +
  geom_point(aes(y =Close, color = factor(signal)), data = subset(tsla_tibble, signal!= 0),size=1) +
  scale_color_manual(values = c("1" = "red", "-1" = "green"), 
                     labels = c("1" = "买入", "-1" = "卖出"), 
                     name = "交易信号") +
  labs(title = "TSLA股价及BBands均值回复策略交易信号", x = "日期", y = "价格") +
   theme_minimal(base_family = "SimHei")
  
price_signal_plot

​​​​​​​AI 引导词:

请用 R中的 eTRR 包实现基于TSLA数据和SMA函数的布林带均值回复策略,并用ggplot2和patchwork进行绘图。

(引导词使用方法:打开:豆包 ——> 选择:智能体标签 ——>在智能体标签中 搜索:“R-量化投资”  ——> AI 引导词 复制到 与智能体 R-量化投资的对话框里!)

背离策略

SMA(简单移动平均线)背离策略是一种基于价格与移动平均线趋势分歧的技术分析方法,用于识别潜在的趋势反转信号。其核心原理在于:当价格走势与移动平均线的方向出现显著背离时,市场可能正在积累反转动能。

两种典型背离形态:

顶背离:

价格创阶段新高,但 SMA 未同步创新高,甚至开始走平或向下。这表明尽管价格仍在上涨,但买方力量逐渐衰竭,上涨趋势可能即将终结。

底背离:

价格创阶段新低,但 SMA 未同步创新低,反而走平或向上。这暗示卖方力量减弱,下跌趋势可能接近尾声。

识别与应用逻辑:

背离信号需结合价格走势和 SMA 的斜率综合判断。例如,当价格持续上涨但 SMA 斜率趋缓时,可能形成顶背离;价格下跌但 SMA 不再下行时,可能形成底背离。
策略通常以 SMA 作为趋势基准,通过对比价格与 SMA 的偏离程度和方向,判断趋势延续或反转的可能性。例如,顶背离出现后,投资者可考虑减仓或做空;底背离出现后,可关注潜在的买入机会。

# 背离策略
# 寻找价格和SMA的局部极值点
tsla_tibble <- tsla_tibble %>%
  mutate(
    price_high = ifelse(Close == runMax(Close, 3), Close, runMax(Close, 3)),
    price_low = ifelse(Close == runMin(Close, 3), Close, runMin(Close, 3)),
    sma_high = ifelse(sma_50 == runMax(sma_50, 3), sma_50, runMax(sma_50, 3)),
    sma_low = ifelse(sma_50 == runMin(sma_50, 3), sma_50, runMin(sma_50, 3))
  )

# 生成交易信号
tsla_tibble <- tsla_tibble %>%
  mutate(signal = case_when(
    row_number() <= 50 ~ 0,
    # 顶背离
    price_high > dplyr::lag(price_high, 1) & sma_high < dplyr::lag(sma_high, 1) ~ - 1,
    # 底背离
    price_low < dplyr::lag(price_low, 1) & sma_low > dplyr::lag(sma_low, 1) ~ 1,
    TRUE ~ 0
  ))

price_signal_plot <- ggplot(tsla_tibble, aes(x = date)) +
  geom_line(aes(y = Close), color = "black") +
  geom_point(aes(y = Close, color = factor(signal)), data = subset(tsla_tibble, signal!= 0), size = 0.3) +
  scale_color_manual(values = c("1" = "red", "-1" = "green"), 
                     labels = c("1" = "买入", "-1" = "卖出"), 
                     name = "交易信号") +
  labs(title = "TSLA股价及SMA背离策略交易信号", x = "日期", y = "价格") +
   theme_minimal(base_family = "SimHei")

price_signal_plot

​​​​​​​AI 引导词:

请用 R中的 eTRR 包实现基于TSLA数据和SMA函数的价格背离策略,并用ggplot2和patchwork进行绘图。

(引导词使用方法:打开:豆包 ——> 选择:智能体标签 ——>在智能体标签中 搜索:“R-量化投资”  ——> AI 引导词 复制到 与智能体 R-量化投资的对话框里!)

简单移动平均线的其它妙用

除了前述介绍,SMA还在一下领域有应用。

动态资产配置策略

主要包括两方面,一是根据波动率不同适时调整 SMA 的周期参数。二是可以作为因子进行资产的筛选。

波动率调整周期

  • 原理:根据波动率动态调整 SMA 周期。例如,高波动时用短期均线,低波动时用长期均线。
  • 公式volatility = sd(diff(log(price))),根据 volatility 选择 n 值。

多资产轮动

  • 原理:在不同资产间比较 SMA 斜率,选择斜率最大的资产持有。

风险管理策略

可以用作风控指标,比如生成动态止损点。还可以生成交易信号,比如当收益率跌破 SMA(如 20 日收益率均线)时减仓等。

均线止损

  • 原理:跌破短期均线时止损,如 5 日 SMA。

回撤控制

  • 原理:当收益率跌破 SMA(如 20 日收益率均线)时减仓
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值