KDJ指标择时交易策略分析
knitr::opts_chunk$set(echo = TRUE,
warning = FALSE,
message = FALSE,
fig.pos = 'H',
fig.align = 'center',
fig.width = 6.5,
fig.height = 4,
out.width = "90%",
width = "90%")
引言
技术分析是金融市场中常用的分析方法,其中KDJ指标是一种重要的随机指标,能够反映价格波动的强弱、超买超卖现象以及市场趋势变化。本研究旨在通过R语言实现基于KDJ指标的股票择时交易策略,并通过历史数据回测寻找最佳参数组合。
研究方法
数据获取与处理
我们将使用quantmod
包获取股票数据,并使用quantstrat
包进行策略回测。首先加载所需的包:
# 加载必要的包
library(quantmod)
library(quantstrat)
library(eTTR)
library(PerformanceAnalytics)
library(ggplot2)
library(dplyr)
library(tibble)
library(scales)
library(gridExtra)
# 加载环境重置函数
source("/Users/matrixspk/My-Sites/r-finance/assets/code/reset_strategy_env.R")
# 加载计算胜率的函数
source("/Users/matrixspk/My-Sites/r-finance/assets/code/calculate_portfolio_win_rates.R")
source("/Users/matrixspk/My-Sites/r-finance/assets/code/generateSimpleSignalChain.R")
接下来,我们获取苹果公司股票的历史数据作为研究对象:
# 设置获取数据的起始和结束日期
initDate <- as.Date("2017-12-31")
startdate.st <- as.Date("2018-01-01")
enddate.st <- as.Date("2023-06-01")
# 获取苹果公司股票数据
getSymbols("AAPL", src = "yahoo", from = startdate.st, to = enddate.st)
## [1] "AAPL"
colnames(AAPL) <- c("Open", "High", "Low", "Close", "Volume", "Adjusted")
# 查看数据结构
head(AAPL)
## Open High Low Close Volume Adjusted
## 2018-01-02 42.5400 43.0750 42.3150 43.0650 102223600 40.42682
## 2018-01-03 43.1325 43.6375 42.9900 43.0575 118071600 40.41978
## 2018-01-04 43.1350 43.3675 43.0200 43.2575 89738400 40.60754
## 2018-01-05 43.3600 43.8425 43.2625 43.7500 94640000 41.06986
## 2018-01-08 43.5875 43.9025 43.4825 43.5875 82271200 40.91732
## 2018-01-09 43.6375 43.7650 43.3525 43.5825 86336000 40.91262
summary(AAPL)
## Index Open High Low Close
## Min. :2018-01-02 Min. : 35.99 Min. : 36.43 Min. : 35.50 Min. : 35.55
## 1st Qu.:2019-05-10 1st Qu.: 51.97 1st Qu.: 52.32 1st Qu.: 51.67 1st Qu.: 52.03
## Median :2020-09-15 Median :114.67 Median :116.07 Median :112.84 Median :114.97
## Mean :2020-09-14 Mean :102.38 Mean :103.62 Mean :101.24 Mean :102.48
## 3rd Qu.:2022-01-20 3rd Qu.:146.36 3rd Qu.:148.00 3rd Qu.:145.15 3rd Qu.:146.61
## Max. :2023-05-31 Max. :182.63 Max. :182.94 Max. :179.12 Max. :182.01
## Volume Adjusted
## Min. : 35195900 Min. : 33.87
## 1st Qu.: 76144000 1st Qu.: 49.73
## Median : 98135650 Median :111.96
## Mean :112825725 Mean :100.02
## 3rd Qu.:133535000 3rd Qu.:143.97
## Max. :426510000 Max. :178.65
KDJ指标计算原理
KDJ指标由三条曲线组成:K线、D线和J线。其计算基于以下步骤: