资源加载中... loading...

八款知名加码对冲EA的策略评价

Author: 发明者量化-小小梦, Created: 2017-02-20 14:19:42, Updated:

八款知名加码对冲EA的策略评价

“Martingale是纯粹的恶魔,它会吞噬掉你所拥有的一切!”,多年来,这是人们对Martingale的一致看法。Martingale的使用导致了逆势,重仓,无止损,与经典的外汇投资理念的“顺势、轻仓、止损” 是完全对立的。它像一枚随时会爆炸的定时zhadan一样,让投资者无法安枕。 然而,还是有不少人对此表现出热切的兴趣。多半是茫然无知的初学者,也有少数是精通数学及编程的技术狂人,在一片骂声中,Martingale EA还是逐渐浮现到了市场的前台。

  • 10Point3

    比较早的Martingale EA可以追溯到一款叫10point3 的EA。它在2006年8月就出现在Forex-TSD的论坛上,至今已达到470页讨论,4700多条留言,算得上一个人气火爆的老贴了。

    这款EA的原始版本代码比较简洁,是一款单向度的Martingale(即不能买卖同时开仓)。内置的加仓规则为:如果MaxTrade(最大加仓层数)设为12层以下,翻倍加仓;设为12层以上,加仓数为前一订单的1.5倍。内置了MACD指标判断方向,当14期MACD当前柱大于前一柱值时,开仓方向为多;反之,开仓方向为空,该判断只适用于第一个订单,一旦订单开出,就只按同一个方向开仓,直到全部平仓。 虽然这只是一款初级形态的Martingale EA,但仍有几点可取之处:

    • (1)设置了ReverseCondition参数,可以人为改变开仓方向。当ReverseCondition 设为1时,原来的做多方向变为做空,原来做空的方向变为做多,当然,这也只适用于第一个订单;

    • (2)设置了账户保护,当AccountProtection设为1时,可以设置订单保护的范围,当订单超过这个范围后,可以对最后一个订单单独平仓(但回测这一功能似乎没发挥作用);

    • (3)可以给每个订单设定止损,当然,通常这种设置很难实现盈利,但也避免了人们诟病的“爆仓”问题。

      10Point3对Martingale EA起到了一定的引领和推动作用。许多人在这个基础上进行修改参数、增加功能的尝试,使10Point3滋生出许多变异的版本。

  • Swb Grid

    与10Point3如出一辙的是Swb Grid。以4.1版本为例,它与10Point3一样,是一款单向度的Martingale,向一个方向逆势加仓,在达到利润目标后全部订单同时平仓。它与10Point3明显不同是:10point3用MACD作为首单过滤指标,选择顺势方向入场,入场后价格逆势再用Martingale解套;而Swb Grid首单过滤指标使用的是BBand、RSI及Stoch,主动选择以逆势方向入场。入场之后,按设定的距离逆势加仓,不再使用过滤指标,否则加仓距离会被放大,错过很多宝贵的回调平仓机会。Swb Grid可以设置加仓的倍数,默认为2;也可以选择按照某一固定数加仓,如每次加仓0.01。开仓时每张订单可以设置止损和止赢; 如果选择stealth_mode=true模式开仓(即隐身模式,避免平台商进行后台操控),则以市价单模式开仓; 如果选择stealth_mode=false,则一次性将全部level内的订单以限价单的形式全部开出。同时,鉴于星期五开仓面临持仓过周末的危险,该EA还设置了“星期五开仓限制”;另外,该EA还设置了“单日盈利限制”,实现设定的单日盈利目标后,EA不再开仓。

  • Blessing

    Blessing致力于对传统的Martingale方法进行某些突破。从其2.5版本中,我们发现了这种努力的方向:(1)实现资金分散策略。Blessing似乎意识到Martingale EA将全部资金运用于单种货币的风险,有意设置了将资金分成部分来管理,一个货币对可以获得其设定的一份资金。比如,如果10000美金的帐户,如果将其Portion设置为5, 该EA就将其管理的资金限定在2000美元, 再以此为基础来计算资金管理方式,风险似乎小了很多;(2)进行自动的仓位计算,即在使用资金管理设置为true的时候,程序会跟据分配的资金来计算开仓手数;(3)自动计算网格距离,其计算方法是以ATR值为基础,默认设置为日线图21期ATR值;(4)自动判断市场方向与人工强制做单方向相结合,当其MCbyMA设定为true时, 可以用MA来判断市场的走势, 从而决定首单的开仓方向;当MCbyMA设定为false时, 可以人工强制做单方向, 即MC=0 为做多, MC=1 为做空, MC=2为多/空皆可;默认的MC值为2。(5)长短网格相结合。Blessing似乎看到了传统以短线网格为主的Martingale EA 虽然解套快,但加仓速度过快、逆势硬扛的距离太短的毛病,想把其做成一个结合中、长线的Martingale。这从其默认的参数设置就可以看出来:它将网格分成三个级别,每一个级别里可以设置最大订单数量、网格距离和止盈点数。第一级别的网格距离设置为25,止盈点数为50,订单数量为4;第二级别的网格距离设置为50,止盈点数为100,订单数量为4;第三级别的网格距离设置为100,止盈点数为150,订单数量为总共最大订单数减去第一、第二级别的订单数量。可见,第一级别的网格为短线网格,如果订单在这一级别没有实现全部平仓,往往意味着市场出现了更加长的趋势,订单进入第二级别,使用更大的网格距离来等待市场更大的回调,第二级别的网格可以看成是中线网格;如果第二级别仍然没有实现盈利并全部平仓,订单就进入第三级别,为等待市场更大的回调,其设置的网格距离就更大,可以看成是长线网格。 当然,把短线的订单浮亏带入长线,账户的整体浮亏程度肯定是大大增加了。(6)运用UsePowerOutSL 参数来设定一个远距离的止损,以防止由于断电、断网或其他原因遭遇市场突然大幅波动无法止损出局。

    Blessing到了3.0以上的版本后,其源代码几乎完全改变,复杂程度大大增加,但依然沿袭诸多了Blessing 2的开发思路。以3.8版本为例,可以看到其还在坚持Blessing 2中的资金分配策略、长中短线结合策略、人工设置市场方向策略等。Blessing 3明显的改进体现在:(1)舒适而详尽的界面显示,将各种交易信息显示得一清二楚;(2)更多的过滤设置,Blessing 3 可以选择单独或合并使用MA、CCI、BB_Stoch来作为首单入场的过滤器;(3)多货币对冲功能,允许在浮亏或开仓数量达到一定程度后,选择一个其他货币对,当该货币对的Correlation 值(即货币相关性值,从-100到100)达到设定水平时,交易该货币对,达到风险对冲的目的;(4)去除最早的订单,由此来减少账户的浮亏;同时,可以将平仓产生的损失点数加在后面订单的利润目标上,以此来弥补该损失;(5)使用了提前平仓(Early Exist)功能,对于那些开单时间过长的订单或者开出的过多订单,可以通过减少盈利目标来使其早平仓。(6)更丰富的智能网格计算功能,除了沿用Blessing 2 的ATR值自动计算网格外,还采用了以RSI值与RSI_MA值作为过滤的SmartGrid设置。当然,Blessing 3还增加了众多的平台适用性功能,使其适用于各种不同平台。然而,由于功能的庞杂,掌握使用Blessing 3变成了一件高难度的事情。

  • OM_2Way

    这款EA值得一提的倒不是其影响有多大,而是在策略上也有所创新。它也算一款“单向度”的Martingale,其首单开仓的位置过滤器为:当前时间框架下离700期均线60点的位置(默认,可以人工设置)。如果在700期均线下方60点的地方,则做多;在700期上方60点的地方,则做空。这一过滤器的用意很显然:在偏离均线较远的地方,价格回调的几率更大,逆势行走的距离会很短,从而使回调盈利的概率增大,风险减小。这算不上是该款EA独到的地方。该款EA采用了“部分平仓”的策略,即将部分盈利单与部分亏损单对冲,获取少许利润,而不是等到价格回调到账户整体盈利的时候全部平仓。这种策略在以往的Martingale EA中很少见到,是其新颖之处。这种“部分平仓”的策略可以抓住市场最小的回调机会来减轻仓位,降低风险;当然,也有可能会“操之过急”,失去了全部平仓的机会,为将来留下后患。但总体上说来,这种策略会将浮亏控制得更好,其承受市场风险的能力要强一些。

    OM_2Way在“部分平仓”的策略中,一般用已盈利的一个或两个订单,去对冲亏损最多的订单,对冲后的利润就是一次交易的盈利。比起“全部平仓”的策略来,这会增加开仓次数和交易次数,盈利速度会有所提高。值得注意的是OM_2Way确定下一订单的仓位不是从起始仓位开始计算,而是以“最后一个订单”的仓位,再加上随订单数量而增加的持仓量来计算,这样会导致,尽管盘面上的订单数量并不多,但由于“最后一个订单”的仓位很大,账户总体持仓量偏大的情形。

  • BK’s Grid EA Hybrid

    这款EA之所以值得关注,是因为它改变了过去Martingale EA“单向度”的策略,发展出了“双向度”的Martingale。所谓“双向度”,就是多、空同时开仓,各自按照设定的Martingale 策略开仓、平仓,或者根据整体策略交叉平仓或全部平仓。双向度Martingale最大的优点就是其盈利的速度大大加强,通过账户余额的快速增长来对冲和降低风险。Hybrid实行的是做多与做空分别平仓,在下单后,EA分别计算出做多、做空订单的平均价格,再加上设定的利润目标,分别将所有多单止盈线和空单止盈线,通过同时止盈的方式来实现多单全部平仓或空单全部平仓。

    此外,Hybrid的仓位计算及网格距离的计算也与一般的Martingale EA有很大的不同。网格的距离不是完全固定的人工设置,也不是基于指标的自动计算,而是在计算中融入了持仓总量的因素,也就是说,在持仓总量增加的时候,其网格密度会缩小,以此来尽可能的减小平仓所需的回调距离;在计算下一订单的仓位时,又融入了网格距离的因素,即当设定的“最小网格距离”(MinGridSize)越大时,其仓位的递增速度越小。这种“距离与仓位”交融的策略在一般Martingale EA中是很难见到的,或许这是其被称为Hybrid(混血)的原因。但这种策略给使用的设置及变换带来一定难度,必须要在理解源代码基础上,通过反复的回测检验,才能找到合适的参数设置。

  • PipMaker

    PipMaker堪称“双向度”EA的佼佼者。不过,这只是对于15.0以前的版本而言。从15.0以后,由于改编者与原作者并非同一人,改编后的PipMaker 交易策略发生重大变化,从一款“双向度”的Martingale EA变回到“单向度”的EA,甚至成了一款剥头皮的EA了。因此,我们在此仅以10.0版本为例子探讨其策略。

    PipMaker 10.0与OM_2Way一样,坚持“部分平仓”的理念,让盈利单去对冲最远端得亏损单,而不使用账户“全部平仓”。与Hybrid相比,它除了具备Hybrid的多、空“分别平仓”的功能,还具备了多、空“交叉平仓”的功能,把Martingale EA的策略进一步深化了。简单地说,其策略就是:根据设置同时做多与做空,以多、空订单组成的网格中心线为界,当价格处在中心线以上时,市场被看作上升趋势,以中心线以下最底端的订单为对冲目标(多数时候为亏损的卖单,有时也会是盈利的买单),用已经盈利的买单或已经盈利的卖单来与其对冲,获取目标利润;当价格处在中心线以下时,市场被看作下降趋势,以中心线以上最顶端的订单为对冲目标(多数时候为亏损的买单,有时也会是盈利的卖单),用已经盈利的买单或者已经盈利的卖单来与其对冲,获取目标利润。

    PipMaker的这种策略,实际上发展出了四种对冲平仓方式:多(亏)-多(盈)对冲,空(亏)-空(盈)对冲,多(亏)-空(盈)对冲, 空(亏)-多(盈)对冲。也就是说,当一个订单走错方向使,除了可以在市场回调时被同向的订单“挽救”以外,还可以在市场继续向前时,被反向的订单“挽救”。这样一来,账户整体的风险必然大大下降。

    实际检测的结果也是如此。PipMaker 开出的多、空订单,就像会移动的网格,随着价格的变动而不停的变动边界。这样一来,即使趋势行情来临,价格走出上千点,PipMarker绝不会也拉出千点的网格来坐以待毙,而是不停地平掉一部分反向订单,追随价格前进。当然,最终追随的效果还是取决于趋势强弱的程度和与之相关的参数设置。如果趋势太猛、太强或参数设置不当,反向订单的平仓速度远远跟不上,“套牢”的程度也会很深。

    凡事有利必有弊。PipMaker 这种交叉平仓的策略,在市场小幅震荡的时候可谓如鱼得水;在市场出现大趋势时,PipMaker 虽因其浮亏缓慢而不会对“暴仓”倍感恐惧,然而,随着“套牢”程度的加深,PipMaker会明显减少开仓和平仓获利的机会,盈利能力大大下降。而且,其“解套”也不如一般的Martingale EA来得干净利落,要把套牢的单子一单单解掉, 往往需要市场经过多次反复震荡。或许是因为这个原因,后来的改编者干脆将其核心的策略删改得一干二净,增加了一些所谓“过滤器”设置,如MA, CCI,Fish, ARSI等,用以作为开仓过滤, 把一款以“平仓策略”见长的EA,变成了一款以“开仓策略”多样化的“大路货”Martingale 了,让人颇感遗憾。

  • ForexHacked

    谁会想到曾被“人人喊打”的Martingale EA 还会有商业的市场呢?ForexHacked 向人们证实了这一点: Martingale绝不是一个小范围交流的私人空间,它有着广阔的大众市场。作为商业软件,以Martingale为核心策略的EA的出现或许有着更深刻的背景:市场环境变得越来越“Ranging”,传统的交易理念越来越无法适应市场。以2.3版本为例,作为一款双向度的Martingale EA,看不出其与Hybrid有本质的区别,但它的距离、仓位、盈利目标的设置比Hybrid明晰多了。ForexHacked还设置了时间过滤器,这也是商业软件的普遍做法,用以选择有利交易时间,排除不利的交易时间,降低风险;此外,ForexHacked还可以自行设置Martingale的启动层数,在未达到启动层数以前,订单都将使用设定的初始仓位,不顺次加仓,要等达到启动层数之后再开始加仓,这样可以在一定程度上延展EA逆势前行的距离。另外,ForexHacked也尝试开出对冲仓位,来对冲由于逆势仓位过多造成的浮亏,等待市场的回调。不过,这一策略目前在测试中尚未得到成功的印证。

    顺便一提的是,与ForexHacked师出同门的ForexEnvy(也是商业软件)无论在策略上还是在代码风格上都有着明显的雷同之处。ForexEnvy的最大优点是所有订单的距离和仓位都可以单独自由设置,从而具有了更大的灵活性。

  • Indo Run

    Martingale EA从诞生后几乎就是沿着一条复杂化的道路发展:为了解决“爆仓”问题,开发者不得不绞尽脑汁的想出各种过滤方法以及资金管理手段。Indo Run把这种复杂化推向了极致:它的外部设置参数就多达近200项,要理解和掌握它确实很有难度。不过,大略观察,Indo Run主要发展了各种过滤技术:(1)时间过滤器,包括星期一至五的交易日过滤, 交易小时过滤,交易时段(即亚洲盘、欧洲盘、美洲盘)过滤,非农之日过滤,非农后第一星期日过滤等等;(2)新闻过滤器,可以根据新闻发生时间、影响程度及被影响的货币进行选择交易;(3)指标过滤器,使用了ATR、CCI、Momentum、RSI、MA、Envelop等多种指标进行入场过滤。其默认的设置为等值加仓,不过,也有Martingale设置的选项。有趣的是,该EA还有一项设置,在资金每增长1万元后自动将仓位加倍;另外一项设置可在亚洲时段将仓位加倍,考虑到亚洲时段市场波动较小。其盈利模式也有好几种,第一种是采用全部订单固定金额盈利,在该模式下,每次平仓盈利的金额为固定值,与仓位的多少无关;第二种是递减盈利模式,在该模式下,随着仓位的增加,盈利目标将减少,以尽快平仓降低风险;第三种是根据ATR值来计算盈利,ATR值大则增大盈利目标,ATR值小则降低盈利目标。此外还有一些追踪止盈和保平的方法。Indo Run也是属于单向度交易的Martingale EA,通常采用限价单的方式入场,交易同一方向的货币篮子。不过,独到的是,Indo Run可以同时交易两个到三个货币篮子,这些订单设置有不同的MagicNumber,用同一款EA来进行管理,这是过去所有的EA中不曾用到的技术。总之,这款以复杂、深奥为特点的EA,虽然在一定程度上综合了过往Martingale EA的技术,并有所创新,但也最终不能解决“爆仓”问题,只有在完全了解和掌握其用法并谨慎使用的情况下,才能把风险控制到最低。

    总结对Martingale的看法

    在介绍了这么多款知名的Martingale EA后,或许您会失望:没有一款EA真正解决了人们担心的“爆仓”问题!那么,Martingale是不是不能用,研究Martingale是否还有价值?

    我的看法是:Martingale EA 的宿命就是“爆仓”,这一点过去、现在和未来都不会改变。就像人的宿命就是死亡一样。但人要死亡,并不妨碍人可以活得很精彩。同样,尽管Martingale的宿命就是爆仓,但一样可以好好利用,用得好,照样可以赚钱。Martingale EA 爆仓是一种必然,但何时、何地爆仓,又有一定的偶然性,与参数设置、入场位置等有很大的关系,这一点可以为我们所利用。

    当前Martingale EA从台下走到台面,从民间走向商业,正是市场环境变化的结果。记得一位投资大师回忆他年轻时代的市场环境的时候说:当时市场没有那么多波动,上涨就是持续的上涨,下跌就是持续的下跌。再来看看我们今天的外汇市场,可以说完全是两重天。现在的外汇市场几乎很难见到持续、明显、稳定的趋势了,几乎全部被震荡和“震荡型趋势”所取代。而震荡和震荡型趋势,恰恰就是Martingale EA的天堂(也就是传统交易方法的地狱),难怪那些商业Martingale EA开始走红了!

    很多人说:“Martingale 结合好的资金管理,可以战胜市场”。这话有一定道理,但似是而非。资金管理可以帮助Martingale 在市场上多存活一些日子,但无法战胜市场。除了资金管理,其他的技术也非常重要。今天的Martingale,已经不是人们想象中的那种盲目加码的机器狂人了,而是融入了更多的智能因素。这些因素在前面介绍的EA中均有所体现,比如:(1)限制加仓速度和总仓位;(2)多、空双向对冲;(3)多货币对冲;(4)部分仓位平仓或止损;(5)减少盈利目标或追踪止盈;(6)结合人工趋势判断;(7)信号过滤及交易时段过滤;(8)资金分仓管理;(9)智能网格设置;(10)交易策略对冲;等等。

    笔者认为,Martingale EA虽然注定要爆仓,但Martingale的策略却可以发挥作用,这并不矛盾。这其中一项关键的技术,就是要进行综合的资金管理和调配,从概率上取得对市场的优势,而不是一般意义上的“资金管理”。

    比如说,对一个10万元资金的账户,用Martingale EA来进行交易,按每个月10%的盈利率算,需要10个月时间(不进行复利交易),才能赚取一倍的利润,将这一倍的利润全部提取后,就可保本,脱离风险。因此,只有在10个月的交易期间内,不发生任何“极端行情”,才可以真正盈利,否则,就会发生亏损。在目前的市场状况下,这个条件不算苛刻,但也不算容易,在概率上看不出有明显的优势。

    但是,如果将这个10万元资金的账户分拆为A、B两个账户,各自用一款Martingale EA来交易,要求是:A、B两个账户在交易方向上必须完全相反。这样,在发生“极端行情”时,只会有一个账户发生爆仓,另一个账户会照常盈利,亏损率为50%。如果按每个月10%的盈利率来计算,只要之前连续盈利5个月,并把利润全部提取出来,就可保本,脱离风险。相比起前面的条件来说,这要容易多了。

    再如果,我们将上述10万元资金拆分成A、B、C、D四个账户,分别用两款Martingale EA来交易,其中A、B两个账户的交易方向相同,但设置的参数不同以及入场点不同;C、D两个账户的交易方向与A、B两个账户都是相反,但各自设置的参数以及入场点也不同。这样,在发生“极端行情”的情况下,A、B或者C、D账户会面临威胁。但是,由于参数设置及入场点的不同,在实践中通常会有不低于50%的“存活率”。因此,真正爆仓的只是其中的一个账户。风险降低为25%。也就是说,按照每月10%的盈利率,只要之前两个半月没有出现“极端行情”,就可以保本并盈利了。这在目前的市场状态下,明显具有概率上的优势,盈利前景好得多了。

    也许有人说,每个月10%的盈利率,对Martingale EA来说,目标太高,会放大风险。这就涉及到一个“资金调配”的问题。我们都很知道,Martingale EA在大部分时候,由于其起始仓位很小,浮亏率非常低,资金利用率也很低。仓位里准备足够的资金,是为了防备“极端行情”的。为防备“极端行情”一直让账户资金闲置,大大的降低了Martingale EA的盈利率。因此,对于具备条件的交易者,完全可以合理的调配资金,在浮亏率极低的情况下,将部分资金用于其他的交易策略(如剥头皮、趋势追踪、套利等);在极端行情来临、浮亏增大的时候,把这些资金调回来,通过减少资金占用的方式来提高盈利率,这种方法应该优于以增加仓位头寸或网格密度来提高盈利率的方法。

    当然,真正要将Martingale用好,还是要结合人工趋势判断,适时进行参数调整,以适应市场的变化,减少“爆仓”的概率,提高在“极端行情”下的 “存活率”。总之,Martingale的“爆仓”并不可怕,只要这种“爆仓”发生的频率和发生的概率是在限定的范围内,其造成的损失远远低于在适宜交易期间的盈利所得,Martingale的策略是可以持续盈利的。


More