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

news/2024/3/29 6:19:20/文章来源:https://blog.csdn.net/tecdat/article/details/128102066

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

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

均线系统作为最古老的技术分析手段之一,至今仍在沿用,同时它也是运用最广泛的技术指标体系。最常用的移动平均线是简单移动平均线,而后在此基础上延伸出了很多类型的移动平均线,如指数移动平均(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 vectorssma=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.2series=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 <- 28sMult <- 0.2 # slippage multiplierrr=1for(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 <- 1bestPD <- 0resultsMatrix=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.luyixian.cn/news_show_39030.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Discourse 的左侧边栏可以修改吗

在默认的 Discourse 配置中&#xff0c;我们左侧的边栏可以根据自己的要求进行修改吗&#xff1f; 解决办法 针对自己登录的用户&#xff0c;你是可以自己调整左侧边栏的配置。 单击右上角你的个人头像&#xff0c;然后选择属性。 在切换的界面中&#xff0c;选择属性。 在出…

校园论坛(Java)——环境配置篇

校园论坛&#xff08;Java&#xff09;——环境配置篇 文章目录校园论坛&#xff08;Java&#xff09;——环境配置篇1、写在前面2、新建Maven项目2.1 引入相关依赖2.2 配置Tomcat环境3、项目发布测试4、项目代码5、参考资料1、写在前面 Windows版本&#xff1a;Windows10JDK版…

Python数据库编程之关系数据库API规范

Python关系数据库API规范 对于关系数据库的访问&#xff0c;Python社区已经制定出一个标准&#xff0c;称为Python Database API Specification。Mysql&#xff0c;Oracal等特定数据库模块遵从这一规范&#xff0c;而且可以添加更多特性。 高级数据库API定义了一组用于连接数…

YOLO V3 详解

YOLO V3 论文链接&#xff1a;YOLOv3: An Incremental Improvement 主要改进 Anchor: 9个大小的anchor&#xff0c;每个尺度分配3个anchor。Backbone改为Darknet-53, 引入了残差模块。引入了FPN&#xff0c;可以进行多个尺度的训练&#xff0c;同时对于小目标的检测有了一定…

R语言生存分析可视化分析

生存分析指的是一系列用来探究所感兴趣的事件的发生的时间的统计方法。 生存分析被用于各种领域&#xff0c;例如&#xff1a; 癌症研究为患者生存时间分析&#xff0c; “事件历史分析”的社会学 在工程的“故障时间分析”。 在癌症研究中&#xff0c;典型的研究问题如下…

Linux redict 输入输出重定向 详细使用方法 文件描述符

Linux redict 重定向 Linux 重定向 在 Linux 系统中&#xff0c;我们需要输入和输出让系统与外部进行交互&#xff0c;比如在我们使用鼠标、键盘等输入设备时其实就是通过输入的方式让数据进行系统中。而系统输出一般就会打印在显示器上、刻录光盘等等。而我们要讲的重定向也…

(二)DepthAI-python相关接口:OAK Pipeline

消息快播&#xff1a;OpenCV众筹了一款ROS2机器人rae&#xff0c;开源、功能强、上手简单。来瞅瞅~ 编辑&#xff1a;OAK中国 首发&#xff1a;oakchina.cn 喜欢的话&#xff0c;请多多&#x1f44d;⭐️✍ 内容可能会不定期更新&#xff0c;官网内容都是最新的&#xff0c;请查…

Meta-learning

基本理解 meta learning翻译为元学习&#xff0c;也可以被认为为learn to learn 元学习与传统机器学习的不同在哪里&#xff1f; 元学习与传统机器学习&#xff0c; 这里举个通俗的例子&#xff0c;拿来给大家分享&#xff1f; 把训练算法类比成学生在学校学习&#xff0c;传…

【华为上机真题 2022】字符串分隔

&#x1f388; 作者&#xff1a;Linux猿 &#x1f388; 简介&#xff1a;CSDN博客专家&#x1f3c6;&#xff0c;华为云享专家&#x1f3c6;&#xff0c;Linux、C/C、云计算、物联网、面试、刷题、算法尽管咨询我&#xff0c;关注我&#xff0c;有问题私聊&#xff01; &…

[附源码]计算机毕业设计springboot环境保护宣传网站

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

后端存储实战课总结(上)

创建和更新订单 表设计 最少应该有以下几张表&#xff1a; 订单主表&#xff1a;保存订单基本信息订单商品表&#xff1a;保存订单中的商品信息订单支付表&#xff1a;保存订单支付和退款信息订单优惠表&#xff1a;保存订单的优惠信息 订单主表和字表是一对多关系&#xf…

1.1 统计学习方法的定义与分类

统计学习方法的定义与分类统计学习的概念统计学习的定义统计学习运用到的领域统计学习的步骤统计学习的分类统计学习的概念 统计学习的定义 统计学习 (Statistical Machine Learning) 是关于计算机基于数据构建概率统计模型并运用模型对数据进行预测与分析的一门学科。 以计…

第五站:操作符(终幕)(一些经典的题目)

目录 一、分析下面的代码 二、统计二进制中1的个数 解一&#xff1a;&#xff08;求出每一个二进制位&#xff0c;来统计1的个数&#xff09; 解二&#xff1a;&#xff08;利用左我们移或右移操作符和按位与&#xff09; 解三&#xff1a;&#xff08;效率最高的解法&…

【iOS】—— GET和POST以及AFNetworking框架

GET和POST以及AFNetworking框架 文章目录GET和POST以及AFNetworking框架GET和POSTGET和POST区别GETGET请求步骤GET请求代码POSTPOST请求步骤POST请求代码AFNetworking简介添加头文件GETGET方法GET方法参数GET方法代码样例POSTPOST方法第一种&#xff1a;第二种&#xff1a;先来…

C++:STL之Vector实现

vector各函数 #include<iostream> #include<vector> using namespace std;namespace lz {//模拟实现vectortemplate<class T>class vector{public:typedef T* iterator;typedef const T* const_iterator;//默认成员函数vector(); …

Netty进阶——粘包与半包(代码示例)

目录一、消息粘包和消息半包的概述1.1、消息粘包1.2、消息半包二、粘包现象代码示例2.1、粘包现象服务端示例代码2.2、粘包现象客户端示例代码2.3、分别启动服务端&#xff0c;客户端&#xff0c;查看服务端结果输出三、半包现象代码示例3.1、半包现象服务端示例代码3.2、半包现…

【强化学习论文】小样本策略泛化的提示决策转换器

文献题目&#xff1a;Prompting Decision Transformer for Few-Shot Policy Generalization 摘要 人类可以利用先前的经验并从少量演示中学习新任务。与旨在通过更好的算法设计实现快速适应的离线元强化学习相比&#xff0c;我们研究了架构归纳偏差对少样本学习能力的影响。我…

不懂单链表? 这篇文章就帮你搞明白

坚持看完&#xff0c;结尾有思维导图总结 链表对指针的操作要求不低链表的概念链表的特性链表的功能(最重要)定义和初始化头插头删细节说明尾插尾删寻找链表元素与打印链表在 某位置后插入删除在某位置的插入删除销毁链表链表的概念 什么是链表 官方概念&#xff1a;链表是一种…

显卡---显卡驱动---CUDA---Cudnn

1. 背景 最近在follow百度的CAE这篇论文时&#xff0c;源码需要的环境为&#xff1a; python 3.7 cuda: 11.0 cudnn: 8.0.4 gcc 8.2 该版本要求与我目前使用的服务器上的CUDA版本不相符合。因此搜索了一篇国外小哥的文章&#xff0c;讲述了如何在一台服务器上安装多个CUDA和Cud…