15分钟K线组合
策略思路:从今天新开盘开始,每隔五分钟的点提取收盘价,提取四个收盘价,比较收盘价的大小,如果这四个收盘价呈现上升的状态,做多;如果下降态势,做空。第二天开盘平仓。
回测曲线(由Auto-Trader提供回测报告):
策略代码:
function kzuhe(freq) %%freq为输入频率%len为计算使用的长度%band为波动乘数%shareNum为操作的手数%%%开盘15分钟的k线组合情况targetList = traderGetTargetList();HandleList = traderGetHandleList();% global p;% global record;for i=1:length(targetList) dlen=60; barnum=traderGetCurrentBar(targetList(i).Market,targetList(i).Code); marketposition=traderGetAccountPosition(HandleList(1),targetList(i).Market,targetList(i).Code); len=20; [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, -20, 0,false,'FWard'); [mtime,mopen,mhigh,mlow,mclose,mvolume,mturnover,mopeninterest] = traderGetKData(targetList(i).Market,targetList(i).Code,'min',1, 0-dlen, 0,false,'FWard'); if length(close)<len+1||length(Dclose)<21||length(mclose)<dlen+1 continue; end %----------------------------日内策略---------------% gettime=datevec(mtime); timenum=gettime(:,4)*100+gettime(:,5); %------------------开盘30分钟后进行操作--------------% if timenum(end)<=0940 continue end w1=find(timenum==0916,1,'last'); w2=find(timenum==0921,1,'last'); w3=find(timenum==0926,1,'last'); w4=find(timenum==0931,1,'last'); con1=(mclose(w2)>mclose(w1)&mclose(w3)>mclose(w2))|(mclose(w3)>mclose(w2)&mclose(w4)>mclose(w3))|(mclose(w2)>mclose(w1)&mclose(w4)>mclose(w3)); con2=(mclose(w2)<mclose(w1)&mclose(w3)<mclose(w2))|(mclose(w3)<mclose(w2)&mclose(w4)<mclose(w3))|(mclose(w2)<mclose(w1)&mclose(w4)<mclose(w3)); con10=timenum(end)>=1500; con20=timenum(end)>=1500; %----------仓位操作-----------% [~,~,Multiple,MinMove,~,~,~,LongMargin,~] = traderGetFutureInfo(targetList(i).Market,targetList(i).Code); [cash,~,~,~,~] = traderGetAccountInfo(HandleList(1)); shareNum=cash/close(end)/LongMargin/7/Multiple; if marketposition==0 if con1 traderBuy(HandleList(1),targetList(i).Market,targetList(i).Code,shareNum,0,'market','buy');%开多单 elseif con2 traderSellShort(HandleList(1),targetList(i).Market,targetList(i).Code,shareNum,0,'market','sellshort');%开空单 end end if marketposition>0 && con10 order= traderPositionTo(HandleList(1),targetList(i).Market,targetList(i).Code,0,0,'market','~~'); end if marketposition<0 && con20 order= traderPositionTo(HandleList(1),targetList(i).Market,targetList(i).Code,0,0,'market','~~'); end endendfunction 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);endfunction 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
更多免费策略源码下载请登录DigQuant社区(原atrader社区)-策略资源下载~