LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 新闻观点 > 点宽专栏——ORB突破

点宽专栏——ORB突破

2021-01-26 点宽DigQuant 来源:区块链网络

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策略文件

function ORB(Bint,beginD,cellPar)%提取参数freq=cellPar{1};stop_rate=cellPar{2};global idexglobal Tlenglobal TTglobal newpriceglobal timeTTglobal ORBvalueglobal sglobal 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)<mean(close(end-19:end))&&weekday(time(end))~=6&&maketime==0? ? ? ? ? ? ?orderID= traderPositionToV2(1,i,-sharenum,0,'market','sell');? ? ? ? ? ? ?if?orderID~=0? ? ? ? ? ? ? ? ?TT(i)=1;? ? ? ? ? ? ? ? ?maketime=1;? ? ? ? ? ? ?end? ? ? ? ?end? ? ?end? ? ?%开仓时刻均价记录? ? ?if?TT(i)==1? ? ? ? ?newprice(i)=AvgPrice;? ? ? ? ?TT(i)=0;? ? ?end? ? ?%时间控制平仓? ? ?if?timeTT==0? ? ? ? ?traderPositionToV2(1,i,0,0,'market','stop');? ? ? ? ?maketime=0;? ? ?end? ? ?%滚动止盈止损平仓? ? ?if?Position<0? ? ? ? ?if??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-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?endend

3.2执行文件

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年进行回测

—-

编译者/作者:点宽DigQuant

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...