楼主: 挖矿专家
2418 7

[源码分享] 【每日一策】Matlab量化交易策略之 开盘突破+加仓 [推广有奖]

  • 0关注
  • 74粉丝

讲师

22%

还不是VIP/贵宾

-

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

楼主
挖矿专家 发表于 2017-3-15 10:53:41 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
策略思路:

今天的开盘价作为标杆,收盘价上穿做多,下穿做空,并加上由20日ATR控制的止损和加仓。

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

开盘突破+加仓.png

策略源码:

  1. function kptopLossAdd(freq) %
  2. %freq为输入频率
  3. %len为计算使用的长度
  4. %band为波动乘数
  5. %shareNum为操作的手数
  6. %%%日内开盘突破策略,改为日内策略

  7. targetList = traderGetTargetList();
  8. HandleList = traderGetHandleList();
  9. global p;
  10. global record;
  11. for i=1:length(targetList)
  12.     barnum=traderGetCurrentBar(targetList(i).Market,targetList(i).Code);
  13.     marketposition=traderGetAccountPosition(HandleList(1),targetList(i).Market,targetList(i).Code);
  14.    
  15.     len=20;
  16.     dlen=30;
  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, 0-dlen, 0,false,'FWard');
  19.     if length(close)<len+1||length(Dclose)<dlen+1
  20.         continue;
  21.     end
  22.     %----------------------------日内策略---------------%
  23.     gettime=datevec(time);
  24.     timenum=gettime(end,4)*100+gettime(end,5);
  25.     if timenum>0900&&timenum<1458||timenum<2100&&timenum>2400||timenum>0000&&timenum<0158
  26.         cont=1;
  27.     else cont=0;
  28.     end
  29.    
  30.     % %每天的第一个bar将state全局变量复原,state的作用是保证每天只买卖一次
  31.     %每天第一个bar,阳线做多,阴线做空
  32.     num=find(time>Dtime(end-1));
  33.     p{i}.scon2=0;
  34.     p{i}.bcon1=0;
  35.     if length(num)==1;
  36.         if close(end)>open(end)
  37.             p{i}.price=open(end);
  38.             p{i}.bcon1=1;
  39.         else
  40.             p{i}.scon2=1;
  41.             p{i}.price=open(end);
  42.         end
  43.     end
  44.     if p{i}.price==0
  45.         continue
  46.     end
  47.     con1=p{i}.bcon1&&close(end)> p{i}.price&&cont;%做多
  48.     con2=p{i}.scon2&&close(end)< p{i}.price&&cont;%做空
  49.     con10=cont==0||close(end)< p{i}.price;%日内平仓,或者收盘价低于今天开盘价,平多
  50.     con20=cont==0||close(end)> p{i}.price;%日内平仓,或收盘价高于今天开盘价,平空
  51.     ATR=ATR(Dhigh,Dlow,Dclose,20);
  52.    
  53.     %-------------------------平仓止损--------------------%
  54.     %做多平仓
  55.     if marketposition>0&&record{i}.m~=0
  56.         if close(end)<record{i}.entryp-ATR(end)||cont==0||con10
  57.             order= traderPositionTo(HandleList(1),targetList(i).Market,targetList(i).Code,0,0,'market','sell');
  58.             if order~=0
  59.                 record{i}.m=0;
  60.                 record{i}.entryp=close(end);
  61.             end
  62.         end
  63.     end
  64.    
  65.     if marketposition<0&&record{i}.m~=0
  66.         if close(end)>record{i}.entryp+ATR(end)||cont==0||con20
  67.             order= traderPositionTo(HandleList(1),targetList(i).Market,targetList(i).Code,0,0,'market','sell');
  68.             if order~=0
  69.                 record{i}.m=0;
  70.                 record{i}.entryp=close(end);
  71.                
  72.             end
  73.         end
  74.     end
  75.     [~,~,Multiple,MinMove,~,~,~,LongMargin,~] = traderGetFutureInfo(targetList(i).Market,targetList(i).Code);
  76.     [cash,~,~,~,~] = traderGetAccountInfo(HandleList(1));
  77.     sharenum=cash/close(end)/LongMargin/7/Multiple;
  78.     %---------------入场-------------%
  79.     if con1&&(record{i}.m==0)&&(marketposition==0)
  80.         order=traderBuy(HandleList(1),targetList(i).Market,targetList(i).Code,sharenum,0,'market','buy'); %%%%做多
  81.         if order~=0
  82.             record{i}.m= record{i}.m+1;
  83.             record{i}.entryp=close(end);
  84.             
  85.         end
  86.     end
  87.    
  88.     if con2&&(record{i}.m==0)&&(marketposition==0)
  89.         order=traderSellShort(HandleList(1),targetList(i).Market,targetList(i).Code,sharenum,0,'market','buy'); %%%%做多
  90.         if order~=0
  91.             record{i}.m= record{i}.m+1;
  92.             record{i}.entryp=close(end);
  93.             
  94.         end
  95.     end
  96.    
  97.     %----------------------------加仓---------------------------------%
  98.    
  99.     if  close(end)>record{i}.entryp+2*ATR(end)&&(record{i}.m<=4)&&(marketposition>0)
  100.         order=traderBuy(HandleList(1),targetList(i).Market,targetList(i).Code,sharenum,0,'market','buy'); %%%%做多
  101.         if order~=0
  102.             record{i}.m= record{i}.m+1;
  103.             record{i}.entryp=close(end);
  104.             
  105.         end
  106.     end
  107.    
  108.     if  close(end)<record{i}.entryp-2*ATR(end)&&(record{i}.m<=4)&&(marketposition<0)
  109.         order=traderSellShort(HandleList(1),targetList(i).Market,targetList(i).Code,sharenum,0,'market','buy'); %%%%做多
  110.         if order~=0
  111.             record{i}.m= record{i}.m+1;
  112.             record{i}.entryp=close(end);
  113.             
  114.         end
  115.     end
  116.    
  117. end
  118. end
  119. function ATRValue=ATR(High,Low,Close,Length)
  120. ATRValue=zeros(length(High),1);
  121. TRValue=zeros(length(High),1);
  122. 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);
  123. ATRValue=MA(TRValue,Length);
  124. end

  125. function MAValue=MA(Price,Length)
  126. MAValue=zeros(length(Price),1);
  127. for i=Length:length(Price)
  128.     MAValue(i)=sum(Price(i-Length+1:i))/Length;
  129. end
  130. MAValue(1:Length-1)=Price(1:Length-1);
  131. end
复制代码


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

扫码加我 拉你入群

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

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

关键词:加仓 开盘

本帖被以下文库推荐

沙发
peppep 发表于 2017-3-15 14:27:12
楼主的每个贴我都会看~~

藤椅
65425856 发表于 2017-3-15 17:05:26
楼主好人~

板凳
挖矿专家 发表于 2017-3-16 13:23:58
感谢支持~

报纸
ghjktdf 发表于 2017-3-22 10:34:50
楼主厉害~

地板
挖矿专家 发表于 2017-3-24 14:25:45
peppep 发表于 2017-3-15 14:27
楼主的每个贴我都会看~~

7
65425856 发表于 2017-3-27 20:36:47
楼主干货特别多

8
3862161 在职认证  发表于 2017-3-28 12:01:58
楼主 干货是多 但是看得代码头昏眼花{:3_45:}

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

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