乐于分享
好东西不私藏

必看的全球顶尖的10个交易模型(附源码)!

必看的全球顶尖的10个交易模型(附源码)!

文 | 长文 (转载请注明出处)

关注公众号:长文量化

欢迎动动手指关注下,每周一到周五更新内容!

引言:

美国权威期货交易系统评选杂志《Futures Truth Magazine》每年都会对全球200多套交易系统进行测评,在2011年的排名中,NatGator、Catscan、DCSII模型的业绩,在过去1年进入了前10名榜单,前3名模型年收益率均在200%以上

注:交易系统必须发布18个月以上,收益截至2011年7月31日
收益率计算基于3倍保证金
但,由于量化模型,每年的业绩并不稳定,尤其是1业绩榜单,时常会发生排名变化,因此Futures杂志给出了长期来看,一致性最好的10大交易模型,其中包括著名的日内模型:R-Breaker ,中长线Aberration等。

一、Aberration trading system模型原理介绍及源代码

Aberration 交易系统由Keith Fitschen 1986年发明,1993年商业化发布,自发布之日起,该系统业绩一直名列前茅,在1997年、2001年、2005年已发布模型的业绩排名中该系统均排名前10

该交易系统的特点是,同时交易在8种不同的品种上,包括物、肉类、金属、能源、外汇、金融以及股指期货等。Aberration交易频率常常是每年交易某一品种3-4 次,60%的时间都持有仓位,平均每笔交易持仓60天。

它通过长线交易捕捉趋势,来获取巨额利润。那它如何来弥补亏损呢?因为它同时交易在多个不相关的市场,当某一品种损失时,另一品种可能获利。在一年的时间里,总是有1个或者多品种能获得巨额利润。这些大的利润弥补了那些没趋势行情的品种上的小额亏损,Aberration交易系统资金进行组合管理,因此是可以接受比较大的资金量的!

下面是基于交易开拓者平台(TB)的源代码:

——————–

// 简称: Aberration

// 名称: Aberration

// 类别: 公式应用

// 类型: 用户应用

Params

Numeric Length(35); 

Numeric StdDevUp(2.0);

Numeric StdDevDn(-2.0);

Numeric Lots(1);

Vars

NumericSeries UpperBand;

NumericSeries LowerBand;

NumericSeries AveMa;

Numeric StdValue;

Begin

AveMa=Average(Close[1],Length);

StdValue = StandardDev(Close[1],Length);

UpperBand=Avema+StdDevUp*StdValue;

LowerBand=Avema-StdDevUp*StdValue;

PlotNumeric(“UpperBand”,UpperBand);

PlotNumeric(“LowerBand”,LowerBand);

PlotNumeric(“AveMa”,AveMa);

If(MarketPosition!=1 &&CrossOver(Close[1],UpperBand[1]))

{

   Buy(Lots,Open);

}

If(MarketPosition!=-1 &&CrossUnder(Close[1],LowerBand[1]))

{

   SellShort(Lots,Open);

}

If(MarketPosition==1 && Close[1]<AveMa[1])

{

   Sell(Lots,Open);

}

If(MarketPosition==-1 && Close[1]>AveMa[1])

{

   BuyToCover(Lots,Open);

}

End

二、R-breaker trading system原理介绍及源代码

R-breaker是一个专门使用在股票指数上的交易系统,该系统为日内交易策略,不持仓过夜,出场指令为止损或是收盘。每天交易不超过2笔,很多时候一天内没有交易。该系统的特点是,结合了趋势和反转两种交易方法,既进行趋势交易也进行反转交易。自1993年公开发布以来,系统的交易法则没有改变过,该系统已经在市场上存活了 14 年之久。尤其是当指数的日内波动较大时,该系统的收益更好,反之则没有交易机会。

下面是基于交易开拓者平台(TB)的源代码:

——————–

// 简称: R_Breaker

Params

Numeric notbef(9.00);

Numeric notaft(14.55);

Numeric f1(0.35);

Numeric f2(0.07);

Numeric f3(0.25);

Numeric reverse(1.00);

Numeric rangemin(0.2);

Numeric xdiv(3);

Vars

NumericSeries ssetup(0);

NumericSeries bsetup(0);

NumericSeries senter(0);

NumericSeries benter(0);

NumericSeries bbreak(0);

NumericSeries sbreak(0);

NumericSeries ltoday(0);

NumericSeries hitoday(9999);

NumericSeries startnow(0);

NumericSeries div(0);

BoolSeries rfilter(false);

Numeric i_reverse;

Numeric i_rangemin;

Numeric i_vB;

Numeric i_vS;

Begin

i_reverse = reverse*(OpenD(0)/100);

i_rangemin = rangemin*(OpenD(0)/100);

if(BarStatus==0)

{

         startnow=0;

         div=max(xdiv,1);

}

if(Date != Date[1])

{

         SetGlobalVar(0,0);

         SetGlobalVar(1,0);

         startnow=startnow+1;

         ssetup=hitoday[1]+f1*(Close[1]-ltoday[1]);

         senter=((1+f2)/2)*(hitoday[1]+Close[1])-(f2)*ltoday[1];

         benter=((1+f2)/2)*(ltoday[1]+Close[1])-(f2)*hitoday[1];

         bsetup=ltoday[1]-f1*(hitoday[1]-Close[1]);

         bbreak=ssetup+f3*(ssetup-bsetup);

         sbreak=bsetup-f3*(ssetup-bsetup);

         hitoday=High;

        ltoday=Low;

        rfilter=(hitoday[1]-ltoday[1])>=i_rangemin;

}

