楼主: 挖矿专家
1656 4

[源码分享] Matlab量化交易策略之 BiasAverage [推广有奖]

  • 0关注
  • 74粉丝

讲师

22%

还不是VIP/贵宾

-

威望
0
论坛币
2016 个
通用积分
5.2622
学术水平
21 点
热心指数
21 点
信用等级
21 点
经验
6055 点
帖子
403
精华
0
在线时间
151 小时
注册时间
2017-2-8
最后登录
2017-6-27

楼主
挖矿专家 发表于 2017-3-27 15:47:00 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

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

回测曲线:

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');%开空单      endendif marketposition>0 && con3    traderSell(HandleList(1),targetList(1).Market,targetList(1).Code,shareNum,0,'market','sell1');%平多单  endif marketposition<0 && con4    traderBuyToCover(HandleList(1),targetList(1).Market,targetList(1).Code,shareNum,0,'market','buytocover1');%平空单  endend

更多免费策略源码下载请登录DigQuant社区-策略资源下载~



二维码

扫码加我 拉你入群

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

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


沙发
ghjktdf 发表于 2017-3-28 10:07:20
回测时间长一点可能更好~

藤椅
ydc129 发表于 2017-3-29 20:33:26
谢谢分享

板凳
ghjktdf 发表于 2017-4-1 10:43:01
感谢分享

报纸
ghjktdf 发表于 2017-4-1 10:43:45
感谢楼主分享

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jr
拉您进交流群
GMT+8, 2026-1-28 07:07