R-Breaker



在外汇交易系统中,枢轴点 (Pivot Points) 交易方法是一种经典的交易策略。Pivot Points是一个非常单纯的阻力支撑体系,根据昨日的最高价、最低价和收盘价,计算出七个价位,包括一个枢轴点、三个阻力位和三个支撑位。



Pivot Points策略的原理图 R-Breaker <wbr><wbr> <wbr><wbr>交易策略













期货



阻力线和支撑线是技术分析中经常使用的工具之一,并且支撑线和压力线的作用是可以互相转化的。从交易的角度上来看,Pivot Point好比是作战地图,给投资者指出了盘中应该关注的支撑和阻力价位,而至于具体的战术配合,Pivot Point并没有具体地规定,完全取决于投资者自身的交易策略。投资者可以根据盘中价格和枢轴点、支撑位和阻力位的相关走势灵活地制定策略,甚至可以根据 关键点位进行加减仓的头寸管理。



R-Breaker策略的原理图 R-Breaker <wbr><wbr> <wbr><wbr>交易策略








期货



R-Breaker根据昨日价格计算出六个价位作为今日盘中交易的参考价位,只是比Pivot Points的设置少了一个枢轴点。R-BreakerPivot Points的不同点体现在:通过参数设置,使得六个价格间的距离更加灵活,并且R-Breaker明确了具体的交易策略。根据盘中价格走势,同时采取趋 势追踪和反转策略。图中有颜色背景的区域可以视为观察区,当盘中日内最高价触及Ssetup后出现回落,且跌破参考Senter的阻力线时,采取反转策 略,即在S1点开仓做空;在空仓的情况下,如果盘中价格一路突破Bbreak的阻力线时,则采取趋势追踪策略,即在B2点开仓做多。类似地,B1点反转做 S2点顺势做空








(。。。。。上图进一步的说明详解:主要的思想依据上图为:



根据前一个交易日的收盘价最高价最低价数据通过一定方式计算出六个价位,从大到小依次为:突破买入价(Bbreak)、观察卖出价(Ssetup)、反转卖出价(Senter)、反转买入价(Benter)、观察买入价(Bsetup)、突破卖出价(Sbreak)以此来形成当前交易日盘中交易的触发条件。这里,通过对计算方式的调整。可以调节六个价格间的距离。



 



交易规则:



反转:



持多单,当日内最高价超过观察卖出价后,盘中价格出现回落,且进一步跌破反转卖出价构成的支撑线时,采取反转策略,即在该点位反手做空;



持空单,当日内最低价低于观察买入价后,盘中价格出现反弹,且进一步超过反转买入价构成的阻力线时,采取反转策略,即在该点位反手做多;



突破:



在空仓的情况下,如果盘中价格超过突破买入价,则采取趋势策略,即在该点位开仓做多




在空仓的情况下,如果盘中价格跌破突破卖出价,则采取趋势策略,即在该点位开仓做空;。。。








由于盘中开仓的触发条件涉及到多个价位,对日内价格走势较为敏感,因此该策略适用于在一分钟周期上交易。另外,该策略触发的交易次数并不多,不考虑跨周期的条件。TB IF8881分钟数据源最早为2010/4/28,其他测试条件和Dual Thrust相同。



6R-Breaker策略的累计收益率













R-Breaker <wbr><wbr> <wbr><wbr>交易策略










股指期货



R-Breaker中距离参数的设置对交易触发次数和最终收益率有一定影响,为了验证其策略的有效性,把R-Breaker的思路移植到距离参 数固定的Pivot Point上,测试结果显示收益率103.6%、最大资产回撤值比例14.6%、胜率40.96%、均盈利/均亏损1.97、交易次数595








——————————————————————–



R_Break  TB代码



——————————————————————–



//————————————————————————

// 简称: _R_Break

// 名称: _R_Break

// 类别: 公式应用

// 类型: 用户应用

// 输出:

//————————————————————————



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(Time100>=notbef and Time100<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



//————————————————————————

// 编译版本    GS2010.12.08

// 用户版本    2015/06/28 11:10

// 版权所有    zlqh29000620

// 更改声明    TradeBlazer Software保留对TradeBlazer平台

//            每一版本的TrabeBlazer公式修改和重写的权利

//————————————————————————