if(High>hitoday)

{

         hitoday=High;

}

if(Low<ltoday)

{

         ltoday=Low;

}

if(Time*100>=notbef and Time*100<notaft and startnow>=2 and rfilter)

{

        if(Time != GetGlobalVar(1) and GetGlobalVar(1) != 0)

         {

                 SetGlobalVar(1,10000);

         }

         if(hitoday>=ssetup and marketposition>-1 and GetGlobalVar(1)<1)

         {

                 If(Low<=(senter+(hitoday-ssetup)/div))

                 {

                         SellShort(1,senter+(hitoday-ssetup)/div);

                         SetGlobalVar(1,Time);

                         Return;

                 }

         }

         if(ltoday<=bsetup and marketposition<1  and GetGlobalVar(1)<1)

         {

                 If(High>=(benter-(bsetup-ltoday)/div))

                 {

                         Buy(1,benter-(bsetup-ltoday)/div);

                         SetGlobalVar(1,Time);

                         Return;

                 }

         }

        if(marketposition==-1)

         {

                 SetGlobalVar(0,1);

                 if(High-EntryPrice>=i_reverse)

                 {

                         BuyToCover(1,entryprice+i_reverse);

                         Return;

                 }

         }

         if(marketposition==1)

         {

                 SetGlobalVar(0,1);

                 if(EntryPrice-Low>=i_reverse)

                 {

                         Sell(1,entryprice-i_reverse);

                         Return;

                 }

         }

        if(marketposition==0)

         {

                 if(High>=bbreak and GetGlobalVar(0) == 0)

                 {

                         Buy(1,bbreak);

                         Return;

                 }

         }

         if(marketposition==0)

         {

                 if(low<=sbreak  and GetGlobalVar(0) == 0)

                 {

                         SellShort(1,sbreak);

                         Return;

                 }  }}

if(Time*100>=notaft and Time<0.1600)

{

        if(marketposition==-1)

         {

          BuyToCover(1,Open);

         }

         if(marketposition==1)

         {

                Sell(1,Open);

         }}

end

三、Golden SX trading system 原理

Golden SX系统发布于1995年,到过去16年的时间里,仅2005年一年不盈利,它可以同时在13个不同的品种上交易,并且采用相同的交易法则,Golden SX采用1个十分有效的指标GSX indicator,在开始交易之前,会等市场有小幅回调再介入,以此来改进交易的成功率,系统有2种止损方法,1个是资金保护止损点,另1个是持有头寸后基于盈利的止损,这样可以保护自己的同时保证盈利。

新的改进版本Golden SX Electronic 于2009年发布,可以对其中2个参数做一定程度的优化,也可以不优化,1983-2010年的测试显示,该系统有60%的时间持有头寸,多个市场的平均胜率在56%左右。

四、Ready-set-Go trading system 原理

Ready-set-Go交易系统是一个长线交易系统,可以使用在多个市场,自2000年公布以来,都是使用相同的法则和参数,参数值可以根据市场趋势强弱自动调整,该系统可以使用在多个交易市场,自1970年到2011年期间,系统交易于8个市场,在扣除每笔交易100美元费用后的平均收益率是43%,平均每年每个市场交易3-4笔,Ready-set-Go的进场点和离场点均会随趋势强度的变化而变化,持仓时间从一两周到半年不等,极少数情况下会持仓1年,该系统只有50-60%的时间持有头寸,它的止损方式是基于波动率过滤的移动止损,可以是百分比止损,或是资金止损。

五、Checkmate trading system原理

Checkmate交易系统是一个独特的交易系统,该系统最大的特点是,它的目标不是最大化利润,而是保证收益率的一致性和最大回撤最小化。该系统在全部的品种上使用相同的交易法则和参数,因此避免了过度优化和曲线匹配的问题,Checkmate 在进场点选择上把关严格,可能在跟踪时同时监控多个品种,但是交易很少,这使得这套系统使用的保证金平均来看比其他系统要少,因此这个系统可以让较小的账户来交易大额的组合。

Checkmate是中线交易系统,目的是捕捉中线趋势,它采用改进系统过滤,这种方法可以使Checkmate经常能在获利最大的最近高点或低点离场,这点和那些有大回撤的趋势系统有所不同,它能迅速止盈离场,因此,Checkmate让交易者的心理相对舒适。

六、STC S&P Daytrade trading system原理

该交易系统是由stafford trading company开发,是一个日内交易系统,它的目标是捕捉日内上涨或下跌的波动,不论在牛市还是熊市均可获利,并且该系统仅用于股票指数,该系统在1997年至2011年的15年测试中仅2005和2006年2年出现略微亏损,该系统每月平均交易10笔左右,每天交易不超过2笔,市场总是有起有伏,该系统首先判断市场是超卖还是超买,超买的市场应该卖出头寸,超卖的市场应该买入头寸,第一笔交易进场方法是根据开盘价设1个区间,高于开盘价某个点位买入,低于开盘价某个点位卖出。

对以上交易模型的总结:

1、80%是趋势策略,并且周期较长,1年中有50-60%时间持仓。

2、并不进行参数最优化,普适性较强,可以用于多品种和多市场。

详情咨询微信18755163831、电话15255135040(林先生)

风险提示:文章仅为个人观点,不作推荐,风险自负。

==============