全球今日讯!Dual Thrust策略是什么?常年排在国外前10大流行策略

发布时间:   来源:CSDN  

Dual Thrust策略是一个很经典的策略。常年排在国外前10大流行策略之一!

绩效测试(橡胶期货,2016/1/1~2018/1/4,主图1分K,子图30分K,回测换月跳空有处理些) 2017年策略陷入瓶颈,2016年的趋势年,策略表现非常良好!


(资料图)

策略代码说明 1.模型体现的基本思想:

首先,HH到LL这个范围框出了过去N天中价格的移动区间。HC和LC表示的是过去N天内价格的波动情况。如果HC和LC都在中间位置,那么表示价格在N天内的高低波动只是一种偶然情况。其余时间波动都很小,而且市场呈现出不明朗的趋势。在HH和LL范围固定的情况下,突破需要的点数相对较少。

如果过去N天内价格都在上涨或下跌,呈现单边趋势,那么则表现为HH和LL的范围较大,HC和LC都趋近于箱体的上/下沿,则表现为较大的buyrange 和 sellrange,于是乎,价格产生突破的话需要的点数也就更多一些。

这样的设计,体现了突破策略的一个基本思路,即“大行情大突破,小行情小突破”。

2.我们进一步研究一下策略在不同行情中的表现情况:

(1)行情连续走强。例如,前日大涨,昨日大涨,今日也大涨。这时,策略会一直向上突破,死死扣住持有的多仓。

(2)行情由强转弱,进入平台期。例如,前日大涨,昨日小涨,今日微涨或微跌。这时,策略仍然会一直持有多仓,不产生任何有效突破。

(3)行情由弱转强。例如,前日小涨,昨日中涨,今日大涨。这时,策略会针对之前持有的仓位采取进一步的措施。如果之前持有的是反向仓位,则会反手。如果之前持有的是同向仓位,则会一直抱住。

(4)行情持续保持弱势,波动越来越弱。但温和同向变动。这时,如果持有的是同向仓位,那么不会有什么问题。但如果持有的是反向仓位,问题就来了。可能价格一直不突破,从而导致连续亏损。这种亏损可能持续时间不会很长,因为随着短K棒的逐渐增加,突破所需要的点数也就越来越小,很容易突破做反手。

(5)行情急速反转。这时,要取决于k线长度的相对大小。如果反转的幅度远小于之前的幅度,且幅度逐渐缩小,那么策略要承受较大的利润回吐或亏损。如果反转幅度大于之前的幅度,那么会直接反手。所以,为了保险起见,作者引入了小于1的参数K1和K2,保证突破区间逐渐收敛,使得投资人不至于长时间一直持有一个亏损仓位。

(6)策略最大的风险来自于隔日风险。如果连续出现两根阳线,但后一根阳线远低于前一根,这时的问题在于

,策略会一直持有这样的亏损仓位而不采取任何动作。

3.由于没有止损止盈模块,模型的表现实际上并不是十分稳定。

这可以说是模型的一个缺陷。模型是一个永远在市的策略,碰到信号以后就反手。但是,进一步设定固定止损位后,发现模型的盈利状况反而下降了。我进一步调试止损位,发现只有当止损位大于1000跳,也就是对应橡胶的5000个点时,策略的盈利才不会受到止损位的影响。也就是说,最大回撤高达保证金账户的300%,也就是说,如果全部资金投入这样的策略的话,已经爆仓无数次了。策略风险极大。所以,看上去很美的策略并不一定真的敢用。

1000跳的波动已经远远超过了涨跌停板的限制,说明策略在某一时间段连续持有巨额亏损仓位达数日之久。而当初的突破信号可能已经与当前的行情不再有任何关联,说明这样的盈利很有可能存在运气的成分。

另一方面,策略缺少止盈部分,所以,也不会锁住任何利润。当然,止盈止损要结合在一起看,如果只有止损,没有止盈,那么策略很可能就是一直止损出场,没有盈利。

4.可以借鉴和提升之处

一是这个策略用一个很简单的逻辑,融入了顺势突破的精髓和一定的止损功能,在不同的行情内体现出不同的变化。设计人思维之独特令人叹服。二是该策略如果转变成日内策略,也许会有一定的效果改善。具体有待各位朋友去挖掘。三是该策略突破区域的设置和参数的运用,似乎缺少一个令人信服的理由。未来的盈利能力值得怀疑。

策略使用注意事项 策略插入时会出现如下错误,因为本策略需搭配子图商品,可以在主图商品上右键-〉插入商品,选择不同周期的商品。

代码:

//Use data2 as day bar.

//Use data1 as minute bar.

Inputs:k1( 0.5),k2 (0.5);

inputs:Mday(1 ),Nday (1),lots(1), daystart(900 ), dayend(1500 ),freq_min (10);//10 min bars, you may chance to other frequency

vars: dayclose(0 ), dayhigh(0 ),daylow (0);

vars: sellrange(0 ),buyrange (0),buytrig(0), selltrig(0 );

Vars: HH( 0),HC (0),LC(0), LL( 0);

vars: buyposition(0 ),sellposition (0);

vars: opentoday(0 );

//give a start value for open price of today(data1)

if time >=daystart and time <=daystart+ freq_min then begin

opentoday=open ;

end;

HH=highest (high ,Mday ) of data2 ;

HC=highest (close ,Mday ) of data2 ;

LL=lowest (low ,Mday ) of data2 ;

LC=lowest (close ,Mday ) of data2 ;

if (HH-LC)>=( HC- LL) then sellrange=HH -LC

else sellrange =HC -LL ;

HH = Highest (High ,Nday ) of data2 ;

HC = Highest (Close ,Nday ) of data2 ;

LL = Lowest (Low ,Nday ) of data2 ;

LC = Lowest (Close ,Nday ) of data2 ;

If((HH - LC) >= ( HC - LL ))then buyrange = HH - LC

Else buyrange = HC - LL;

buytrig = k1* buyrange;

selltrig = k2* sellrange;

buyposition = opentoday +buytrig ;

sellposition = opentoday -selltrig ;

If(MarketPosition = 0) then

begin

If High >=buyposition then

Buy lots shares next bar at buyposition stop ;

If Low <=sellposition then

SellShort lots shares next bar at sellposition stop;

end;

if marketposition =-1 then

begin

if high >=buyposition then

buy lots shares next bar at buyposition stop ;

end;

if marketposition =1 then

begin

if low <=sellposition then

sellshort lots shares next bar at sellposition stop ;

end;

//setstoploss(minmove*30);

//draw trendlines

if (time>= dayend-3 *freq_min and time<=dayend ) then begin

tl_new(date ,0900,buyposition, date,time ,buyposition );

tl_new(date ,0900,sellposition, date,time ,sellposition );

end;

相关文章Related

返回栏目>>