楼主: yang-cy13
4231 2

[源码分享] 基于布林带的跨期套利策略 [推广有奖]

  • 0关注
  • 6粉丝

初中生

71%

还不是VIP/贵宾

-

威望
0
论坛币
57 个
通用积分
1.0019
学术水平
3 点
热心指数
3 点
信用等级
3 点
经验
501 点
帖子
12
精华
0
在线时间
15 小时
注册时间
2016-10-9
最后登录
2019-1-6

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
布林带是一种非常常见的技术指标,其上轨为均线加上2倍波动率,下轨为均线减去2倍波动率。大部分价格波动都被包络在布林带上下轨之间,故可以用来判断支撑和突破。

期货中的跨期套利,一般是指做空主力合约并做多次主力合约(或者反之),利用价差的均值回复的性质来获利,问题在于如何度量价差是否偏离正常波动区间。布林带提供了一种思路:把价差当作一个标的,考虑价差的布林带:
入场:
若价差在布林带上轨上方拐头向下,则做空价差;
若价差在布林带下轨下方拐头向上,则做多价差;
出场:
当价差回复到均线或者跌破止损价时,出场。

应用在白糖期货上,从2014/01/01到2016/06/02,5分钟频率,效果如下:
绩效图.png

策略代码:
  1. function Kqtl(ShareNum,Freq,len,len2)

  2. targetList = traderGetTargetList();
  3. HandleList = traderGetHandleList();

  4. global s;
  5. n = length(targetList);
  6. for j = 1:2:n
  7.     [~,~,~,~,close1,~,~,~] = traderGetKData(targetList(j).Market,targetList(j).Code,'min',Freq, 0-len, 0,true,'FWard');
  8.     [~,~,~,~,close2,~,~,~] = traderGetKData(targetList(j+1).Market,targetList(j+1).Code,'min',Freq, 0-len, 0,true,'FWard');
  9.     if length(close1)<len+1
  10.         return
  11.     end
  12.     diff = close1-close2;
  13.     mid = mean(diff(1:end-1));
  14.     band = std(diff(1:end-1));
  15.     Upper = mid+2*band;
  16.     Lower = mid-2*band;
  17.     if diff(end)>Upper
  18.         s(j).con1=1;
  19.     elseif diff(end)<Lower
  20.         s(j).con1=-1;
  21.     else
  22.         s(j).con1=0;
  23.     end
  24.    
  25.     s(j).con2 = 0;
  26.     if s(j).con1==1
  27.         if diff(end)<diff(end-1) && diff(end-1)<diff(end-2)
  28.             s(j).con2 = 1;
  29.         end
  30.     end
  31.     if s(j).con1==-1
  32.         if diff(end)>diff(end-1) && diff(end-1)>diff(end-2)
  33.             s(j).con2 = -1;
  34.         end
  35.     end
  36.    
  37.     if s(j).position>0
  38.         if diff(end)>mid || diff(end)<s(j).stopprice
  39.             traderPositionTo(HandleList(1),targetList(j).Market,targetList(j).Code,0,0,'market','close');
  40.             traderPositionTo(HandleList(1),targetList(j+1).Market,targetList(j+1).Code,0,0,'market','close');
  41.             s(j).position = 0;
  42.         end
  43.     end
  44.     if s(j).position<0
  45.         if diff(end)<mid || diff(end)>s(j).stopprice
  46.             traderPositionTo(HandleList(1),targetList(j).Market,targetList(j).Code,0,0,'market','close');
  47.             traderPositionTo(HandleList(1),targetList(j+1).Market,targetList(j+1).Code,0,0,'market','close');
  48.             s(j).position = 0;
  49.         end
  50.     end
  51.    
  52.     if s(j).position==0
  53.         if s(j).con2==-1
  54.             OrderID1=traderDirectBuy(HandleList(1),targetList(j).Market,targetList(j).Code,ShareNum,0,'market','buy');
  55.             OrderID2=traderDirectSell(HandleList(1),targetList(j+1).Market,targetList(j+1).Code,ShareNum,0,'market','buy');
  56.             if OrderID1~=0
  57.                 s(j).stopprice=diff(end-2);
  58.                 s(j).position = 1;
  59.             end
  60.         end
  61.         if s(j).con2==1
  62.             OrderID1=traderDirectSell(HandleList(1),targetList(j).Market,targetList(j).Code,ShareNum,0,'market','sell');
  63.             OrderID2=traderDirectBuy(HandleList(1),targetList(j+1).Market,targetList(j+1).Code,ShareNum,0,'market','sell');
  64.             if OrderID1~=0
  65.                 s(j).stopprice=diff(end-2);
  66.                 s(j).position = -1;
  67.             end
  68.         end
  69.     end   
  70. end
复制代码
执行代码:
  1. targetList(1).Market = 'CZCE';
  2. targetList(1).Code = 'SR000';

  3. targetList(2).Market = 'CZCE';
  4. targetList(2).Code = 'SR001';

  5. Freq = 5;
  6. ShareNum = 10;
  7. len = 40;
  8. len2 = 20;
  9. global s;
  10. for i = 1:length(targetList)
  11.     s(i).position = 0;
  12.     s(i).openprice = 0;
  13. end

  14. %回测
  15. AccountList(1) = {'FutureBackReplay'};
  16. traderRunBacktest('KqtlBackTest',@Kqtl,{ShareNum,Freq,len,len2},AccountList,targetList,'min',Freq,20140101,20160602,'FWard');
复制代码




二维码

扫码加我 拉你入群

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

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

关键词:跨期套利策略 跨期套利 function Target trader 价格波动 技术 如何

已有 2 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
accumulation + 100 + 1 + 1 + 1 精彩帖子
fantuanxiaot + 22 + 22 精彩帖子

总评分: 经验 + 122  论坛币 + 22  学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

本帖被以下文库推荐

沙发
zhouwenzi 发表于 2016-11-25 17:56:56 |只看作者 |坛友微信交流群
赞!!

使用道具

藤椅
3862161 在职认证  发表于 2016-11-25 18:01:45 |只看作者 |坛友微信交流群
看起来不错 不过最近看起来一直横着

使用道具

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

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

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

GMT+8, 2024-4-26 14:02