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

news2024/11/24 22:47:39

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

我们围绕交易策略进行一些咨询,帮助客户解决独特的业务问题。

均线系统作为最古老的技术分析手段之一,至今仍在沿用,同时它也是运用最广泛的技术指标体系。最常用的移动平均线是简单移动平均线,而后在此基础上延伸出了很多类型的移动平均线,如指数移动平均(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得到三条均线不同组合下的最佳市盈率

有问题欢迎交流讨论 qq 570881451

部分源码

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/47214.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

项目使用smart-doc+Torna自动化创建api文档

首先部署Torna&#xff0c;我这里是用docker部署的 准备工作&#xff1a;1 docker 环境 2 torna 所需的sql脚本&#xff08;可以去github 找最新的&#xff09; DROP TABLE IF EXISTS compose_additional_page; CREATE TABLE IF NOT EXISTS compose_additional_page (id bigi…

jupyter使用教程及python语法基础

前言 上回说到搭建jupyter环境&#xff0c;今天的文章主要就是熟悉jupyter上的基本操作&#xff0c;以及python的一些基础语法。 正文 1、熟悉jupyter界面使用方法 通过命令行进入jupyter后&#xff0c;选择python3。 进去之后就是如下界面&#xff0c;要熟悉以下操作。当…

SAP ABAP——数据类型(二)【TYPES自定义数据类型详解】

&#x1f4ac;个人网站&#xff1a;【芒果个人日志】​​​​​​ &#x1f4ac;原文地址&#xff1a;SAP ABAP——数据类型&#xff08;二&#xff09;【TYPES自定义数据类型详解】 - 芒果个人日志 (wyz-math.cn) &#x1f482;作者简介&#xff1a; THUNDER王&#xff0c;一名…

python学习笔记(11)---(模块与包)

第九章 模块与包 1.模块&#xff08;modules&#xff09; &#xff08;1&#xff09;概念&#xff1a;将实现某一特定功能的代码放置在一个文件中&#xff0c;以便于其他程序进行导入使用&#xff0c;可以避免函数名、变量名的冲突&#xff0c;该文件称为模块&#xff0c;拓展…

RtspServer之LibRtsp解决闪退 新增鉴权(用户名密码登录)

编程语言&#xff1a;C 目标平台&#xff1a;arm&#xff08;hi3519&#xff09;注&#xff1a;因为代码是纯C语言按道理可以移植到各种平台 基础库&#xff1a;librtsp&#xff08;存在功能补全&#xff0c;有一定的bug&#xff09; 因为项目需求需要在海思平台实现IPC…

C++ Reference: Standard C++ Library reference: Containers: list: list: crend

C官网参考链接&#xff1a;https://cplusplus.com/reference/list/list/crend/ 公有成员函数 <list> std::list::crend const_reverse_iterator crend() const noexcept; 返回反向结束的常量反向迭代器 返回一个const_reverse_iterator&#xff0c;指向容器中第一个元素…

领悟《信号与系统》之 采样定理

采样定理采样定理一、采样定理结论二、奈奎斯特间隔和频率计算公式及例题&#xff1a;三、信号自然采样&#xff08;脉冲采样&#xff09;四、信号理想采样&#xff08;冲激采样&#xff09;采样定理 连续时间信号也叫模拟信号。在一定条件之下&#xff0c;模拟信号可以用该信…

LDAP客户端操作方法

本文章简单介绍LDAP Admin客户端的使用方法&#xff0c;客户端工具地址为&#xff1a; https://download.csdn.net/download/u013896064/87209312 1、前提 我使用的是Ubuntu的虚拟机安装了一个LDAP服务&#xff0c;初始化完成并配置好密码&#xff0c;本次例子里面我使用的U…

nodejs+vue音乐网站与分享平台

目 录 摘 要 I 1 绪论 1 1.1研究背景 1 1.2研究现状 1 1.3研究内容 2 2 系统关键技术 3 2.1 Spring Boot框架 3 2.2 JAVA技术 3 2.3 MYSQL数据库 4 2.4 B/S结构 4 3 系统分析 5 3.1 可行性分析 5 3.1.1 技术可行性 5 3.1.2经济可行性…

Windows OpenGL 图像色彩替换

目录 一.OpenGL 图像色彩替换 1.原始图片2.效果演示 二.OpenGL 图像色彩替换源码下载三.猜你喜欢 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 基础 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 特效 零基础 OpenGL…

[附源码]计算机毕业设计JAVA网上花店系统

[附源码]计算机毕业设计JAVA网上花店系统 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis M…

SpringBoot基于若依项目工时统计成本核算管理源码带文字教程

该系统是前后端分离的架构&#xff0c;前端使用Vue2&#xff0c;后端使用SpringBoot2。 技术架构 技术框架&#xff1a;SpringBoot2.0.0 Mybatis1.3.2 Shiro swagger-ui jpa lombok Vue2 Mysql5.7 运行环境&#xff1a;jdk8 IntelliJ IDEA maven 宝塔面板 本地搭建文…

MySQL数据库行级锁之间隙锁、临键锁

间隙锁 默认情况下&#xff0c;InnoDB在 REPEATABLE READ事务隔离级别运行&#xff0c;InnoDB使用 next-key 锁进行搜索和索引扫描&#xff0c;以防止幻读。 索引上的等值查询(唯一索引)&#xff0c;给不存在的记录加锁时, 优化为间隙锁 。索引上的等值查询(非唯一普通索引)&…

数据字典功能

我们在项目中会有很多的下拉框,这些下拉框都有一个特点,就是键值对的存在 实现方案: 直接硬编码写在html代码中, 缺点:新增修改需要修改代码为每个下拉框都设计一个表&#xff0c;然后提供CRUD功能 , 缺点 : 很多表,很多重复的CRUD代码使用数据字典的方式 ,使用字典类型表和字…

CTFHUB-web-SQL注入

整数型注入 字符型注入 得到数据库名 sqli http://challenge-f7a63a00793e62c6.sandbox.ctfhub.com:10800/?id-1 union select 1,database() 爆sqli数据库的数据表 爆flag表的所有列&#xff1a; http://challenge-f7a63a00793e62c6.sandbox.ctfhub.com:10800/?id-1 union s…

[Azkaban] No active executors found分析

启动AzkabanWebServer报如下错误: 点击进入 ActiveExecutors.setupExecutors发现调用的是 loadExecutors()继续深入 private ImmutableSet<Executor> loadExecutors() throws ExecutorManagerException {logger.info("Initializing executors from database.&q…

window 下 达梦数据库的备份和还原

DM 提供的各种工具进行备份还原与恢复的操作&#xff0c;包括 DIsql工具、DMRMAN 工具、图形化客户端管理工具 MANAGER 和 CONSOLE。 DIsql 工具用于执 行联机的数据备份与数据还原&#xff0c;包括数、归档备份据库备份、表空间备份与还原、表备份与 还原&#xff1b; DMRMA…

docker-compose安装nacos

文章目录一、安装nacos1.docker-compose.yml2.nacos数据库表结构3.docker-compose 构建运行4.检查nacos日志6.测试访问&#xff1a;TODO:二、nacos为注册中心&#xff1a;项目测试1.新建maven项目&#xff1a;2.配置pom.xml3.配置application.properties4.激活服务发现客户端5.…

117.Django-缓存redis

1. 概述 ​ 动态网站的基本权衡是&#xff0c;它们是动态的。每次用户请求页面时&#xff0c;Web服务器都会进行各种计算 - 从数据库查询到模板呈现再到业务逻辑 - 以创建站点访问者看到的页面。从处理开销的角度来看&#xff0c;这比标准的文件读取文件系统服务器要耗时多了。…

数据库、计算机网络,操作系统刷题笔记4

数据库、计算机网络&#xff0c;操作系统刷题笔记4 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;可能很多算法学生都得去找开发&#xff0c;测开 测开的话&#xff0c;你就得学数据库&#xff0c;sql&#xff0c;oracle&…