楼主: ghjktdf
1645 0

[源码分享] 【每日一策】Matlab量化交易策略之 开盘价收盘价相对关系 [推广有奖]

  • 1关注
  • 1粉丝

硕士生

19%

还不是VIP/贵宾

-

威望
0
论坛币
166 个
通用积分
0
学术水平
1 点
热心指数
2 点
信用等级
1 点
经验
1340 点
帖子
225
精华
0
在线时间
39 小时
注册时间
2017-2-16
最后登录
2017-6-26

楼主
ghjktdf 发表于 2017-4-6 14:21:05 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
收盘价开盘价对比关系
策略原理:
         通过前N日的收盘价和前N日的开盘价构造俩条均线
         以收盘均线初次上穿开盘均线的时刻记录一个高点,以该高点构造通道
         突破买入,跌破卖出
         动态跟踪止损出场

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

开盘价收盘价相对关系.png

策略源码:

  1. function Strategy2(default_unit,default_exitway,freq)%
  2. global entry;
  3. targetList = traderGetTargetList();
  4. %获取目标资产信息
  5. HandleList = traderGetHandleList();
  6. %获取账户信息
  7. for k=1:length(targetList);
  8.     %--------------------仓位、K线、当前bar的提取-----------------------------%
  9.     %获取当前仓位
  10.     [marketposition,~,~]=traderGetAccountPosition(HandleList(1),targetList(k).Market,targetList(k).Code);
  11.     %策略中每次取数据的长度
  12.     dlags=10;
  13.     lags=300;
  14.     barnum=traderGetCurrentBar(targetList(k).Market,targetList(k).Code);
  15.     %数据长度限制
  16.     if(barnum<lags)
  17.         continue;
  18.     end
  19.     %获取K线数据
  20.     [time,open,high,low,close,volume,turnover,openinterest] = traderGetKData(targetList(k).Market,targetList(k).Code,'min',freq, 0-lags, 0,false,'FWard');
  21. %     [Dtime,Dopen,Dhigh,Dlow,Dclose,Dvolume,Dturnover,Dopeninterest] = traderGetKData(targetList(k).Market,targetList(k).Code,'day',1,0-dlags, 0,false,'FWard');
  22.     if length(close)<lags
  23.         continue;
  24.     end
  25.     %------------------前n根bar不开仓-----------------------%
  26.     % 虚拟交易所初始手数
  27.     totalunit=0;
  28.     %-------------------------交易逻辑-------------------------------%
  29.     len=10;
  30.     p=0.5;
  31.     TRvalue=TR(close,high,low);
  32.     diff=ma(close,len)-ma(open,len);
  33.     con1=0;
  34.     for i=2:length(diff)
  35.         if diff(end-i+1)>0 && diff(end-i)<0
  36.             highvalue=high(end-i+1);
  37.             con1=1;
  38.             break;
  39.         end;
  40.     end;
  41.     con2=high(end)>highvalue+p*mean(TRvalue(end-len+1:end));
  42.     buycon=con1 && con2;
  43.     con3=0;
  44.     for i=2:length(diff)
  45.         if diff(end-i+1)<0 && diff(end-i)>0
  46.             lowvalue=low(end-i+1);
  47.             con3=1;
  48.             break;
  49.         end;
  50.     end;
  51.     con4=low(end)<lowvalue-p*mean(TRvalue(end-len+1:end));
  52.     sellshortcon=con3 && con4;
  53.     sellcon=diff(end)<0 && diff(end-1)>=0;
  54.     buytocovercon=diff(end)>0 && diff(end-1)<=0;
  55. %     sellshortcon=ma1(end)>upline(end) && close(end)<close(end-1) && close(end-1)<close(end-2);
  56. %     buycon=ma1(end)<dnline(end) && close(end)>close(end-1) && close(end-1)>close(end-2);
  57. %     buytocovercon=ma1(end)<dnline(end) && ma1(end-1)>dnline(end-1);
  58. %     sellcon=ma1(end)>upline(end) && ma1(end-1)<=upline(end-1);
  59.     %------------被动出场操作------------------%
  60.     barsinceentry=barnum-entry.bar;
  61.     backlen=30;    % 回溯的长度(进仓bar之前)
  62.     % 回溯的信息提取
  63.     [backtime,backopen,backhigh,backlow,backclose,~,~,~] = traderGetKData(targetList(k).Market,targetList(k).Code,'min',freq, 0-barsinceentry-backlen, 0,false,'FWard');
  64.     % 根据出场方式计算出场条件
  65.     longstopcon=0;
  66.     shortstopcon=0;
  67.     if entry.exitway==1;
  68.         AFinitial=0;
  69.         AFparam=0.02;
  70.         AFmax=0.2;
  71.         Firstbarmultp=2;  %影响第一根bar的止损价,调高表示可忍受的回撤越多
  72.         [longstopcon,shortstopcon,exitline]=exit1(backopen,backhigh,backlow,backclose,entry.direction,backlen,AFinitial,AFparam,AFmax,Firstbarmultp);
  73.     elseif entry.exitway==2;
  74.         ATRparam=2;
  75.         [longstopcon,shortstopcon,exitline]=exit2(backopen,backhigh,backlow,backclose,entry.direction,backlen,ATRparam);
  76.     elseif entry.exitway==3;
  77.         [longstopcon,shortstopcon,exitline]=exit3(backopen,backhigh,backlow,backclose,entry.direction,backlen);
  78.     elseif entry.exitway==4
  79.         startpoint=10;
  80.         percent=0.3;
  81.         TRmutlp=1;
  82.         [longstopcon,shortstopcon,exitline]=exit4(backopen,backhigh,backlow,backclose,entry.direction,backlen,startpoint,percent,TRmutlp);
  83.     end;
  84.     % 出场执行
  85.     if marketposition>0 && longstopcon
  86.         totalunit=totalunit-entry.unit;
  87.         entryinitial;
  88.     end;
  89.     if marketposition<0 && shortstopcon
  90.         totalunit=totalunit+entry.unit;
  91.         entryinitial;
  92.     end;
  93.     %---------------------------主动出场操作--------------------------------%
  94.     if marketposition>0 && sellcon
  95.         sellunit=default_unit;
  96.         totalunit=totalunit-sellunit;
  97.         entryinitial;
  98.     end;
  99.     if marketposition<0 && buytocovercon
  100.         buytocoverunit=default_unit;
  101.         totalunit=totalunit+buytocoverunit;
  102.         entryinitial;
  103.     end;
  104.     %---------------------------入场操作--------------------------------%   
  105.     if marketposition==0 && buycon
  106.         buyunit=default_unit;
  107.         totalunit=totalunit+buyunit;
  108.         [~]=entryalter2(k,barnum,1,1,default_unit,default_exitway);
  109.         % 合约号,barnum,方向,开关,手数,出场
  110.     end;
  111.     if marketposition==0 && sellshortcon
  112.         sellshortunit=default_unit;
  113.         totalunit=totalunit-sellshortunit;
  114.         [~]=entryalter2(k,barnum,-1,1,default_unit,default_exitway);
  115.         % 合约号,barnum,方向,开关,手数,出场
  116.     end;
  117.     %---------------------- 虚拟交易所最终执行买卖 ------------------------------%
  118.     if totalunit>0
  119.         orderID1=traderDirectBuy(HandleList(1),targetList(k).Market,targetList(k).Code,abs(totalunit),0,'market','totalbuy');
  120.     elseif totalunit<0
  121.         orderID2=traderDirectSell(HandleList(1),targetList(k).Market,targetList(k).Code,abs(totalunit),0,'market','totalsell');
  122.     end;
  123. end
  124. end
复制代码


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



二维码

扫码加我 拉你入群

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

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

关键词:开盘价 收盘价

已有 1 人评分经验 论坛币 收起 理由
fantuanxiaot + 33 + 33 精彩帖子

总评分: 经验 + 33  论坛币 + 33   查看全部评分

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

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