contact@digquant.com.cn
400-1860-552
官方群:463071731
Toggle navigation
首页
量化专栏
策略资源
人才club
社区
量化课堂
数据字典
AT相关
软件下载
Matlab API
Python API
经典案例
常见问题
注册
登录
策略&研究
十大经典日内策略(一)——ORB突破
小试牛刀
发表于 2018-4-19 11:08:02
1025 次浏览
0 评论
0
0
**`十大经典日内交易策略——ORB突破`** ##1.ORB突破思想 ###1.1起源 ORB突破交易最早于1988年由美国基金经理托比提出。他通过衡量开盘价与最高价、最低价距离的较小者,为失败突破幅度,后市一旦超过这个幅度,便认为是真正的突破。在实际应用中,早盘的突破、窄幅波动后的突破,可作为有效的过滤条件。 ###1.2主要特点: 日内交易策略,收盘平仓; ORB失败突破基于过去N个交易日ORB指标; 上轨=今日开盘价+N天ORB*M; 下轨=今日开盘价-N天ORB*M; 当价格突破上轨,买入开仓; 当价格跌穿下轨,卖出开仓。 ##2.对于ORB思想的改进 ###2.1发现问题 - 通过行情图研究发现突破ORB下轨做空需要比突破ORB上轨做多更为严格 - 一日内多次突破ORB轨道导致多次开平仓抬高了手续费又降低了胜率 - 仅每日收盘平仓对于行情的把握太过迟钝 ###2.2改进想法 - 设定ORB上轨于下轨振幅比为1:2 - 在开仓条件中加入均线过滤与日历过滤去噪,同时控制每一天最多开仓一次 - 平仓条件加入滚动止盈止损平仓同时止盈止损基础价格为每次开仓时刻的均价 ##3.策略代码分享 ###3.1策略文件 ```matlab function ORB(Bint,beginD,cellPar) %提取参数 freq=cellPar{1}; stop_rate=cellPar{2}; global idex global Tlen global TT global newprice global timeTT global ORBvalue global s global maketime %初始化 if Bint traderSetParalMode(false); idex=traderRegKData('min',freq); Tlen=length(idex(:,1)); newprice=zeros(Tlen,1); TT=zeros(Tlen,1); timeTT=zeros(Tlen,1); ORBvalue=0; else if isempty(s) [ValidCash,MarketCap,~,~,~] = traderGetAccountInfoV2(1); s=ValidCash+MarketCap; end %获取数据 iddexK = traderGetRegKData(idex, 61, false); for i=1:Tlen idddexK=iddexK(1+8*(i-1):8*i,:); time=idddexK(1,:); open=idddexK(2,:); high=idddexK(3,:); low=idddexK(4,:); close=idddexK(5,:); [Position,~,AvgPrice] = traderGetAccountPositionV2(1,i); [Multiple, ~, ~, ~, ~, ~, ~] = traderGetFutureInfoV2(i); %时间格式转换 gettime=datevec(time(end)); nowtime=10000*gettime(end,4)+100*gettime(end,5)+gettime(end,6); %时间控制 if nowtime>=90000&&nowtime<=110000 timeTT=1; elseif nowtime>=123000&&nowtime<=143000 timeTT=2; else timeTT=0; end %资金管理 sharenum=floor(s*0.8/Multiple/close(end)/Tlen); %ORB振幅描述 if nowtime>=110500&&nowtime<111500 a=mean(open(end-5:end)); b=mean(high(end-5:end)); c=mean(low(end-5:end)); ORBvalue=max(abs(a-b),abs(a-c)); end %开仓 if Position==0&&timeTT==2 if close(end)>(open(end)+ORBvalue)&&close(end)>mean(close(end-19:end))&&weekday(time(end))~=6&&maketime==0 orderID= traderPositionToV2(1,i,sharenum,0,'market','buy'); if orderID~=0 TT(i)=1; maketime=1; end elseif close(end)<(open(end)-2*ORBvalue)&&close(end)
newprice(i)*(1+stop_rate) traderPositionToV2(1,i,0,0,'market','stop'); if close(end)< newprice(i)*(1-3*stop_rate) newprice(i)=close(end); end end end if Position>0 if close(end)
newprice(i)*(1+3*stop_rate) newprice(i)=close(end); end end end end end ``` ###3.2执行文件 ```matlab TargetList(1).Market = 'CFFEX'; TargetList(1).Code = 'IF0000'; stop_rate=0.02; freq=10; AccountList(1) = {'FutureBackReplay'}; traderRunBacktestV2('ORB',@ORB,{freq,stop_rate},AccountList(1),TargetList,'min',10,20100101,20170820,'FWard'); ``` ##4.回测表现 对沪深300指数期货2010年至2017年进行回测  
0 条评论
添加评论
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
小试牛刀
+
关注
关注:
0
粉丝:
16
8 个帖子
0 个策略
十大经典日内策略(一)——ORB突破
AT 平台策略编写示例--双均线策略
AT 平台策略编写示例--双均线策略
十大经典交易策略(三)——Dual Thrust 交易策略
十大经典交易策略(二)——Pivot Point交易法
查看更多
>
每周精选
【研报复现】中信证券——跨期价差分析与跨期套利研究
【研报复现】华泰证券——高股息率模型精选打新底仓
提高MATLAB编程能力的一些方法 ——【助力横琴杯】
【Matlab量化策略基础】——基于Matlab金融工具箱进行行情数据绘图
国泰君安191短周期因子之一——因子体系介绍