matlab 突破交易策略,Matlab量化交易策略之 波动率突破+简单过滤
策略基本概念是基于区间突破, 当前close突破n天前的均值+m倍的标准差,就long或short。加了一个过滤器,另外收盘价在均线之上。 然后利用移动止损, n天前的ATR,滚动式的获利方式。 策略的概念其实很简单, 核心是回望窗口n天。 n不是固定值, 是实时根据当前市场的状态(波动性等等)计算的。本策略采用60分钟,每隔10分钟进行一次采样。
测试时间较长,从2011年到2017年,绩效曲线相对稳定。
回测曲线(由Auto-Trader软件提供回测报告)
波动率突破.png (165.41 KB, 下载次数: 22)
2017-3-21 17:50 上传
策略源码:
function RBtry(bInit,bDayBegin,cellPar)%%% 函数说明% 上面的三个参数是一种固定结构。% 当在调用该函数如 RBtry(a1,a2,a3,a4,a5,...).所有的参数都会被赋值给cellPar,即cellPar={a1,a2,a3,a4,a5,...}% bInit,在策略逻辑运行前为1,类似优矿等平台的initialize函数。当开始判断是否下单后,该变量为0.% bDayBegin 在一天的第一根Bar为1,其他时刻为0%% 外部和全局参数声明,这是一个固定结构. global g_idxKDay; % 注册日数据的index.日数据是分钟数据的合成.如在日中获取,当日的数据仅是当日已出现数据的合成,不包含之后的数据。 global g_idxKMin; % global g_idxSignal; global openPrice; %记录开盘价 global histExtre; %记录历史达到的极值点,用于跟踪止盈 global TLen; N=cellPar{1}; m=cellPar{2}; Freq = cellPar{3}; stoploss = cellPar{4}; stopprofit = cellPar{5}; trailinggap = cellPar{6}; %% 初始化回测帐户 if bInit% traderSetParalMode(false);%默认是true,因子计算函数并行执行,速度快,不能调试,false串行执行可以设断点调试 g_idxKDay = traderRegKData('day',1);% 只有注册之后才能获取数据。分钟数据的获取方法为 traderRegKData('min',1)。后面的数字是刷新频率。 g_idxKMin = traderRegKData('min',Freq);% TLen = length(g_idxKDay(:,1)); g_idxSignal = traderRegUserIndi(@getSignal,{g_idxKMin,N,m}); %计算因子。调用需要函数如getRange,大括号内是输入参数 openPrice = nan(1,TLen); histExtre = nan(1,TLen);%% 交易逻辑 else dSignal = traderGetRegUserIndi(g_idxSignal,1); [mp,~,~]=traderGetAccountPositionV2(1,1:TLen); % ――――――――――――――――――调仓――――――――――――――――――― for i=1:TLen dataDay = traderGetRegKData(g_idxKMin(i,:),1,false); % 数据长度足够;数据非空;当日的成交价不为0;当日高低不同 if isempty(dSignal(i,:)) || isempty(dataDay) || dataDay(6,end) ==0 || dataDay(3,end)- dataDay(4,end)==0 continue; end %% 记录历史达到的最大有利值 if mp(i)>0 histExtre(i) = max(histExtre(i),dataDay(3,end)); elseif mp(i)<0 histExtre(i) = min(histExtre(i),dataDay(4,end)); end %%平仓,信号依次为反转平仓、止损平仓、跟踪止损平仓 %多单 closeBuy1 = mp(i)>0 && dataDay(5,end)0 && histExtre(i)>openPrice(i)+stopprofit*dSignal(i,end) && dataDay(5,end)openPrice(i)+stoploss*dSignal(i,end); closeSell2 = mp(i)<0 && histExtre(i)histExtre(i)+trailinggap*dSignal(i,end); if closeBuy1 + closeBuy2 + closeSell1 + closeSell2>0 traderPositionToV2(1,i,0,0,'market','close'); end % 开仓 amount = 2000; if mp(i) == 0 && dSignal(i+TLen,end)>0 %&& dSignal(i+2*TLen,end)>0 traderDirectBuyV2(1,i,amount,0,'market','buy1');%开多单 openPrice(i) = dataDay(5,end); histExtre(i) = dataDay(5,end); elseif mp(i) == 0 && dSignal(i+TLen,end)<0% && dSignal(i+2*TLen,end)<0 traderDirectSellV2(1,i,amount,0,'market','sell1');%开空单 openPrice(i) = dataDay(5,end); histExtre(i) = dataDay(5,end); end end end end%% 计算因子的自定义函数function value=getSignal(cellPar,bpPFCell)%调用该函数的参数将会全部被赋给cellPar%bpPFCell为一个时间序列,标记特定的刷新时刻%%%参数声明 idxK =cellPar{1}; N = cellPar{2}; m = cellPar{3};%%%函数计算 [targetNum,~]=size(idxK); value = nan(1,3*targetNum);%第一个ATR,第三个均值突破 for i=1:targetNum regKMatrix = traderGetRegKData(idxK(i,:),N+10,false,bpPFCell); regKMatrix(:,any(isnan(regKMatrix),1))=[]; [~,KLen]=size(regKMatrix); if KLen>=N+2 value1 = abs(regKMatrix(3,end-N+1:end) - regKMatrix(4,end-N+1:end));% 当日最高价减去当日最低价 value2 = abs(regKMatrix(3,end-N+1:end) - regKMatrix(5,end-N:end-1));% 当日最高价减去前日收盘价的绝对值 value3 = abs(regKMatrix(4,end-N+1:end) - regKMatrix(5,end-N:end-1));% 当日最低价减去前日收盘价的绝对值 TRlist=max(value1,max(value2,value3)); value(i) = mean(TRlist); stds = std(regKMatrix(5,end-N+1:end)); means = mean(regKMatrix(5,end-N+1:end)); if regKMatrix(5,end)>stds*m + means value(i+targetNum) = 1; elseif regKMatrix(5,end)
更多免费策略源码下载请登录DigQuant社区-策略资源下载~ww w.digquant.com.cn/stra.php
matlab 突破交易策略,Matlab量化交易策略之 波动率突破+简单过滤相关推荐
- 用于量化交易的计算机语言,量化交易用什么语言最合适
量化交易用什么语言最合适 发布人:金数源 更新时间:2018-12-12 18:29:57 随着现在数据获取越来越容易(当然,我们金数源也贡献了一份力量,推动着中国量化交易的发展 )量化交易让交易者 ...
- python量化交易心得_Python量化交易之“凯特纳通道”突破策略!
点及财经,股票期货专业投机者. 前言 说起通道,我想大家可能对海龟通道(唐奇安通道).布林线通道已经耳熟能详了. 布林通道的计算原理就是均线加减N倍ATR .那么今天再给大家介绍一个通道算法,那就是凯 ...
- python 完整的海龟策略_9海龟策略_python量化交易_Python视频-51CTO学院
清华编程高手尹成带你基于算法实践python量化交易 量化交易是指以先进的数学模型替代人为的主观判断,利用计算机技术从庞大的历史数据中海选能带来超额收益的多种"大概率"事件以制定策 ...
- python量化交易:Joinquant_量化交易基础【九】:策略评价与建立模拟
本文是量化交易零基础入门教程的第九篇. 摘要 评价策略回测的指标 建立模拟交易 未来函数 运行过慢 过拟合 策略失效 收益与风险的取舍 自测与自学 在学习了如何编写策略后,我们将介绍下评价策略回测的指 ...
- python量化交易:Joinquant_量化交易基础【六】:循环与多股票策略
本文是量化交易零基础入门教程的第六篇. 摘要 学习用list存储多个股票 学习使用for循环 学习写一个简单的多股票策略 自测与自学 我们继续以如下这个简单的策略为例进行学习在策略中操作多个股票. d ...
- python量化交易:Joinquant_量化交易基础【二】:量化策略的基本框架
本文是量化交易零基础入门教程的第二篇. 摘要 策略编写的基本框架及其实现 回测的含义及其实现 初步学习解决代码错误 周期循环的开始时间 自测与自学 通过前文对量化交易有了一个基本认识之后,我们开始学习 ...
- 用python完成选股策略_python量化选股策略_量化股市
金字塔决策交易系统 等安装结束后自己找缺少的对应的软件安装.2.软件本体开始安装3.阅读勾选软件安装协议4.选择软件安装目录5.准备开始安装6.等待以后就可以看到金字塔决策交易系统安装完成!登陆软件后 ...
- python量化交易:Joinquant_量化交易基础【三】:python基本语法与变量
本文是量化交易零基础入门教程的第三篇. 摘要 python是什么 python的基础语法 变量与赋值 Python 保留字符 打印 print 全局变量 基本数据类型-数字与字符串 算术运算 查看数据 ...
- 量化交易---我的量化交易之路---001
一.我的投资之路 我是从2017开始接触基金.股票之类的.印象中,当时是买基金,然后买进去进去就亏了,然后后来就没有弄,再次开始交易之类的2020,就开始搞货币基金,股票,期权,美股,还有数字货币.. ...
- python量化交易:Joinquant_量化交易基础【四】:下单、函数、API
本文是量化交易零基础入门教程的第四篇. 摘要 函数与API 函数使用方法 如何看API文档 自定义函数方法 常用的下单函数 自测与自学 我们继续以前文策略代码为例进行讲解,如下: def initia ...
最新文章
- Udacity机器人软件工程师课程笔记(二十四) - 控制(其二) - PID优化,梯度下降算法,带噪声的PID控制
- 格式化json日期'/Date(-62135596800000)/'
- android电源驱动程序,[转]Android虚拟电源管理驱动
- asio 异步demo
- 页面嵌套除了iframe还能用什么方法_CTF|有关CSP绕过的方法
- 算法优化:rgb向yuv的转化最优算法,快得让你吃惊!
- Linux 文件与目录管理+用户管理命令(详解+练习)
- java list 重复对象_list集合去除重复对象的实现
- activiti 文档_Activiti快速入门 kft-activiti-demo
- 微机原理与接口技术整理
- 科创板第二批受理名单公布,为何AI独角兽 “全军覆没”?
- 石家庄地铁售票系统源代码
- 发布一个太空大战小游戏
- 【rpm】源码包制作rpm包|修改rpm、重新制作rpm包
- JAVA 根据模板生成doc文件
- PMP项目管理培训总结
- C#—飞行棋超全总结(全注释版)
- 解决数字小键盘按shift+ 数字才可以使用的问题
- 魔众企业VI系统-帮您快速创建现代化的企业形象
- 请说说你对互联网行业的理解。