设为首页收藏本站

 找回密码
 注册
查看: 13453|回复: 17
打印 上一主题 下一主题

请教眼球套利交易法可否在TB中实现 [复制链接]

Rank: 5Rank: 5

精华
0
UID
13821
积分
672
帖子
36
主题
18
阅读权限
60
注册时间
2010-7-6
最后登录
2013-1-6
跳转到指定楼层
1#
发表于 2010-7-11 09:04:23 |只看该作者 |倒序浏览
今天在上海中期期货程序化交易组组长的博客里看到这个策略,感觉有一定的可行性尝试编程测试时出现了一个问题,就是如何用TB筛选出当天涨幅最大和跌幅最大的主力合约
本门五大入门功夫之二:眼球套利交易法全攻略

        现在,距离下班还有半个小时的时间。既然群友们对眼球套利交易法表现出了极大的浓厚兴趣,那么,我也觉得的确需要对它进行一下梳理和总结。
        眼球套利交易法,其实并没有必要非要编写成为一个自动买卖的程序化交易模型。因为它实在是太简单了,简单的出奇,简单的令人难以致信。然而,它的简单性并不影响它的有效性和实用性,如下图所示,这是10万元本金,在最近三年内完全使用眼球交易法的盈利金额资金曲线图(隔夜仓重为50%)。


   下面,我们来看一下眼球套利法的多空、买卖规则。
   每天下午收盘前,建立套利对冲头寸,具体做法是:做多当日涨幅最大的品种、做空当日跌幅最大的品种,并且按照等价值的原则建立头寸,不考虑因保证金收取比例差异而带来的实际动用保证金不同的因素。
        次日开盘,如果获得暴利,什么是暴利?自己定义。我的定义是价差获利1%,即总体所动用保证金获得5%的收益率。一俟获得暴利,开盘就平!如果没有获得暴利,那么可以持有至暴利,或直接持有至收盘前再平。
        上图中的三条曲线,分别代表了开盘就平、收盘才平、暴利就平的收益情况,可以看出,如果偷懒,可以直接选择开盘就平,效果就不错。这套方法还有一个重大的意义,盘中不占用你的保证金,只是赌隔夜而已。因为是完全对冲的套利头寸,所以我觉得保证金动用的比例完全可以放大到50%以上的任意一个水平。
        你不必过于计较,眼球套利的原理是什么?如果你愿意听,我可以告诉你,那就是买强抛弱、强者恒强、弱者恒弱。如果你担心产生强弱的意外转换,那么在实际执行过程中,我觉得可以有一些变通的处理。比如:你做多涨幅排行榜的前三名、做空跌幅排行榜的后三名。这样操作,你的资金曲线可能会更加平滑。此外,操作上有一个强弱判断的细节标准。我并没有将这一点纳入绩效结果的评估,但我觉得可能是有效的。这个标准就是,某些低波动性的品种,一旦进入涨跌幅排行榜的时候,要小心,可能是一种假象。比如今天普遍大涨,结果玉米微跌0.5%,我们认为玉米最弱,其实可能玉米每天都这样。所以,即便明天市场反转,普遍大跌,结果玉米仍然是微跌,这样我们就无法起到套利对冲的作用。这可能是眼球套利交易法的唯一风险点所在,慎之、慎之。

Rank: 5Rank: 5

精华
0
UID
13821
积分
672
帖子
36
主题
18
阅读权限
60
注册时间
2010-7-6
最后登录
2013-1-6
2#
发表于 2010-7-11 09:11:13 |只看该作者
曲线图大家搜索期市截拳道,到博客利就能看到.利润150%资金回撤比较小,最重要的是不占用日内交易保证金

使用道具 举报

Rank: 4

精华
0
UID
11941
积分
388
帖子
98
主题
16
阅读权限
50
注册时间
2010-6-10
最后登录
2016-6-12
3#
发表于 2010-7-28 16:57:48 |只看该作者
用TB估计难。

如果有全品种历史数据的话,用其它语言写个程序,比较简单的。

使用道具 举报

Rank: 6Rank: 6

精华
0
UID
1041
积分
1642
帖子
448
主题
133
阅读权限
70
注册时间
2008-1-9
最后登录
2016-12-26
4#
发表于 2010-7-28 19:15:46 |只看该作者
这个策略我实际用过 要效果满意 还要加很多过滤条件

像最近的行情 你没有合适品种开空仓 全开多仓 无法对冲

使用道具 举报

Rank: 4

精华
0
UID
11941
积分
388
帖子
98
主题
16
阅读权限
50
注册时间
2010-6-10
最后登录
2016-6-12
5#
发表于 2010-7-28 19:54:10 |只看该作者
这个策略我实际用过 要效果满意 还要加很多过滤条件

