TMA三均线股票期货高频交易策略的R语言实现

简介: TMA三均线股票期货高频交易策略的R语言实现

趋势交易策略是至今应用最广泛以及最重要的投资策略之一,它的研究手段种类繁多,所运用的分析工具也纷繁复杂,其特长在于捕捉市场运动的大方向。股指期货市场瞬息万变,结合趋势分析方法,量化投资策略能够得到更有效的应用。

均线系统作为最古老的技术分析手段之一,至今仍在沿用,同时它也是运用最广泛的技术指标体系。最常用的移动平均线是简单移动平均线,而后在此基础上延伸出了很多类型的移动平均线,如指数移动平均(EMA),加

权移动平均(WMA),还有按成交量加权移动平均(VWMA)等。

由于均线的参数不同,均线所刻画的价格趋势也不相同,所以,单纯使用一条均线不能全面的刻画市场的趋势。对于日内高频交易来说,市场的趋势时短时长,因此需要采用多条不同周期的均线,从不同的角度来反映市场不同周期内的趋势。Triple Moving Average 策略(以下简称 TMA),顾名思义采用的是三条简单移动平均线

(SMA),选择不同周期的参数来刻画期指日内的短期,中期以及长期趋势。通常,三个参数的设定范围为短期(5 分钟~15 分钟),中期(20 分钟~40 分钟),长期(50 分钟~90 分钟)。

在 TMA 的基础上,我们设计了如下的指标:


Up Bound=Max (SMA(Fast),SMA(Middle),SMA(Slow) )


Dn Bound=Min ( SMA(Fast),SMA(Middle),SMA(Slow) )

指标采用 1 分钟收盘价作为价格时间序列,当收盘价第一次上穿 Up Bound时确认为买入时机,当收盘价第一次下穿 Dn Bound 时确认为卖出时机。

由于backtester_v4.2投资组合软件包中已经给出了SMA的方法,因此我们可以对其进行简单的修改,从而实现TMA策略。

通过getTMA可以得到不同窗口宽度下的收盘价:

通过getPosSignFromTMA我们可以通过三条均线得到的不同收盘价来采取不同的交易策略:

通过getPosSize我们可以得到某支股票的交易量

最终可以通过getInSampleOptResult得到三条均线不同组合下的最佳市盈率

getOrders <- function(store, newRowList, currentPos, params) {


allzero <- rep(0,length(newRowList)) # used for initializing vectors


sma=numeric(0)


for(i in 1:3){


sma[i] <-as.numeric(last(SMA(close_prices,n=lookbacks[[i]]))) # TTR version # convert to vector from xts


}


smalist <- list(short=sma[1],medium=sma[2],long=sma[3])


return(smalist)


}


