楼主: 挖矿专家
1548 1

[源码分享] 【每日一策】Matlab量化交易策略之 HHLL [推广有奖]

  • 0关注
  • 74粉丝

讲师

22%

还不是VIP/贵宾

-

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

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
策略思路:
多头条件:最高价大于前一段时间的最高价,且最低价大于前一段时间的最低价
空头条件:最高价小于前一段时间的最高价,且最低价小于前一段时间的最低价

策略源码:

  1. function HHLL(lags,freq,stopgap,trailinggap,shareNum)
  2. %高高低低
  3.     global score1;
  4.     targetList = traderGetTargetList();
  5.     HandleList = traderGetHandleList();
  6.     [marketposition,~,~]=traderGetAccountPosition(HandleList(1),targetList(1).Market,targetList(1).Code);

  7.     [BarNumber,BarTime,BarOpen,BarHigh,BarLow,BarClose,BarVolume,BarTurnOver,BarOpenInterest] = traderGetCurrentBar(targetList(1).Market,targetList(1).Code);

  8.     [time1,open1,high1,low1,close1,volume1,turnover1,openinterest1] = traderGetKData(targetList(1).Market,targetList(1).Code,'min',freq, 0-lags, 0,false,'FWard');
  9.    
  10.     con11=0;con12=0;
  11.    
  12.     if isempty(score1)
  13.         score1.time(1)=BarTime;
  14.         score1.high(1)=BarHigh;
  15.         score1.low(1)=BarLow;
  16.     else
  17.         len1=length(score1.high);
  18.    
  19.         if len1==1
  20.             if (BarLow<score1.low(1) )
  21.                 if (BarHigh<score1.high(1) )
  22.                     score1.time(1+1)=BarTime;
  23.                     score1.high(1+1)=BarHigh;
  24.                     score1.low(1+1)=BarLow;
  25.                 else
  26.                     score1.time(1)=BarTime;
  27.                     score1.high(1)=BarHigh;
  28.                     score1.low(1)=BarLow;
  29.                 end
  30.             elseif (BarLow>=score1.low(1) )
  31.                 if (BarHigh>score1.high(1) )
  32.                     con11=1;
  33.                     score1.time(1+1)=BarTime;
  34.                     score1.high(1+1)=BarHigh;
  35.                     score1.low(1+1)=BarLow;
  36.                 end
  37.             end
  38.             
  39.         else
  40.         
  41.         if    (score1.low(len1)<score1.low(len1-1) )   
  42.             if (BarLow<score1.low(len1) )
  43.                 if (BarHigh<score1.high(len1) )
  44.                     score1.time(len1+1)=BarTime;
  45.                     score1.high(len1+1)=BarHigh;
  46.                     score1.low(len1+1)=BarLow;
  47.                 else
  48.                     score1.time(len1)=BarTime;
  49.                     score1.high(len1)=BarHigh;
  50.                     score1.low(len1)=BarLow;
  51.                 end
  52.             elseif (BarLow>=score1.low(len1) )
  53.                 if (BarHigh>score1.high(len1) )
  54.                     con11=1;
  55.                     score1.time(len1+1)=BarTime;
  56.                     score1.high(len1+1)=BarHigh;
  57.                     score1.low(len1+1)=BarLow;
  58.                 end
  59.             end
  60.             
  61.         elseif (score1.high(len1)>score1.high(len1-1) )   
  62.             if (BarHigh>score1.high(len1) )
  63.                 if (BarLow>score1.low(len1) )
  64.                     score1.time(len1+1)=BarTime;
  65.                     score1.high(len1+1)=BarHigh;
  66.                     score1.low(len1+1)=BarLow;
  67.                 else
  68.                     score1.time(len1)=BarTime;
  69.                     score1.high(len1)=BarHigh;
  70.                     score1.low(len1)=BarLow;
  71.                 end
  72.             elseif (BarHigh<=score1.high(len1) )
  73.                 if (BarLow<score1.low(len1) )
  74.                     con12=1;
  75.                     score1.time(len1+1)=BarTime;
  76.                     score1.high(len1+1)=BarHigh;
  77.                     score1.low(len1+1)=BarLow;
  78.                 end
  79.             end
  80.         end
  81.         end
  82.     end

  83.    
  84.     if marketposition <=0 && con11
  85. %         fprintf('%s  买  %s  %s  %d手  市价\n',datestr(BarTime),targetList(1).Market,targetList(1).Code,shareNum);
  86.         orderID1=traderDirectBuy(HandleList(1),targetList(1).Market,targetList(1).Code,shareNum,0,'market','buy1');
  87.     end

  88.     if marketposition >= 0 && con12
  89. %         fprintf('%s  卖  %s  %s  %d手  市价\n',datestr(BarTime),targetList(1).Market,targetList(1).Code,shareNum);
  90.         orderID2=traderDirectSell(HandleList(1),targetList(1).Market,targetList(1).Code,shareNum,0,'market','sell1');
  91.     end
  92. end
复制代码

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



二维码

扫码加我 拉你入群

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

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


沙发
挖矿专家 发表于 2017-3-29 11:04:01 |只看作者 |坛友微信交流群
代码已经用编辑器重新编辑啦~

使用道具

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

本版微信群
加好友,备注jr
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-3 06:50