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年举办回测
,郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。