仍然按照经典的DualThrust定义上轨和下轨,不设止盈止损,日内不平仓。
回测曲线(由Auto-trader提供回测报告)
策略源码:
- function Strategy1(default_unit,default_exitway,freq)%
- targetList = traderGetTargetList();
- %获取目标资产信息
- HandleList = traderGetHandleList();
- %获取账户句柄
- global enterprice;
- for k=1:length(targetList);
-
- %--------------------仓位、K线、当前bar的提取-----------------------------%
- %获取当前仓位
- [marketposition,~,~]=traderGetAccountPosition(HandleList(1),targetList(k).Market,targetList(k).Code);
- %策略中每次取数据的长度
- lags=200;
- dlags=10;
- barnum=traderGetCurrentBar(targetList(k).Market,targetList(k).Code);
- %数据长度限制
- if(barnum<lags)
- continue;
- end
- %获取K线数据
- [time,open,high,low,close,volume,~,~] = traderGetKData(targetList(k).Market,targetList(k).Code,'min',freq, 0-lags, 0,false,'FWard');
- [Dtime,Dopen,Dhigh,Dlow,Dclose,Dvolume,~,~] = traderGetKData(targetList(k).Market,targetList(k).Code,'day',1, 0-dlags, 0,false,'FWard');
- if length(close)<lags || length(Dclose)<dlags
- continue;
- end;
- %-------------------------交易逻辑-------------------------------%
- %----------入场信号--------------------%
- N=3;
- k1=0.5;
- k2=0.5;
- stoplossratio=0.5;
- unit=1;
- HH=max(Dhigh(end-N:end-1));
- HC=max(Dclose(end-N:end-1));
- LC=min(Dclose(end-N:end-1));
- LL=min(Dlow(end-N:end-1));
- range=max(HH-LC,HC-LL);
- upline=Dopen(end)+k1*range;
- dnline=Dopen(end)-k2*range;
- buycon=close(end)>upline;
- sellshortcon=close(end)<dnline;
- sellcon=0;
- buytocovercon=0;
- if enterprice~=0
- sellcon=close(end)<dnline || close(end)<enterprice*(1-stoplossratio);
- buytocovercon=close(end)>upline || close(end)>enterprice*(1+stoplossratio);
- end;
- if buytocovercon && marketposition<0
- orderID1=traderBuyToCover(HandleList(1),targetList(k).Market,targetList(k).Code,'all',0,'market','buy');
- if orderID1==0
- continue;
- end;
- end;
- if sellcon && marketposition>0
- orderID1=traderSell(HandleList(1),targetList(k).Market,targetList(k).Code,'all',0,'market','sell');
- if orderID1==0
- continue;
- end;
- end;
- if buycon && marketposition<=0
- orderID1=traderBuy(HandleList(1),targetList(k).Market,targetList(k).Code,unit,0,'market','buy');
- if orderID1==0
- continue;
- end;
- enterprice=close(end);
- end;
- if sellshortcon && marketposition>=0
- orderID1=traderSellShort(HandleList(1),targetList(k).Market,targetList(k).Code,unit,0,'market','sellshort');
- if orderID1==0
- continue;
- end;
- enterprice=close(end);
- end;
- end
- end
更多免费策略源码下载请登录DigQuant社区-策略资源下载~


雷达卡


京公网安备 11010802022788号







