楼主: 挖矿专家
1563 5

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

  • 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 论坛币
策略原理:
日内转向加仓交易系统

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


ReverseAdd.png

策略源码:

  1. function ReverseAdd(Freq,shareNum,FirstGrid,AddGrid,TotalGrids,TrailingGrid)

  2. % ------------ ReverseAdd Strategy-------------------%

  3. % Freq 为输入时间频率

  4. % shareNum 为操作的手数

  5. % FirstGrid 第一笔交易间距

  6. % AddGrid 加仓间距

  7. % TotalGrids 每日最大交易次数

  8. % TrailingGrid 移动止损间距

  9. %---------------------策略主体---------------%

  10. traderDailyCloseTime(145800);     

  11. % 每天14:58分平仓

  12. targetList = traderGetTargetList();

  13. % 获取交易标的句柄

  14. HandleList = traderGetHandleList();

  15. n = length(targetList);

  16. for j = 1:n

  17. % 获取账户句柄

  18. [marketposition,~,~]=traderGetAccountPosition(HandleList(1),targetList(j).Market,targetList(j).Code);

  19. % 获取当前仓位状况

  20. lags = Freq*30;

  21. barnum=traderGetCurrentBar(targetList(j).Market,targetList(j).Code);

  22. % 当前Bar的编号

  23. if(barnum<=lags)

  24.     return;

  25. end

  26. % 当编号不超过所取的数据长度时,返回

  27. global HH;

  28. global LL;

  29. global MyRealMp;

  30. if isempty(MyRealMp)
  31.    
  32.     MyRealMp = 0;
  33.    
  34. end

  35. [time,open,high,low,close] = traderGetKData(targetList(j).Market,targetList(j).Code,'min',Freq, 0-lags, 0,false,'FWard');

  36. if length(close)<lags
  37.    
  38.     return;
  39.    
  40. end

  41. if isempty(HH)
  42.    
  43.     HH = high(end);
  44.    
  45. end

  46. if isempty(LL)
  47.    
  48.     LL = low(end);
  49.    
  50. end

  51. [~,~,~,MinMove,~,~,~,~,~]  = traderGetFutureInfo(targetList(j).Market,targetList(j).Code);

  52. MinPoint = MinMove;

  53. if length(time)<2
  54.    
  55.     return
  56.    
  57. end

  58. if(floor(time(end-1))~=floor(time(end)))
  59.    
  60.     HH = high(end);
  61.    
  62.     LL = low(end);
  63.    
  64.     MyRealMp = 0;
  65.    
  66. end

  67. if (floor(time(end-1))==floor(time(end)))
  68.    
  69.     HH = max(HH,high(end));
  70.    
  71.     LL = min(LL,low(end));
  72.    
  73. end



  74. if (MyRealMp>0 && HH-low(end)>=TrailingGrid*MinPoint && (high(end)-low(end)<TrailingGrid*MinPoint || (high(end)-low(end)>=TrailingGrid*MinPoint && close(end)<open(end))))
  75.    
  76.     traderSell(HandleList(1),targetList(j).Market,targetList(j).Code,'all',0,'market','平仓');
  77.       
  78.     MyRealMp = 0;
  79.    
  80.     LL = low(end);

  81. elseif (MyRealMp<0 && (high(end)-LL)>=TrailingGrid*MinPoint && (high(end)-low(end)<TrailingGrid*MinPoint && (high(end)-low(end)>=TrailingGrid*MinPoint && close(end)>open(end))))
  82.         
  83.     traderBuyToCover(HandleList(1),targetList(j).Market,targetList(j).Code,'all',0,'平仓');
  84.   
  85.     MyRealMp = 0;
  86.         
  87.     HH = 0;
  88.         
  89. end
  90.    
  91. if (MyRealMp==0 && (high(end)-LL)>=(FirstGrid*MinPoint)) % 第一笔多单开仓
  92.    
  93.     traderBuy(HandleList(1),targetList(j).Market,targetList(j).Code,shareNum,0,'market','开多仓');
  94.    
  95.     MyRealMp = 1;
  96.    
  97.     HH = high(end);

  98. elseif (MyRealMp>0 && MyRealMp<TotalGrids && (high(end)-LL)>=(FirstGrid+MyRealMp*AddGrid)*MinPoint) % 多单加仓
  99.         
  100.     traderBuy(HandleList(1),targetList(j).Market,targetList(j).Code,shareNum,0,'market','开多仓');
  101.         
  102.     MyRealMp = MyRealMp + 1;
  103.         
  104. end



  105. if (MyRealMp==0 && (HH-low(end))>=FirstGrid*MinPoint) % 第一笔空单开仓
  106.    
  107.     traderSellShort(HandleList(1),targetList(j).Market,targetList(j).Code,shareNum,0,'market','开多仓');
  108.    
  109.     MyRealMp = -1;
  110.    
  111.     LL = low(end);
  112.    
  113. elseif (MyRealMp<0 && -1*MyRealMp<TotalGrids && (HH-low(end))>=(FirstGrid+abs(MyRealMp*AddGrid))*MinPoint) % 空单加仓
  114.    
  115.     traderSellShort(HandleList(1),targetList(j).Market,targetList(j).Code,shareNum,0,'market','开多仓');
  116.    
  117.     MyRealMp = MyRealMp - 1;
  118.    
  119. end

  120. end
复制代码



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



二维码

扫码加我 拉你入群

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

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


沙发
挖矿专家 发表于 2017-3-29 13:19:40 |只看作者 |坛友微信交流群
代码重整了一下,好看多了

使用道具

藤椅
seanlee91 发表于 2017-5-21 15:43:08 |只看作者 |坛友微信交流群
感谢楼主分享

使用道具

板凳
ghjktdf 发表于 2017-5-31 16:42:51 |只看作者 |坛友微信交流群
感谢分享

使用道具

报纸
挖矿专家 发表于 2017-6-2 09:55:01 |只看作者 |坛友微信交流群
ghjktdf 发表于 2017-5-31 16:42
感谢分享
感谢支持

使用道具

地板
65425856 发表于 2017-6-2 19:11:57 |只看作者 |坛友微信交流群
感谢楼主分享

使用道具

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

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

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

GMT+8, 2024-4-28 04:34