您现在的位置:程序化交易>> 期货公式>> (MC)multicharts>> MC知识>>正文内容

期货期权交流Dual Thrust Trading Strategy [MC]

  • 咨询内容: Dual Thrust策略是一个很经典的策略。废话不说,直接上干货。MC代码如下。

    //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 -LCelse 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) thenbegin       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 thenbegin       if high >=buyposition then               buy lots shares next bar at buyposition stop ;end;
    if marketposition =1 thenbegin       if low <=sellposition then               sellshort lots shares next bar at sellposition stop ;end;

    //setstoploss(minmove*30);
    //draw trendlinesif (time>= dayend-3 *freq_min and time<=dayend ) then begintl_new(date ,0900,buyposition, date,time ,buyposition );tl_new(date ,0900,sellposition, date,time ,sellposition );end;

    评价:模块没有止损、止盈语句。是一个永远在市的策略。跑出来的绩效是不错的。至少能够赚钱。以下是用橡胶10分钟线跑出的结果:




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

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?立即注册

     

  • MC技术部: 学习了,赞一个

 

有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友

可联系技术人员 QQ: 1145508240  点击这里给我发消息进行 有偿 编写!不贵!点击查看价格!


【字体: 】【打印文章】【查看评论

相关文章

    没有相关内容