sdfg123 发表于 2017-3-2 14:11

均线系统策略(附源码)

策略原理:
         多头入场:5日均线上穿65日均线且当前价格大于200日均线
         空头入场:5日均线下穿65日均线且当前价格小于200日均线
         出场:动态跟踪止损出场

策略代码:
function  Strategy1(default_unit,default_exitway,freq)%
targetList  =  traderGetTargetList();  %获取目标资产信息HandleList  =  traderGetHandleList();%获取账户句柄global  entrybar;for  k=1:length(targetList);
        %--------------------仓位、K线、当前bar的提取-----------------------------%        %获取当前仓位        =traderGetAccountPosition(HandleList(1),targetList(k).Market,targetList(k).Code);        %策略中每次取数据的长度        lags=200;        dlags=20;        barnum=traderGetCurrentBar(targetList(k).Market,targetList(k).Code);        %数据长度限制        if(barnum<lags)                continue;        end        if(barnum<dlags)                continue;        end        %获取K线数据          =  traderGetKData(targetList(k).Market,targetList(k).Code,'min',freq,  0-lags,  0,false,'FWard');          =  traderGetKData(targetList(k).Market,targetList(k).Code,'day',1,  0-dlags,  0,false,'FWard');        if  legth(close)<lags  ||  length(Dclose)<dlags                continue;        end;                %-------------------------交易逻辑-------------------------------%        %----------入场信号--------------------%        TRvalue=TR(Dclose,Dhigh,Dlow);        ATR=ma(TRvalue,10);        ma2=ma(close,200);        ma0=ma(close,5);        ma1=ma(close,65);        buycon=ma0(end)>ma1(end)  &&  ma0(end-1)<ma1(end-1)  &&  close(end)>ma2(end);        sellshortcon=ma0(end)<ma1(end)  &&  ma0(end-1)>ma1(end-1)  &&  close(end)<ma2(end);        if  default_exitway==1                sellcon=ma0(end)<ma1(end)  &&  ma0(end-1)>ma1(end-1);                buytocovercon=ma0(end)>ma1(end)  &&  ma0(end-1)<ma1(end-1);        elseif  default_exitway==2                TRvalue=TR(close,high,low);                ATR=ma(TRvalue,4);                barsinceentry=barnum-entrybar(k);                [~,entryopen,entryhigh,entrylow,entryclose,~,~,~]  =  traderGetKData(targetList(k).Market,targetList(k).Code,'min',freq,  0-barsinceentry,  0,false,'FWard');                range=4*ATR(end-1);                =exitway1(entryopen,entryclose,entryhigh,entrylow,marketposition,range);        elseif  default_exitway==3                barsinceentry=barnum-entrybar(k);                [~,entryopen,entryhigh,entrylow,entryclose,~,~,~]  =  traderGetKData(targetList(k).Market,targetList(k).Code,'min',freq,  0-barsinceentry,  0,false,'FWard');                enterprice=entryclose(1);                percent=0.5;                ATRparam=1;                sellcon=0;                buytocovercon=0;                if  marketposition>0                        stoplossprice=enterprice-ATRparam*ATR(end);                        stopearnprice=enterprice+ATRparam*ATR(end);                        =exitway3(entryopen,entryclose,entryhigh,entrylow,marketposition,stoplossprice,stopearnprice,percent);                elseif  marketposition<0                        stoplossprice=enterprice+ATRparam*ATR(end);                        stopearnprice=enterprice-ATRparam*ATR(end);                        =exitway3(entryopen,entryclose,entryhigh,entrylow,marketposition,stoplossprice,stopearnprice,percent);                end;        end;        %---------------------------入场操作--------------------------------%        if  sellcon  &&  marketposition>0                orderID1=traderPositionTo(HandleList(1),targetList(k).Market,targetList(k).Code,0,0,'market','sell');                if  orderID1==0                        continue;                end;        end;        if  buytocovercon  &&  marketposition<0                orderID2=traderPositionTo(HandleList(1),targetList(k).Market,targetList(k).Code,0,0,'market','sell');                if  orderID2==0                        continue;                end;        end;        if  buycon  &&  marketposition<=0                buyunit=default_unit;                orderID3=traderBuy(HandleList(1),targetList(k).Market,targetList(k).Code,buyunit,0,'market','buy');                if  orderID3==0                        continue;                end;                entrybar(k)=barnum;        end;        if  sellshortcon  &&  marketposition>=0                sellshortunit=default_unit;                orderID4=traderSellShort(HandleList(1),targetList(k).Market,targetList(k).Code,sellshortunit,0,'market','sell');                if  orderID4==0                        continue;                end;                entrybar(k)=barnum;        end;  endend

sdfg123 发表于 2017-3-3 14:08


策略源码下载:http://www.atrader.com.cn/stra.php?mod=model&pid=145

sdfg123 发表于 2017-3-3 14:10

策略源码下载地址:http://www.atrader.com.cn/stra.php?mod=model&pid=145
页: [1]
查看完整版本: 均线系统策略(附源码)