【精选】破解波动性突破实盘系统
1、波动性突破实盘系统介绍
1.1 系统设计思想
波动性突破, 本身带有一定程度自适应市场的特点, 为趋势跟踪系统中的上品, 我们再加入时间清仓、 顺势下轿的元素, 在中性的盘整市道中主动退出突破交易, 或在发生第二次波动性突破的时候顺势平仓,这样就部分解决了利润回撒的问题, 至于参数, 个人倾向于没有参数的交易系统模型最好, 最具有未来市场的适应能力, 如果必须要有一两个参数, 那么以该参数在大幅度变动的测试环境下, 仍然可以盈利为佳。
1.2 波动性突破系统的文华财经源码:
TR:= MAX(MAX((HIGH-LOW),ABS(REF(CLOSE, 1)-HIGH)), ABS (REF(CLOSE, 1)-LOW));ATR := MA(TR, 10);DT:=CLOSE>REF(CLOSE, l)+REF(ATR, l)×1.5;KT:=CLOSEREF(CLOSE, l)+REF(ATR, l)×1.5, 2)=1&&DT:KT2:=COUNT(CLOSE<REF(CLOSE, 1)-REF(ATR, l)×1.5, 2)=1&&KT:DT,BPK;KT,SPK;CROSS (BARSLAST (DT),N) || DT2, SP;CROSS (BARSLAST (KT),N) || KT2, BP;
1.3 文华财经函数注解:
文华中:
1、买开/卖开(BK/SK)、买平/卖平(BP/SP)和买平开/卖平开(BPK/SPK)的字母缩写。简单说,就是前者每次交易有间隔,类似于一般人的交易方式;而后者就是平仓后立即反手,是连续在市场交易。 2、REF(X,N) 引用X在N个周期前的值。 3、BARSLAST(X) 求上一次条件成立到当前的周期数。 4、COUNT(X,N) 表示统计在N周期内满足X条件的周期数。 5、CROSS(X,Y) 表示X上穿Y。
2、策略代码分享
2.1 策略文件
function WATR(Int,Begin,cellPar)global idexKglobal Tlenglobal TimeDTglobal TimeKTN=cellPar{1};if Int traderSetParalMode(false); idexK=traderRegKData('day',1); Tlen=length(idexK(:,1)); TimeDT=zeros(Tlen,1); TimeKT=zeros(Tlen,1);else %提取数据 [mp,~,~] = traderGetAccountPositionV2(1,(1:Tlen)); [~,HandListCap,~,~,~]=traderGetAccountInfoV2(1); iddexK = traderGetRegKData(idexK, 30, false); [Multiple, ~, ~, ~, ~, ~, ~] = traderGetFutureInfoV2(1:Tlen); for i=1:Tlen idddexK=iddexK(1+8*(i-1):8*i,:); time=idddexK(1,:); high=idddexK(3,:); low=idddexK(4,:); close=idddexK(5,:); sharenum=floor(HandListCap*0.8/close(end)/Multiple(i)/Tlen); %指标计算 TR=max(max((high(1:end-1)-low(1:end-1)),abs(close(1:end-1)-high(1:end-1))),abs(close(1:end-1)-low(1:end-1))); ATRValue=MA(TR,10); DT=close(end)>close(end-1)+ATRValue(end-1)*1.5; KT=close(end)<close(end-1)-ATRValue(end-1)*1.5; if DT==1 TimeDT(i)=time(end); elseif KT==1 TimeKT(i)=time(end); end D1=close(end-1)>close(end-2)+ATRValue(end-2)*1.5; D2=close(end-2)>close(end-3)+ATRValue(end-3)*1.5; K1=close(end-1)<close(end-2)-ATRValue(end-2)*1.5; K2=close(end-2)<close(end-3)-ATRValue(end-3)*1.5; DT2=(D1+D2==1)&&DT; KT2=(K1+K2==1)&&KT; SP=(time(end-N+1)>TimeDT(i))||DT2; BP=(time(end-N+1)>TimeKT(i))||KT2; %开平仓动作 if mp(i)==0 if KT traderBuyV2(1,i,sharenum,0,'market','buy'); elseif DT traderSellShortV2(1,i,sharenum,0,'market','sell'); end elseif mp(i)>0 if DT traderPositionToV2(1,i,0,0,'market','stop'); elseif BP traderPositionToV2(1,i,0,0,'market','stop'); end elseif mp(i)<0 if KT traderPositionToV2(1,i,0,0,'market','stop'); elseif SP traderPositionToV2(1,i,0,0,'market','stop'); end end endendendfunction MAValue=MA(Price,Length)MAValue=zeros(length(Price),1);for i=Length:length(Price) MAValue(i)=sum(Price(i-Length+1:i))/Length;endMAValue(1:Length-1)=Price(1:Length-1);end
2.2执行文件
targetList1 = traderGetCodeList('dce000');targetList2 =traderGetCodeList('czce000');targetList3 = traderGetCodeList('shfe000');targetList=[targetList1,targetList2,targetList3]; targetList=targetList([2 16 17 18 33 47]);traderSetBacktest(100000000,0.0025,0.02,0,1,0,0);AccountList(1) = {'FutureBackReplay'};N=7;traderRunBacktestV2('WATR',@WATR,{N},AccountList(1),targetList,'day',1,20110101,20170820,'FWard');
3、回测表现
对几种不同类型同时成交量活跃的商品期货2010年至2017年进行回测。
赠书活动
量化投资与机器学习公众号联合机械工业出版社送出5本《MATLAB金融算法分析实战——基于机器学习的股票量化分析》
详解MATLAB金融工具箱及金融算法分析与应用。涵盖43个量化投资指标、14种算法应用和23个算法案例。涵盖14种常用数据处理算法、8种股票预测机器学习算法。详解MATLAB金融数据挖掘中的趋向和发展趋势指标。从机器学习算法出发,用MATLAB对金融大数据进行仿真分析
本书全面系统地讲解了MATLAB金融算法分析与应用,以及金融数据挖掘中的趋向和发展趋势指标,并结合具体的机器学习算法分析,让读者深入学习和掌握MATLAB金融数据机器学习算法。本书注重实战,通过大量的案例,帮助读者更好地理解书中的内容。
- CentOs7.3 搭建 RabbitMQ 3.6 单机服务
- Redis实现信息已读未读状态提示
- HashMap源码理解
- JSP Layout详细介绍
- J2Cache——Java两级缓存框架
- SSM三大框架整合详细总结(Spring+SpringMVC+MyBatis)
- 不到百行代码实现,类似iPhone的滑块开关
- 《深入理解Java虚拟机》(一)Java虚拟机发展史
- Servlet是如何实现MVC的?
- 基础篇章:关于 React Native 的props,state,style的讲解
- 《深入理解Java虚拟机》(三)垃圾收集器与内存分配策略
- 一个类似于进度和打卡进度的自定义view
- 《深入理解Java虚拟机》(四)虚拟机性能监控与故障处理工具
- 第七章:Shiro的Session管理——深入浅出学Shiro细粒度权限开发框架
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- CentOS8下的root密码快速修改方法
- Android开发之自定义刮刮卡实现代码
- Android ScrollView无法填充满屏幕的解决办法
- Android 监听屏幕是否锁屏的实例代码
- Android实现水波纹控件的方法
- Android中GridView布局实现整体居中方法示例
- Android SharedPreferences四种操作模式使用详解
- Ubuntu18.04下将 磁盘挂载在某目录下
- Android编程之绘图canvas基本用法示例
- Android 编译出错版本匹配问题解决办法
- Linux(CentOS7)使用 RPM 安装 mysql 8.0.11的教程
- Android Adapter里面嵌套ListView实例详解
- Centos7 安装达梦数据库的教程
- Android开发使用Handler实现图片轮播功能示例
- 简单实现Android刮刮卡效果