全部版块 我的主页
论坛 金融投资论坛 六区 金融学(理论版) 量化投资
6972 11
2017-02-16
策略名称:均线系统策略说明:
         多头入场:5日均线上穿65日均线且当前价格大于200日均线
         空头入场:5日均线下穿65日均线且当前价格小于200日均线
         出场:动态跟踪止损出场


回测曲线:


QQ图片20170216102017.png

策略代码:

function  Strategy1(default_unit,default_exitway,freq)%


targetList  =  traderGetTargetList();  

%获取目标资产信息

HandleList  =  traderGetHandleList();

%获取账户句柄

global  entrybar;

for  k=1:length(targetList);


        %--------------------仓位、K线、当前bar的提取-----------------------------%

        %获取当前仓位

        [marketposition,~,~]=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线数据

        [time,open,high,low,close,volume,turnover,openinterest]  =  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  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);

                [sellcon,buytocovercon]=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);

                        [sellcon,buytocovercon]=exitway3(entryopen,entryclose,entryhigh,entrylow,marketposition,stoplossprice,stopearnprice,percent);

                elseif  marketposition<0

                        stoplossprice=enterprice+ATRparam*ATR(end);

                        stopearnprice=enterprice-ATRparam*ATR(end);

                        [sellcon,buytocovercon]=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;  

end

end


更多策略请登录atrader社区下载 http://www.atrader.com.cn/stra.php?mod=model&pid=145


软件下载: http://www.atrader.com.cn/software.php



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2017-2-20 13:41:33
谢谢分享,我也是做matlab量化的,主要研究方向是多因子选股,欢迎加群交流。Matlab量化-交流 155600983(已满),Matlab量化-交流2群 117392934(可加)。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-2-21 10:29:59
期待以后多分享
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-2-22 13:23:58
楼主私货真心多
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-2-22 15:45:54
感谢支持~
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-2-23 19:02:23
顶!d=====( ̄▽ ̄*)b
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群