请教眼球套利交易法可否在TB中实现
今天在上海中期期货程序化交易组组长的博客里看到这个策略,感觉有一定的可行性尝试编程测试时出现了一个问题,就是如何用TB筛选出当天涨幅最大和跌幅最大的主力合约本门五大入门功夫之二:眼球套利交易法全攻略
现在,距离下班还有半个小时的时间。既然群友们对眼球套利交易法表现出了极大的浓厚兴趣,那么,我也觉得的确需要对它进行一下梳理和总结。
眼球套利交易法,其实并没有必要非要编写成为一个自动买卖的程序化交易模型。因为它实在是太简单了,简单的出奇,简单的令人难以致信。然而,它的简单性并不影响它的有效性和实用性,如下图所示,这是10万元本金,在最近三年内完全使用眼球交易法的盈利金额资金曲线图(隔夜仓重为50%)。
下面,我们来看一下眼球套利法的多空、买卖规则。
每天下午收盘前,建立套利对冲头寸,具体做法是:做多当日涨幅最大的品种、做空当日跌幅最大的品种,并且按照等价值的原则建立头寸,不考虑因保证金收取比例差异而带来的实际动用保证金不同的因素。
次日开盘,如果获得暴利,什么是暴利?自己定义。我的定义是价差获利1%,即总体所动用保证金获得5%的收益率。一俟获得暴利,开盘就平!如果没有获得暴利,那么可以持有至暴利,或直接持有至收盘前再平。
上图中的三条曲线,分别代表了开盘就平、收盘才平、暴利就平的收益情况,可以看出,如果偷懒,可以直接选择开盘就平,效果就不错。这套方法还有一个重大的意义,盘中不占用你的保证金,只是赌隔夜而已。因为是完全对冲的套利头寸,所以我觉得保证金动用的比例完全可以放大到50%以上的任意一个水平。
你不必过于计较,眼球套利的原理是什么?如果你愿意听,我可以告诉你,那就是买强抛弱、强者恒强、弱者恒弱。如果你担心产生强弱的意外转换,那么在实际执行过程中,我觉得可以有一些变通的处理。比如:你做多涨幅排行榜的前三名、做空跌幅排行榜的后三名。这样操作,你的资金曲线可能会更加平滑。此外,操作上有一个强弱判断的细节标准。我并没有将这一点纳入绩效结果的评估,但我觉得可能是有效的。这个标准就是,某些低波动性的品种,一旦进入涨跌幅排行榜的时候,要小心,可能是一种假象。比如今天普遍大涨,结果玉米微跌0.5%,我们认为玉米最弱,其实可能玉米每天都这样。所以,即便明天市场反转,普遍大跌,结果玉米仍然是微跌,这样我们就无法起到套利对冲的作用。这可能是眼球套利交易法的唯一风险点所在,慎之、慎之。 曲线图大家搜索期市截拳道,到博客利就能看到.利润150%资金回撤比较小,最重要的是不占用日内交易保证金 用TB估计难。
如果有全品种历史数据的话,用其它语言写个程序,比较简单的。 这个策略我实际用过 要效果满意 还要加很多过滤条件
像最近的行情 你没有合适品种开空仓 全开多仓 无法对冲 [quote]这个策略我实际用过 要效果满意 还要加很多过滤条件
像最近的行情 你没有合适品种开空仓 全开多仓 无法对冲
[size=2][color=#999999]speed_fj 发表于 2010-7-28 19:15[/color] [url=http://www.tradeblazer.net/forum/redirect.php?goto=findpost&pid=52588&ptid=8834][img]http://www.tradeblazer.net/forum/images/common/back.gif[/img][/url][/size][/quote]
程序化交易不应该加入认为判断吧 我的意思是 我没写程序
因为TB不知道如何一个程序控制多个品种
我是个人判断交易作个实验 得出的经验 实践才能出真知。我就觉得这个方法不太靠谱。测试的结果是亏钱的。
另外TB的多品种测试可真是累人啊。 [list]
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
[/list] 请教下怎么测试多品种? 在某个超级图表上插入其它品种 顶 rypan的努力! 期市截拳道是朱琳靖先生的新著吗??? [b]回复 [url=http://www.tradeblazer.net/forum/redirect.php?goto=findpost&pid=64375&ptid=8834]12#[/url] [i]stock1123[/i] [/b]是的,就是这部书让我认识了TB,虽然在排版上有些瑕疵但也是国内程序化交易方面的开山之作了。
页:
[1]
