全部版块 我的主页
论坛 金融投资论坛 六区 金融学(理论版) 量化投资
2711 5
2017-03-02
策略名称:BiasAverage


策略思路:
多头进场条件:快速均线上穿慢速均线后,又掉头向下靠近慢速均线但不向下突破,再上拉时买入
空头进场条件:慢速均线上穿快速均线后,又掉头向下靠近快速均线但不向下突破,再上拉时卖出
多头出场条件:慢速均线上穿快速均线
空头出场条件:快速均线上穿慢速均线


回测曲线(回测报告由Auto-trader提供)


BiasAverage.png

策略代码:

function  BiasAverage(len1,len2,len3,len,n,shareNum,Freq)%上面五个为输入参数  


%  ------------  ThreeLine  Strategy-------------------

%  Freq  为输入时间频率

%  shareNum  为操作的手数

%  len1  为快速均线参数

%  len2  为慢速均线参数

%  len3  为乖离率长度

%  len    为滑动窗口大小,len3<len1<len2<len

%  n        为离差滑动平均值门限



%---------------------策略初始化与是否日内平仓---------------%

traderDailyCloseTime(145000);          %  每天14:50分平仓        如果没有日内平仓,去掉这句话就可以了。

targetList  =  traderGetTargetList();  %获取交易标的句柄

HandleList  =  traderGetHandleList();  %获取账户句柄

[marketposition,~,~]=traderGetAccountPosition(HandleList(1),targetList(1).Market,targetList(1).Code);  %获取当前仓位状况

lags=300;

barnum=traderGetCurrentBar(targetList(1).Market,targetList(1).Code);  %当前Bar的编号

if(barnum<=lags)  %当编号不超过所取的数据长度时,返回

        return;

end



%---------------------策略提取数据---------------%

[time,open,high,low,close,volume,turnover,openinterest]  =  traderGetKData(targetList(1).Market,targetList(1).Code,'min',Freq,  0-lags,  0,false,'FWard');  %提取数据,从当前开始往前取lags个数据


%---------------------策略计算与基本逻辑---------------%

[ma1,ma2]=movavg(close(end-len+1:end),len1,len2);

ma1=ma1(len2:end);          %快速均线

ma2=ma2(len2:end);          %慢速均线

value1=ma1-ma2;                %均线离差

[bias,bias]=movavg(value1,len3,len3);      %均线离差均值

con1=ma1(end)>ma2(end)  &&  bias(end-2)>bias(end-1)  &&  bias(end-1)<bias(end)  &&  bias(end)<n;    %快速均线上穿慢速均线后,又掉头向下靠近慢速均线但不向下突破,再上拉时买入

con2=ma1(end)<ma2(end)  &&  bias(end-2)<bias(end-1)  &&  bias(end-1)>bias(end)  &&  bias(end)<n;    %慢速均线上穿快速均线后,又掉头向下靠近快速均线但不向下突破,再上拉时卖出

con3=ma1(end)<ma2(end);      %慢速均线上穿快速均线

con4=ma1(end)>ma2(end);      %快速均线上穿慢速均线



%----------------------策略主体-------------------------------%

if  marketposition==0  

        if  con1

                traderBuy(HandleList(1),targetList(1).Market,targetList(1).Code,shareNum,0,'market','buy1');%开多单   

        end

        if  con2

                traderSellShort(HandleList(1),targetList(1).Market,targetList(1).Code,shareNum,0,'market','sellshort1');%开空单   

        end

end

if  marketposition>0  &&  con3

        traderSell(HandleList(1),targetList(1).Market,targetList(1).Code,shareNum,0,'market','sell1');%平多单   

end

if  marketposition<0  &&  con4

        traderBuyToCover(HandleList(1),targetList(1).Market,targetList(1).Code,shareNum,0,'market','buytocover1');%平空单   

end

end


更多免费策略源码下载请登录atrader社区-策略服务~


二维码

扫码加我 拉你入群

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

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

全部回复
2017-3-2 14:53:10
这个效果看起来一般  在RB上表现应该会好些
二维码

扫码加我 拉你入群

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

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

2017-3-3 10:31:00
嗯,后续可以试试
二维码

扫码加我 拉你入群

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

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

2017-3-3 14:39:57
有双均线的吗?
二维码

扫码加我 拉你入群

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

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

2017-3-4 15:48:22
ghjktdf 发表于 2017-3-3 14:39
有双均线的吗?
去网站上找吧~
二维码

扫码加我 拉你入群

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

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

2017-3-6 10:42:51

atrader 社区已经更名为 digquant 社区,迁移至 www.digquant.com.cn
二维码

扫码加我 拉你入群

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

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

栏目导航
热门文章
推荐文章

说点什么

分享

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