getPosSignFromTMA <- function(tma_list) {


getPosSize <- function(current_close,constant=1000) {


return(floor(constant/current_close))


}


getInSampleResult <- function() {


period=getInSamplePeriod('x4jr')


start=period[1]


end=period[2]


datalist=getData(directory="A2")


datalist <-lapply(datalist, function(x)x[start:end])


sMult=0.2


series=1:length(datalist)


params <-list(lookbacks=list(short=as.integer(10),medium=as.integer(20),long=as.integer(30)),sdParam=1,series=series)


results <- backtest(datalist, getOrders, params, sMult)


getInSampleOptResult <- function() {


period=getInSamplePeriod('x4jr')


medium <- seq(from=105,to=120,by=5)


short <- seq(from=100,to=110,by=5)


long <- seq(from=110,to=130,by=5)


time <- matrix(0,28,3)


numberComb <- 28


sMult <- 0.2 # slippage multiplier


rr=1


for(l in long)


for(m in medium)


for(s in short)


if(s< l){time[rr,]=c(as.integer(s),as.integer(m),as.integer(l));rr=rr+1}


pfolioPnLList <- vector(mode="list",length=numberComb)


count <- 1


bestPD <- 0


resultsMatrix=matrix(0,28,4)


for (i in 1:28) {


print(resultsMatrix[count,])


count <- count + 1


}


print(resultsMatrix[order(resultsMatrix[,4]),])


bsetPD=max(resultsMatrix[,4])


return(bsetPD)


#> bsetPD


#[1] 3.28

相关文章
|
安全 Shell 开发工具
|
JavaScript
threeJs通过GUI实现动态对模型的控制
这篇文章讲述了如何使用three.js结合GUI工具实现实时控制3D模型的属性,以便于在开发过程中动态调整和预览模型效果。
332 2
threeJs通过GUI实现动态对模型的控制
|
7月前
|
JSON API 数据格式
手把手教你抓取京东商品评论:API 接口解析与 Python 实战
京东商品评论蕴含用户对产品质量、体验和服务的真实反馈,分析这些数据有助于企业优化产品和满足用户需求。由于京东未提供官方API,需通过逆向工程获取评论数据。其主要接口为“商品评论列表接口”,支持按商品ID、评分、排序方式等参数获取评论,返回JSON格式数据,包含评论列表、摘要(如好评率)及热门标签等信息。
|
数据采集 XML 存储
构建高效的Python网络爬虫:从入门到实践
本文旨在通过深入浅出的方式,引导读者从零开始构建一个高效的Python网络爬虫。我们将探索爬虫的基本原理、核心组件以及如何利用Python的强大库进行数据抓取和处理。文章不仅提供理论指导,还结合实战案例,让读者能够快速掌握爬虫技术,并应用于实际项目中。无论你是编程新手还是有一定基础的开发者,都能在这篇文章中找到有价值的内容。
|
Ubuntu 安全 Docker
【DevOps】Docker 最佳实践指南(绝对干货)
祝您的 Docker 之旅一切顺利!
536 4
|
存储 NoSQL Java
Redis性能优化:理解与使用Redis Pipeline
当我们谈论Redis数据处理和存储的优化方法时, Redis Pipeline 无疑是一个不能忽视的重要技术。
1155 0
Redis性能优化:理解与使用Redis Pipeline
|
SQL 安全 网络安全
网络安全与信息安全:防范措施与加密技术解析
【10月更文挑战第9天】在数字化时代,网络安全与信息安全已成为我们日常生活中不可或缺的一部分。本文将深入探讨网络安全漏洞、加密技术和安全意识等方面的内容,以帮助读者更好地了解和应对网络安全威胁。通过分享相关知识和案例分析,我们希望提高大家对网络安全的认识和重视程度,共同维护一个安全、可靠的网络环境。
857 0
|
机器学习/深度学习 数据可视化 PyTorch
使用Python实现深度学习模型:生成对抗网络(GAN)
使用Python实现深度学习模型:生成对抗网络(GAN)
611 3
|
存储 算法 编译器
利用C语言读取BMP文件
BMP是bitmap的缩写形式,bitmap顾名思义,就是位图也即Windows位图。它一般由4部分组成:文件头信息块、图像描述信息块、颜色表(在真彩色模式无颜色表)和图像数据区组成。在系统中以BMP为扩展名保存。   打开Windows的画图程序,在保存图像时,可以看到三个选项:2色位图(黑白)、16色位图、256色位图和24位位图。这是最普通的生成位图的工具,在这里讲解的BMP位图形式,主要就是指用画图生成的位图.   一般的bmp图像都是24位,也就是真彩。每8位为一字节,24位也就是使用三字节来存储每一个像素的信息,三个字节对应存放r,g,b三原色的数据每个字节的存贮范围都
518 0
利用C语言读取BMP文件
|
Java Spring
【已解决】Failed to start bean ‘documentationPluginsBootstrapper‘; nested exception .lang.NullPointerEx
【已解决】Failed to start bean ‘documentationPluginsBootstrapper‘; nested exception .lang.NullPointerEx
404 0