回测曲线(由 Auto-trader 提供回测报告)
策略源码:
- function NEWS1sar(freq) %
- targetList = traderGetTargetList();
- HandleList = traderGetHandleList();
- global recordbar;
- for i=1:length(targetList)
-
- marketposition=traderGetAccountPosition(HandleList(1),targetList(i).Market,targetList(i).Code);
- barnum=traderGetCurrentBar(targetList(i).Market,targetList(i).Code);
- len=100;
- dlen=100;
- [time,open,high,low,close,volume,turnover,openinterest] = traderGetKData(targetList(i).Market,targetList(i).Code,'min',freq, 0-len, 0,false,'FWard');
- [Dtime,Dopen,Dhigh,Dlow,Dclose,Dvolume,Dturnover,Dopeninterest] = traderGetKData(targetList(i).Market,targetList(i).Code,'day',1, 0-dlen, 0,false,'FWard');
- if length(close)<len+1||length(Dclose)<dlen+1
- continue;
- end
-
- %---------------计算进场出场指标----------%
-
- ef=(hhigh(Dclose,20)-llow(Dclose,20))./sum(abs(Dclose(end-20:end)-Dclose(end-20)));
- ef10=MA(ef,10);
- hhv=hhigh(Dhigh,fix(10-(ef10(end)-0.5)*10));
- llw=llow(Dlow,fix(10-(ef10(end)-0.5)*10));
- con1=close(end)>hhv(end-1);%做多
- con2=close(end)<llw(end-1);%做空
- [sarc,sarn,pos,turn]=SAR(high,low);
- N=barnum-recordbar(i);
- if recordbar(i)==0
- N=15;
- end
- N=max(N,15);
- N=min(N,50);
- con20=sum(pos(end-N:end-4)==-1)>=fix(N*0.8)&&sum(pos(end-3:end)==1)>=3;%空转多,反转做多
- con10=sum(pos(end-N:end-4)==1)>=fix(N*0.8)&&sum(pos(end-3:end)==-1)>=3;%多转空,反转做空
- shareNum=5;
- if marketposition==0
- if con1
- order=traderBuy(HandleList(1),targetList(i).Market,targetList(i).Code,shareNum,0,'market','buy');%开多单
- if order~=0
- recordbar(i)=barnum;
- end
- elseif con2
- order=traderSellShort(HandleList(1),targetList(i).Market,targetList(i).Code,shareNum,0,'market','sellshort');%开空单
- if order~=0
- recordbar(i)=barnum;
- end
- end
- end
-
- if marketposition>0 && con10
- order=traderSell(HandleList(1),targetList(i).Market,targetList(i).Code,shareNum,0,'market','sell');%平多单
- if order~=0
- recordbar(i)=0;
- end
- end
-
- if marketposition<0 && con20
- order=traderBuyToCover(HandleList(1),targetList(i).Market,targetList(i).Code,shareNum,0,'market','buytocover');%平空单
- if order~=0
- recordbar(i)=0;
- end
- end
- end
- end
- function ATRValue=ATR(High,Low,Close,Length)
- ATRValue=zeros(length(High),1);
- TRValue=zeros(length(High),1);
- TRValue(2:end)=max([High(2:end)-Low(2:end) abs(High(2:end)-Close(1:end-1)) abs(Low(2:end)-Close(1:end-1))],[],2);
- ATRValue=MA(TRValue,Length);
- end
- function MAValue=MA(Price,Length)
- MAValue=zeros(length(Price),1);
- for i=Length:length(Price)
- MAValue(i)=sum(Price(i-Length+1:i))/Length;
- end
- MAValue(1:Length-1)=Price(1:Length-1);
- end
更多免费策略源码下载请登录DigQuant社区-策略资源下载~


雷达卡




京公网安备 11010802022788号







