楼主: 挖矿专家
1179 6

[源码分享] 【每日一策】Matlab量化交易策略之 以小博大_原始 [推广有奖]

  • 0关注
  • 74粉丝

讲师

22%

还不是VIP/贵宾

-

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

楼主
挖矿专家 发表于 2017-3-23 18:38:25 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
策略思路:

收盘价站稳今天开盘价30分钟,做多;反之做空。收盘价低于今日开盘价则多头出场,反之则空头出场,或者收盘前,主动平仓。


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

以小博大原始.png


策略源码:
  1. function boda(freq) %
  2. %freq为输入频率
  3. %len为计算使用的长度
  4. %band为波动乘数
  5. %shareNum为操作的手数
  6. %%%以小博大的日内开盘突破日内策略,30分钟站稳

  7. targetList = traderGetTargetList();
  8. HandleList = traderGetHandleList();
  9. global p;
  10. % global record;
  11. for i=1:length(targetList)
  12.     dlen=600;
  13.     barnum=traderGetCurrentBar(targetList(i).Market,targetList(i).Code);
  14.     marketposition=traderGetAccountPosition(HandleList(1),targetList(i).Market,targetList(i).Code);   
  15.     len=21;
  16.    
  17.     [time,open,high,low,close,volume,turnover,openinterest] = traderGetKData(targetList(i).Market,targetList(i).Code,'min',freq, 0-len, 0,false,'FWard');
  18.     [Dtime,Dopen,Dhigh,Dlow,Dclose,Dvolume,Dturnover,Dopeninterest] = traderGetKData(targetList(i).Market,targetList(i).Code,'day',1, -20, 0,false,'FWard');
  19.     [mtime,mopen,mhigh,mlow,mclose,mvolume,mturnover,mopeninterest] = traderGetKData(targetList(i).Market,targetList(i).Code,'min',1, 0-dlen, 0,false,'FWard');
  20.     if length(close)<len+1||length(Dclose)<21||length(mclose)<dlen+1
  21.         continue;
  22.     end
  23.     %----------------------------日内策略---------------%
  24.     gettime=datevec(mtime);
  25.     timenum=gettime(:,4)*100+gettime(:,5);
  26.     %------------------开盘30分钟后进行操作--------------%
  27.     if timenum(end)<0945
  28.         continue
  29.     end
  30.     %----------------------找前30分钟的位置-----------------%
  31.     id=find(timenum>=0916&timenum<=0945,30,'last');%找最近的前30分钟数据的位置
  32.     if length(id)<30
  33.         continue
  34.     end
  35.     p{i}.price=mopen(id(1));%记录开盘价
  36.     for k=1:length(id)
  37.         p{i}.con=[p{i}.con,mclose(id(k))>p{i}.price];
  38.     end
  39.    
  40.     %-----------------------日内策略-----------------------------------------%
  41.     if timenum(end)>0900&&timenum(end)<1448||timenum(end)<2100&&timenum(end)>2400||timenum(end)>0000&&timenum(end)<0158
  42.         cont=1;
  43.     else cont=0;
  44.         p{i}.state=0;
  45.         p{i}.price=0;
  46.         p{i}.con=[];
  47.     end
  48.     %---------------------进出场指标--------%
  49.     con1=sum(p{i}.con)>=30&&cont;%30分钟内价格均在上方,做多
  50.     con2=sum(p{i}.con)==0&&cont;%30分钟内价格均在下方,做空
  51.     con10=close(end)<p{i}.price||cont==0;
  52.     con20=close(end)>p{i}.price||cont==0;
  53.     %----------仓位操作-----------%
  54.     [~,~,Multiple,MinMove,~,~,~,LongMargin,~] = traderGetFutureInfo(targetList(i).Market,targetList(i).Code);
  55.     [cash,~,~,~,~] = traderGetAccountInfo(HandleList(1));
  56.     shareNum=cash/close(end)/LongMargin/7/Multiple;
  57.     if  marketposition==0
  58.         if con1
  59.             traderBuy(HandleList(1),targetList(i).Market,targetList(i).Code,shareNum,0,'market','buy');%开多单
  60.             
  61.         elseif con2
  62.             traderSellShort(HandleList(1),targetList(i).Market,targetList(i).Code,shareNum,0,'market','sellshort');%开空单
  63.             
  64.         end
  65.     end
  66.    
  67.     if  marketposition>0 && con10
  68.         order= traderPositionTo(HandleList(1),targetList(i).Market,targetList(i).Code,0,0,'market','sell');
  69.     end
  70.    
  71.     if  marketposition<0 && con20
  72.         order= traderPositionTo(HandleList(1),targetList(i).Market,targetList(i).Code,0,0,'market','sell');      
  73.         
  74.     end
  75. end
  76. end
  77. function ATRValue=ATR(High,Low,Close,Length)
  78. ATRValue=zeros(length(High),1);
  79. TRValue=zeros(length(High),1);
  80. TRValue(2:end)=max([High(2:end)-Low(2:end) abs(High(2:end)-Close(1:end-1)) abs(Low(2:end)-Close(1:end-1))],[],2);
  81. ATRValue=MA(TRValue,Length);
  82. end

  83. function MAValue=MA(Price,Length)
  84. MAValue=zeros(length(Price),1);
  85. for i=Length:length(Price)
  86.     MAValue(i)=sum(Price(i-Length+1:i))/Length;
  87. end
  88. MAValue(1:Length-1)=Price(1:Length-1);
  89. end
复制代码




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



二维码

扫码加我 拉你入群

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

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


沙发
ghjktdf 发表于 2017-3-23 20:08:14
看曲线还行~

藤椅
挖矿专家 发表于 2017-3-24 10:15:49
ghjktdf 发表于 2017-3-23 20:08
看曲线还行~

板凳
65425856 发表于 2017-3-27 18:30:08
楼主私藏实在太多

报纸
ghjktdf 发表于 2017-3-28 10:05:29
65425856 发表于 2017-3-27 18:30
楼主私藏实在太多
哈哈,是的,感觉到了

地板
chickenhanzeyu 学生认证  发表于 2017-3-28 16:14:22
支持楼主 楼主可以开一个微信公众号

7
挖矿专家 发表于 2017-3-29 13:22:53
代码已经重新整理了一下

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

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