像最近的行情 你没有合适品种开空仓 全开多仓 无法对冲
speed_fj 发表于 2010-7-28 19:15


程序化交易不应该加入认为判断吧

使用道具 举报

Rank: 6Rank: 6

精华
0
UID
1041
积分
1642
帖子
448
主题
133
阅读权限
70
注册时间
2008-1-9
最后登录
2016-12-26
6#
发表于 2010-7-28 20:56:17 |只看该作者
我的意思是 我没写程序
因为TB不知道如何一个程序控制多个品种

我是个人判断交易作个实验 得出的经验

使用道具 举报

Rank: 4

精华
0
UID
11941
积分
388
帖子
98
主题
16
阅读权限
50
注册时间
2010-6-10
最后登录
2016-6-12
7#
发表于 2010-8-7 16:21:53 |只看该作者
实践才能出真知。我就觉得这个方法不太靠谱。测试的结果是亏钱的。

另外TB的多品种测试可真是累人啊。

使用道具 举报

Rank: 4

精华
0
UID
11941
积分
388
帖子
98
主题
16
阅读权限
50
注册时间
2010-6-10
最后登录
2016-6-12
8#
发表于 2010-8-7 16:22:56 |只看该作者

    Vars
            String LogFile("d:\\Eyes.csv");
            String LogLine("");
            Numeric R0;
            Numeric R1;
            Numeric R2;
            Numeric R3;
            Numeric R4;
            Numeric R5;
            Numeric R6;
            Numeric R7;
            Numeric R8;
            Numeric R9;
            Numeric R10;
            Numeric R11;
            Numeric R12;
            Numeric R13;
            Numeric R14;
            Numeric R15;
            Numeric R16;
            Numeric R17;
            NumericSeries Close0;
            NumericSeries Close1;
            NumericSeries Close2;
            NumericSeries Close3;
            NumericSeries Close4;
            NumericSeries Close5;
            NumericSeries Close6;
            NumericSeries Close7;
            NumericSeries Close8;
            NumericSeries Close9;
            NumericSeries Close10;
            NumericSeries Close11;
            NumericSeries Close12;
            NumericSeries Close13;
            NumericSeries Close14;
            NumericSeries Close15;
            NumericSeries Close16;
            NumericSeries Close17;
            Numeric MaxUp;
            Numeric MaxDown;
            Numeric MaxUpInd(0);
            Numeric MaxDownInd(0);
            Numeric UpNext;
            Numeric DownNext;
    Begin
            Close0 = data0.Close;
            Close1 = data1.Close;
            Close2 = data2.Close;
            Close3 = data3.Close;
            Close4 = data4.Close;
            Close5 = data5.Close;
            Close6 = data6.Close;
            Close7 = data7.Close;
            Close8 = data8.Close;
            Close9 = data9.Close;
            Close10 = data10.Close;
            Close11 = data11.Close;
            Close12 = data12.Close;
            Close13 = data13.Close;
            Close14 = data14.Close;
            Close15 = data15.Close;
            Close16 = data16.Close;
            Close17 = data17.Close;
            R0 = (data0.Close - Close0[1]) / Close0[1];
            R1 = (data1.Close - Close1[1]) / Close1[1];
            R2 = (data2.Close - Close2[1]) / Close2[1];
            R3 = (data3.Close - Close3[1]) / Close3[1];
            R4 = (data4.Close - Close4[1]) / Close4[1];
            R5 = (data5.Close - Close5[1]) / Close5[1];
            R6 = (data6.Close - Close6[1]) / Close6[1];
            R7 = (data7.Close - Close7[1]) / Close7[1];
            R8 = (data8.Close - Close8[1]) / Close8[1];
            R9 = (data9.Close - Close9[1]) / Close9[1];
            R10 = (data10.Close - Close10[1]) / Close10[1];
            R11 = (data11.Close - Close11[1]) / Close11[1];
            R12 = (data12.Close - Close12[1]) / Close12[1];
            R13 = (data13.Close - Close13[1]) / Close13[1];
            R14 = (data14.Close - Close14[1]) / Close14[1];
            R15 = (data15.Close - Close15[1]) / Close15[1];
            R16 = (data16.Close - Close16[1]) / Close16[1];
            R17 = (data17.Close - Close17[1]) / Close17[1];
           
            //最大升幅
            MaxUpInd = 0;
            MaxUp = r0;
            if(r1 > MaxUp) {
                    MaxUpInd = 1;
                    MaxUp = r1;
            }
            if(r2 > MaxUp) {
                    MaxUpInd = 2;
                    MaxUp = r2;
            }
            if(r3 > MaxUp) {
                    MaxUpInd = 3;
                    MaxUp = r3;
            }
            if(r4 > MaxUp) {
                    MaxUpInd = 4;
                    MaxUp = r4;
            }
            if(r5 > MaxUp) {
                    MaxUpInd = 5;
                    MaxUp = r5;
            }

            if(r6 > MaxUp) {
                    MaxUpInd = 6;
                    MaxUp = r6;
            }

            if(r7 > MaxUp) {
                    MaxUpInd = 7;
                    MaxUp = r7;
            }

            if(r8 > MaxUp) {
                    MaxUpInd = 8;
                    MaxUp = r8;
            }

            if(r9 > MaxUp) {
                    MaxUpInd = 9;
                    MaxUp = r9;
            }

            if(r10 > MaxUp) {
                    MaxUpInd = 10;
                    MaxUp = r10;
            }

            if(r11 > MaxUp) {
                    MaxUpInd = 11;
                    MaxUp = r11;
            }

            if(r12 > MaxUp) {
                    MaxUpInd = 12;
                    MaxUp = r12;
            }

            if(r13 > MaxUp) {
                    MaxUpInd = 13;
                    MaxUp = r13;
            }

            if(r14 > MaxUp) {
                    MaxUpInd = 14;
                    MaxUp = r14;
            }

            if(r15 > MaxUp) {
                    MaxUpInd = 15;
                    MaxUp = r15;
            }

            if(r16 > MaxUp) {
                    MaxUpInd = 16;
                    MaxUp = r16;
            }

            if(r17 > MaxUp) {
                    MaxUpInd = 17;
                    MaxUp = r17;
            }

            //最大跌幅
            MaxDownInd = 0;
            MaxDown = r0;
            if(r1 < MaxDown) {
                    MaxDownInd = 1;
                    MaxDown = r1;
            }
            if(r2 < MaxDown) {
                    MaxDownInd = 2;
                    MaxDown = r2;
            }
            if(r3 < MaxDown) {
                    MaxDownInd = 3;
                    MaxDown = r3;
            }
            if(r4 < MaxDown) {
                    MaxDownInd = 4;
                    MaxDown = r4;
            }

            if(r6 < MaxDown) {
                    MaxDownInd = 6;
                    MaxDown = r6;
            }

            if(r7 < MaxDown) {
                    MaxDownInd = 7;
                    MaxDown = r7;
            }

            if(r8 < MaxDown) {
                    MaxDownInd = 8;
                    MaxDown = r8;
            }

            if(r9 < MaxDown) {
                    MaxDownInd = 9;
                    MaxDown = r9;
            }

            if(r10 < MaxDown) {
                    MaxDownInd = 10;
                    MaxDown = r10;
            }

            if(r11 < MaxDown) {
                    MaxDownInd = 11;
                    MaxDown = r11;
            }

            if(r12 < MaxDown) {
                    MaxDownInd = 12;
                    MaxDown = r12;
            }

            if(r13 < MaxDown) {
                    MaxDownInd = 13;
                    MaxDown = r13;
            }

            if(r14 < MaxDown) {
                    MaxDownInd = 14;
                    MaxDown = r14;
            }

            if(r15 < MaxDown) {
                    MaxDownInd = 15;
                    MaxDown = r15;
            }

            if(r16 < MaxDown) {
                    MaxDownInd = 16;
                    MaxDown = r16;
            }

            if(r17 < MaxDown) {
                    MaxDownInd = 17;
                    MaxDown = r17;
            }
            if(MaxUp > 0.02 || MaxDown < -0.02){
                    return;
            }
           
            //最大升幅上买入
            if(MaxUpInd == 0){
                    UpNext = (data0.NextOpen() - data0.Close) / data0.Close;
            }else If(MaxUpInd == 1){
                    UpNext = (data1.NextOpen() - data1.Close) / data1.Close;
            }else If(MaxUpInd == 2){
                    UpNext = (data2.NextOpen() - data2.Close) / data2.Close;
            }else If(MaxUpInd == 3){
                    UpNext = (data3.NextOpen() - data3.Close) / data3.Close;
            }else If(MaxUpInd == 4){
                    UpNext = (data4.NextOpen() - data4.Close) / data4.Close;
            }else If(MaxUpInd == 5){
                    UpNext = (data5.NextOpen() - data5.Close) / data5.Close;
            }else If(MaxUpInd == 6){
                    UpNext = (data6.NextOpen() - data6.Close) / data6.Close;
            }else If(MaxUpInd == 7){
                    UpNext = (data7.NextOpen() - data7.Close) / data7.Close;
            }else If(MaxUpInd == 8){
                    UpNext = (data8.NextOpen() - data8.Close) / data8.Close;
            }else If(MaxUpInd == 9){
                    UpNext = (data9.NextOpen() - data9.Close) / data9.Close;
            }else If(MaxUpInd == 10){
                    UpNext = (data10.NextOpen() - data10.Close) / data10.Close;
            }else If(MaxUpInd == 11){
                    UpNext = (data11.NextOpen() - data11.Close) / data11.Close;
            }else If(MaxUpInd == 12){
                    UpNext = (data12.NextOpen() - data12.Close) / data12.Close;
            }else If(MaxUpInd == 13){
                    UpNext = (data13.NextOpen() - data13.Close) / data13.Close;
            }else If(MaxUpInd == 14){
                    UpNext = (data14.NextOpen() - data14.Close) / data14.Close;
            }else If(MaxUpInd == 15){
                    UpNext = (data15.NextOpen() - data15.Close) / data15.Close;
            }else If(MaxUpInd == 16){
                    UpNext = (data16.NextOpen() - data16.Close) / data16.Close;
            }else If(MaxUpInd == 17){
                    UpNext = (data17.NextOpen() - data17.Close) / data17.Close;
            }
            //双边手续费
            UpNext = UpNext - 2 * 0.00015;
           
            //最大跌幅上卖出
            if(MaxDownInd == 0){
                    DownNext = (data0.Close - data0.NextOpen()) / data0.Close;
            }else If(MaxDownInd == 1){
                    DownNext = (data1.Close - data1.NextOpen()) / data1.Close;
            }else If(MaxDownInd == 2){
                    DownNext = (data2.Close - data2.NextOpen()) / data2.Close;
            }else If(MaxDownInd == 3){
                    DownNext = (data3.Close - data3.NextOpen()) / data3.Close;
            }else If(MaxDownInd == 4){
                    DownNext = (data4.Close - data4.NextOpen()) / data4.Close;
            }else If(MaxDownInd == 5){
                    DownNext = (data5.Close - data5.NextOpen()) / data5.Close;
            }else If(MaxDownInd == 6){
                    DownNext = (data6.Close - data6.NextOpen()) / data6.Close;
            }else If(MaxDownInd == 7){
                    DownNext = (data7.Close - data7.NextOpen()) / data7.Close;
            }else If(MaxDownInd == 8){
                    DownNext = (data8.Close - data8.NextOpen()) / data8.Close;
            }else If(MaxDownInd == 9){
                    DownNext = (data9.Close - data9.NextOpen()) / data9.Close;
            }else If(MaxDownInd == 10){
                    DownNext = (data10.Close - data10.NextOpen()) / data10.Close;
            }else If(MaxDownInd == 11){
                    DownNext = (data11.Close - data11.NextOpen()) / data11.Close;
            }else If(MaxDownInd == 12){
                    DownNext = (data12.Close - data12.NextOpen()) / data12.Close;
            }else If(MaxDownInd == 13){
                    DownNext = (data13.Close - data13.NextOpen()) / data13.Close;
            }else If(MaxDownInd == 14){
                    DownNext = (data14.Close - data14.NextOpen()) / data14.Close;
            }else If(MaxDownInd == 15){
                    DownNext = (data15.Close - data15.NextOpen()) / data15.Close;
            }else If(MaxDownInd == 16){
                    DownNext = (data16.Close - data16.NextOpen()) / data16.Close;
            }else If(MaxDownInd == 17){
                    DownNext = (data17.Close - data17.NextOpen()) / data17.Close;
            }       
            DownNext = DownNext - 2 * 0.00015;       
           
           
            LogLine = LogLine + DateToString(Date()) + ",";
            LogLine = LogLine + text(MaxUp) + ",";
            LogLine = LogLine + text(UpNext) + ",,";
            LogLine = LogLine + text(MaxDown) + ",";
            LogLine = LogLine + text(DownNext) + ",,";
            LogLine = LogLine + text(UpNext + DownNext);
           
            FileAppend(LogFile, LogLine);
           
    End

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
7277
积分
938
帖子
207
主题
44
阅读权限
60
注册时间
2010-3-11
最后登录
2016-5-4
9#
发表于 2010-8-9 12:25:09 |只看该作者
请教下怎么测试多品种?

使用道具 举报

Rank: 4

精华
0
UID
11941
积分
388
帖子
98
主题
16
阅读权限
50
注册时间
2010-6-10
最后登录
2016-6-12
10#
发表于 2010-8-9 15:42:57 |只看该作者
在某个超级图表上插入其它品种

使用道具 举报

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

bottom

静态版|手机版|联系我们|交易开拓者 ( 粤ICP备07044698   

GMT+8, 2024-5-10 08:25

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部