最近一个多月,又研究、测试了一些EA,这些EA有的很知名,有的名气小一些。
我选择的条件有两个:一是可以开仓回测;二是源代码可读。
那些用Ex4 TO MQ 破解的EA,原代码编程了一堆没有意义的代码,解读起来很难,我就暂时放到一边。
目前国内对EA的研究、开发和破译者很少,我大多到国外论坛去逛。
现在把这段时间测试的笔记、心得给大家分享一下,希望找到几个志同道合的研究者。
1、OM——2Way V3.6a_EN (推荐)
该EA默认入场信号是以当下时间框架内距700期均线60点作为首单入场点,逆势加码的Martingale。均线、偏离距离及时间框架均可调节。理论上大的时间框架似乎抗风险能力更强。但笔者测试,如果市场不回头走800点以上,也会爆仓。虽然起始手设置为0.2,加仓也不是翻倍,但增加速度依然很快。采用的不是一次全平仓的办法,而是部分盈亏单对冲。奇异的是,该EA似乎有选择性的对冲,并不一定是对冲最远的亏损单。该EA有几点值得关注和研究:(1)采用价格和均线的偏离(实际就是Bias指标)来作为入场过滤,可以在一定程度上避免逆势太多,Bias太大必然回回调。但Bias的回调并不意味着价格回调。因此,可以考虑和其他指标,如BB 或 TMA等结合起来过滤;(2)不是用固定盈利法出场,而是用固定点数的方法,因此,加仓越多,出场后盈利也越大,账户增加很快;(3)该EA在编程上呈现专业写手的风格,基本上用函数分别实现各项功能,函数的定义、调用灵活自如,可供编程参考。V3.6C 版本中增加了Profit$ 和 Loss$两个设置项,可将固定点盈利变为固定金额盈利,并可以设置固定金额的止损。盈利能力和风险都大大下降了。
2、SteadyWinnerV3(推荐)
SteadyWinner有UseMannul说明书,写得通俗易懂,因此不难理解其策略。作者坚持认为: 每次交易不能超过账户总资金的2%,因此,其资金管理严格遵照这一法则。笔者测试欧美2010年、2011年全年分别录得67%、61%的年增长率,胜率分别达到86%、88%,且资金回撤率不超过9%。当然,可能是因为欧美的测试点差为1,而用镑美来测2010年,情况就没那么乐观了,全年盈利仅为15%,因为镑美的测试点差为2。由于该EA已经用了自动增减仓位的方法,因此,盈利中已经包含了复利。10万账户的起始仓为4手。该EA出现很多0.01手仓位,或许正是盈利的秘密。作者解释,在三种情况下会出现0.01手仓:(1)如果出现亏损;(2)如果超过了周日上午(应该是避免周末持重仓);(3)如果时间在12月下半月(或许是因年底及圣诞节市场反复波动)。作者认为,当市场反复动荡的时候,该EA可以用0.01手来避免过度亏损。只有当出现反复盈一手、亏一手的情况,才会导致账户大幅亏损。该EA的标准是用在欧美1小时图上,本质上属于剥头皮程序,小止盈,大止损。不过,与多数剥头皮程序不同的是,该EA坚持顺势剥头皮,且不加仓。其入场条件为:(1)1分钟图的600期ATR值大于0.0001;(2)5分钟图的iStoch 55期、100期信号线发生穿越;(3)1分钟图的威廉指标155期威廉指标低于峰值;(4)1分钟、5分钟、15分钟、30分钟、1小时的700期EMA均低于/高于1分钟的最后收盘价;其出场条件为:(1)上述IStoch出现反穿;(2)1分钟威廉指标高于/低于-25/-75,且5分钟威廉指标高于/低于-35/-65, 15分钟威廉指标高于/低于-50。该EA内设硬止损50,止盈12,追踪止盈10点。实际盈亏比据作者说是1:2.5。相对于Steadwinner V3来说,V4作了重大改进,就是把原来的5个EMA改为只剩1、5、15期三个。如此以来,稳定性肯定不如以前,但开单量比以前增多。作者认为短期来看,V4也许不敌V3, 但长期而言,由于复利的原因,V4要优于V3。(该程序或可用作EA模板)
3、Sophia_1
一款10万元起始单量为0.01的Martingale EA居然能一年翻一倍?是的,Sophial_1在2010年镑美、2011年欧美的测试中都获得了将账户增加到20万的业绩,资金回撤率在30%上下。当然,不幸的是,2010年的欧美测试最后还是爆仓。该EA盈利的奥秘在于,加仓层数越多,盈利数额越大。因此,设计者有意在诱使EA多加仓。默认的设置为手数倍增,加满11层后至5.12手(总仓位应为10.2手)不再加仓了,等待市场回调。默认的间隔设置为30点,11层加满,市场也走上了300多点了,显然属于长线型Martingale, 其敌人也是长线上不见回调。作为EA编程,可借鉴之处在于其很多函数模型如寻找最后订单价格、计算平均价格等有通用之处。
4、10Point3v0.04
这是一款带时间过滤器的EA, 默认的交易时间设在18点——13点。不用说,这是一款利用清淡市场剥头皮的EA。使用的指标为MACD。入场点未必很精准,为此它使用了加仓的办法。默认的加仓为5单,仓位倍增。超出5单后,就只有耐心的等待市场回调。若市场不见回调,则只好用大止损解决问题。用在不同时间框架里的测试结果会不一样。笔者在5分钟图上回测欧美全年数据,虽然录得了17%的利润,但伴随的是8次资金曲线的“跳崖”,大大的吞噬了利润。看来,这种“剥头皮+Martingale”的开发思路未必有效。当然,该EA程序写作简介明朗,可以用作开发模板参考。
5、Indo Run 1.5(推荐)
2011年镑美全年回测10万元账户0.1手起单,全年仅获得30%的利润,有效开单2000余次,从交易结果上,算不上是一款出色的Martingale EA。但考虑到其仅仅经历了2次大约为35%的资金回撤,其余交易风险均处在极低水平,这在Martingale EA中也颇难得。默认的设置为间隔15点的平均网格,本人在测试中打开了Martingale功能,但并非加倍增仓,而是每手增加0.2,这虽然一方面降低了仓位增加速度,但也容易把短线拖成长线,小问题搞成大问题。开仓采取价格两端同时设限价单的方法,一边成交,则另一侧的限价单立即删除。在编程风格上呈现大型商业EA的特性,程序庞杂,设置了众多的内容显示及时间、新闻、指标等过滤器。仅外部参数就有近200项,要掌握其使用方法实在很有难度。作为Martingale EA,这种过多的过滤设置是否有效,很值得怀疑;不过,该EA的低风险运行说明了很多时候确实成功的阻止了风险。也许它确实算得上这类软件的杰作,值得深入钻研。
6、EarlyBird3
也是一款“小盈利、大止损”的剥头皮EA。默认设置中首先将交易时间作了多重过滤,可交易的机会减少了很多。与别的剥头皮EA不同的是,该EA一次在同样的位置开三单,lot相同,设置不同的止盈距离。默认的分别为10点、20点、30点;止损均为60点。这样一来,如果其中两单止盈,一单止损,损失并不算大。但如果三单都同时止损,还是痛得流血。整体上看不出有何概率上的优势。算法上用了RSI,同时还用了近16期柱子的平均高度来判断波幅。
7、EarlyTopProrate V1
其交易信号是用的日线上高、低、及开盘价的差值比较:如果日线最高价与开盘价之差大于开盘价与最低价之差,则为上升趋势;反之,日线最高价与开盘价之差小于开盘价与最低价之差,则为下降趋势,其余则为震荡趋势。然而,实测显示以该逻辑确定多、空方向胜率上似乎并不占优势:日线内的反复波折往往会打掉止损。
8、FirebirdV1.0A
虽然胜率达到90%,但一年测试下来,基本也没有利润。这就是笔者用2011年镑美在1小时图上回测该EA的结果。作者声称:该EA的工作原理是计算10期SMA并将其分别上下移动2%,形成一个通道,当价格突破通道时反向开单,如果价格向相反方向前进,就继续开单。显然,这是一个反趋势交易系统。不过,虽然加仓,但并不是Martingale,各个单子还是独立工作的,并且也设有独立的止损点。默认止盈为30点,止损为300点。正因为盈亏太不成比例,纵然胜率很高,依然难以稳定盈利。EA的程序专业而复杂,有借鉴之处,但未必可取。
9、TheMindMaster 3
该EA估计是套用的别的EA模板,因为里面存在大量可以不使用的参数。有一些明显的问题,我稍微作了修改,有的有待修改。如:(1)原来一次开三单,现在我改为了一次开一单;(2)资金管理的设置很缺乏科学性和灵活性,等等。检测2010年欧美全年,5M图取得了最佳绩效,起始资金10万,净盈利19万,不过一上来就是用的是5手单,胜率67%。其他时间框架内效果不很理想,总体基本平衡,但胜率依然很高。该EA使用W%R作为唯一指标,WR接近零时做多,接近-100时做空,多空无缝衔接退场。上述检测均未用止盈、止损和平保。估计如果将WR指标与其他指标过滤使用,有选择性的进场和更灵活的出场,或许能有盈利前景。
10、BBScalper v1.3
使用默认设置(最多三单)在5分钟测试2010年全年欧美,总计交易近1万单,10万账户默认起始交易量为1.88手,随账户净值而增减,最高出现过23手,全年总交易不下于30万手,是名副其实的“刷单王”。资金曲线图呈增-减-增凹线趋势,与TheMindMaster 3在5分钟图上的曲线非常相似。最后获利21万。该EA用BollBand && Envolope && RSI三种指标来确定首单开仓位置,后面可以自由设置10重Martingale。本人对该EA作了略微的修改,即在首单之外的单子,也加上指标过滤,并非一超过间距就开单。如此可以适当控制Martingale的层数。上述三种指标均未限定时间框架,因此,不同的时间框架其检测结果必然不一样。切换时间框架,也可以控制因连续加仓未获回调带来的风险。该Martingale自带止损设置,其检测结果多为连续小额盈利、偶然大额亏损,其盈亏因设置不同而各不相同。本人以为,该Martingale亏盈之关键在最后一层加码是否能获得足够回调。因此,可以考虑对最后一层加码设置平保,一旦回调不足打掉平保,可以到下一个适当的位置开单,多一次机会,或许能挽救很多大亏的风险。但做多层Martingale 必然把起始单调到很小,因此其盈利能力和刷单能力也大大下降。
11、MLTrend EA(推荐)
和众多趋势追踪EA一样,它的测试效果并不佳,但如果真正理解了其代码的内涵,完全可以把它变成一款依靠人工判断的半自动交易程序。它追踪趋势的条件很简单:如果前一个柱子的收盘价大于设定的均线(EMA),则做多;小于设定的均线,则做空,时间框架就用当前的图表时间。如果设定只允许交易一张订单,那这就完全是一款标准的趋势追踪EA。不过,它的不同之处在于:(1)可以强制做空或做多,这就是依靠人工判断了;(2)可以允许交易四张订单(同一方向),订单的手数可自由设置,这就意味着它在一定程度上具有了Martingale的特性了。程序中的SL 和TP也都采用了隐藏型的,跟得上潮流。可贵的在于其代码简洁流畅,稍加修改,就可变为一个得心应手的半自动交易工具。
12、MyPiramid Vo8 C
采用默认设置在15钟测试2011年全年镑美,仅获得了18%的收益,资金回撤率也不到17%,似乎是“风险低、收益低”类型的Martingale。但其实,可自由设置的仓位先采用了三倍增仓,随后变为二倍增仓,比通常的Martingale风险还大。首单入场要符合两个条件(1)当前价与布林带(默认为16,2)的中线的差值比前一个柱子与布林大的差值大/小,且前一柱的差值比上前一柱大/小, 入场做多/空:(2)当前柱的牛熊差值(即BullPower-BearPower,默认设置为14期)比前一柱的牛熊差值小/大,且前一柱的该差值比上前一柱小/大,入场做多/空。这似乎是在顺势的盘整位开单。之后的加仓多以等距离挂单的形式完成。如果说该EA有何可取之处,那就是(1)仓位设置可以自由调节;(2)入场条件方便更改,从而将其改造为另外一款不同的Martingale。
13、PipSo V4
无论在15钟还是1小时框架下,在2011年的欧美、镑美测试中,该EA均获得了60%以上的胜率,让人不得不重视它。其实它的开、平仓条件很简单:在设定的期间内(默认为36), 价格大于该期内最高价的一定幅度(默认为0),则多单出场,做空;反之,在设定期间内价格小于该期内最低价格的一定幅度,空单出场,做多;如此多、空连续,每次实际只持有一个单子。从性质上看,这属于一种反趋势交易系统,在震荡行情中表现得更好,在趋势行情中,输、赢相间,占不了什么便宜。如果能和其他的反趋势信号结合,如布林带、TMA、Bias等,再辅以人工判断,恰当地设置期间参数(period)和高低幅度参数(Highemargin, Lowmargin) ,或许能得到更好的结果。
14、Pipstaker
和所有趋势追踪EA一样,尽管在趋势行情中抓到了一段大盈利,但震荡一来,就被打得稀里哗啦。采取的进出策略极其简单,上一根柱子的最高价与更前一根柱子的最高价的连线如果下穿了EMA(默认14期),则多单出场,做空;反之,上一根柱子的最低价与更前一根柱子的最低价的连线如果上穿了EMA,则空单出场,做多。代码极其简单,作为纯粹概率性策略的测试模板,应该速度很快吧。
15、VBS-VeryBlondSystem
没什么特别的,一款Martingale而已,虽然采用了X期最高点与当前价的价差来作为入场的过来信号,且将最高开仓为设在5层,但超出这个范围的风险仍然存在。单子设置了止损,自然就更难盈利了。编程程序看似简洁,但采用一次性设置正反全部限价订单的做法,似乎太耗资源,平台商肯定也不欢迎。
16、XMT-Scalper V2.3.4(推荐)
用默认的设置测试2010年的欧美,尽管取得65%的盈利,但却是在大起大落中度过的。92%的胜率很迷人,但并不意味着该EA盈利能力稳定。2011年欧美的测试就很糟。这是一款专门用于欧美的剥头皮EA,可以放在任何时间框架下工作,但读取的都是1M下的数据。作者声称其核心策略来自著名的剥头皮软件MillionDollor Pips,但代码是自己一手重写的。该EA对点差非常敏感,只能在低点差平台上才有盈利的可能,点差超过3点就失去了意义。其基本工作原理就是在价格即将突破的时候用Buystop和Sellstop订单入场。至于价格的突破,可以用两条MA,或者布林带,或者Envelop指标,或者两个ATR值来识别。除ATR外,其他几个指标都要计算一个“通道”,用“通道”的宽度与预设的VolatilityLimit进行比较。当Stop单触发后,及时添加止损、止盈,并进行跟踪止损。总之,这几乎都是短线剥头皮软件必备的套路。虽然这款EA未必真有使用价值,但它毕竟来带有正统商业剥头皮软件的血统,况且其开发者曾为大学的计算机专业的教师,在代码研究上具有极高的价值。
17、V1+V2
该EA与10point3有点类似,属于止损型Martingale,测试看不出有很可靠的盈利能力。不过,其特别之处在于买卖各自独立开单,并可设置不同的盈利目标和开单距离。也就是说,可以通过人工判断来进行多空仓位的对冲,从而在一定程度上降低风险。可以作为代码学习软件。
18、BBand CounterTrend
一款使用布林带和envelope指标的反趋势剥头皮EA,测试没有盈利。但用Band 和 evolope来作为逆势交易的指标,方法并没错。只是要辅以人工判断,纯粹靠EA太难盈利了。
19、WSFR D2HL(推荐)
这是一个据称是WallStreet Forex Robot 的克隆版,源码具有可读性,不过由于是俄罗斯人编写的,注解的俄文成为乱码,给理解带来不少难度。我还是下决心弄透它。这是一款对点差及其敏感的剥头皮EA,在以一个点差测试欧美2011年,全年获得了惊人的200倍收益。当点差扩大到2点时,收益降低到170倍左右;当点差上升到3点时,收益则剧降至22倍,且大起大落。不过,总的说来,还是一款表现出色的剥头皮EA。
入场条件:做多
第一种情况,要同时满足:
(1)15分钟图的前一柱子的收盘价 与 15分钟图前一柱子第N期(默认为55期)SMMA(Price_Mode=High) 价的差值大于设定的的MA过滤值A(默认为18点);
(2)15分钟图的前一柱子的收盘价 与 当前的Bid的差价大于系统默认的误差值(略低于1point)
(3)15分钟图的前一柱子的第N期(默认值为11期)的Istoch主线值小于设定的做多过滤值A(默认值为1);
第二种情况,要同时满足:
(1)15分钟图的前一柱子的收盘价与 15分钟图前一柱子第N期(默认为55期)SMMA(Price_Mode=High) 价的差值大于设定的的MA过滤值B(默认为39点);
(2)同以上第(2);
(3)15分钟图的前一柱子的第N期CCI值(默认为18期)小于设定CCI过滤值的负值(默认为170);
第三种情况,要同时满足:
(1)同第二种情况(1);
(2)同第二种情况(2);
(3)15分钟图的前一柱子的第N期(默认值为11期)的Istoch主线值小于设定的过滤值B(默认值为5);
第四种情况,要同时满足:
(1)15分钟图的前一柱子的第1期MFI值大于第3期的MFI值;
(2)15分钟图的前一柱子的第N期(默认值为11期)的Istoch主线值小于设定的FilterWL过滤值(默认值为5);
(3)FilterWL过滤值大于0;
第五种情况,要同时满足:
(1)15分钟图的前一柱子的第N期CCI值(默认为18期)小于设定的FilterCL过滤值的负值(默认为250);
(2)FilterCL过滤值大于0;
做空条件与上述条件相反,但要注意,有一些默认的设置,做空与做多的参数可能略有一点差别。纵观上述条件,可以观察到,该EA在入场时同时选择两方面的条件(1)价格处于顺势方向;(2)某一指标处在低位,有较好的入场价格。
出场条件:
第一种情况:
(1)订单入场价格与Bid的价差小于设定的亏损点数(默认为65);
(2)设定时间框架内(默认15分钟)、设定期间(默认为15期)的Istoch主值大于设定的iWPR平仓过滤值(默认为90);
(3)1分钟图的上一个柱子的收盘价格与Bid的价差小于设定的误差值;
(4)订单为市价单;
第二种情况:
(1)1分钟图的上一个柱子的开盘价大于收盘价;(价格回调了)
(2)Bid 价与订单入场价格大于设定的价格过滤值(默认为14点);(也就是说,盈利目标实现了)。
(3)订单为市价单。
由此可以看出,该EA的盈亏比默认为65:14。但实际上,止损、止盈有可以对此进行调整和限制。默认TakeProfit 设为36点,Stoploss设为35点。
对资金管理,有以下几种方法:
(1)如果AutoMM>0 而RecoverMode==false时, 直接用一种计算公式求出LotSize来:
LotSize = MathMax(MinLot, MathMin(MaxLot,MathCeil(MathMin(AutoMM_Max, AutoMM) / LotPrice / 100.0 * AccountFreeMargin() /LotStep / (LotValue / 100)) * LotStep));
(2)如果AutoMM>0 而RecorverMode==true时, 则调用CalcLots()函数来计算。而CalcLots的计算方法十分复杂,也是该EA最出色的部分,
(3)当AutoMM=0时,不论RecoverMode如何设置,都按固定的Size入场,默认是0.01手。
20、Blessing
Blessing在Martingale类EA中也算是大名鼎鼎,然而,其表现实在不怎么样,不论是早前的2.5版本还是随后的3.0版本,在市场回测中很快就败下阵来:输得精光。究其原因,我想还是开发者思路的问题:其一,想做一个中长线的Martingale系统,来对付长时间单边的市场,殊不知网格间隔越长,浮亏越大,而市场短期的回调尽被错过;其二,试图用一些过滤器来限制入场,以图减少风险,殊不知Martingale做的就是逆势,“搞错方向”乃其必然,一旦入场,就迫不得已,再多的过滤器又有何作用?其三,更有甚者,试图用“止损”来避免爆仓,殊不知频繁的“止损”根本没有可能盈利,最后的结果仍然是爆仓。Blessing的弱点把Martingale系统的弱点暴露无遗,却根本没有找到解决的办法,不知是如何浪得虚名的。从2.5到3.0,交易思路并没有多少变化,但程序语言的变化却天翻地覆,从简洁轻盈的风格一变为复杂庞大的架势,就是专业程序员也难以理出头绪。也许这就是许多“程序疯子”把EA带入了死路。
21、RAVI
这款EA在2010年欧美1小时图的回测中取得了不错的成绩,但2011年就差强人意:大部分时间在亏损中度过,最终也没有将账户扳平。这是一款趋势追踪的EA,引用了客户指标RAVA indicator来识别趋势。这个RAVA指标很奇妙,其实就是一条长期均线和一条短期均线的差值,再与长期均线相除(默认为65期和7期,即(MA65-MA7)/MA65,这个值形成的曲线与标准的MACD曲线很相似,但比MACD曲线有更好的过滤性,在趋势中能把那些更大的回调信号过滤掉,有利于长久持单。因此,这款EA也没有什么秘密:在RAVA值上穿0.3时空单出场,入场做多;在RAVA值下穿-0.3时多但出场,入场做空。能不能盈利,就看市场是否出现趋势了。该EA一次在不同位置开多张正手单,盈利起来可观,亏损起来也可观。虽然看不出该EA比起同类EA有多大的优势,但用RAVI指标来作为出入场的指示,确有独到之处。这个指标虽然不常用,但却非常简洁,笔者也情有独钟,对RAVI指标作了一些改动,就是将其取值与当前框架下的平均柱长相除,这样得到的参数就可以在不同时间框架下通用,方便多了。
22、Forex Envy 2.0
如果说,Martingale类的EA经历过从“人人喊打”到“敬而远之”的历程的话,那么,Forex Envy的登场就标志着这类EA取得了冠冕堂皇的地位了。不错,以往的商业EA中也有用到Martingale加仓手法的,但它们毕竟不敢堂以Martingale自居,只算是Scalper类中以大博小的策略之一。而Forex Envy居然作为商业软件占有了一定的市场份额,还受到了一批拥趸者的追捧,说明了“市易时移”,市场环境变了,过去看上去高风险的策略正在成为盈利的利器。
Forex Envy 一踏入商业化的大门,就操作得十分商业化,除了过度的宣传和包装外,还尽可能的把传播、复制、解码它的网站帖子全部封死,连一本操作指南也难以找到,让人觉得十分神秘。不过,我好歹还是找到了一款别人破解了的2.0版,可以回测开仓,不过由于是机器转译,其原代码难以卒读,我花了整整一天时间才将其变成能理解的代码,对其策略也了解了大概。
说实话,这款EA在程序上有点“耍花招”,弄了许多让人费解却没有实际意义的代码。就其最终结果来看,与其他Martingale的手法是一样的:逐步加码,一起平仓。略有些不同的是,它给每一个订单设置了止盈、止损。默认的止损为180点,如果碰到了也基本暴仓了。其回测表现也因设置不同而有天壤之别:设置得好,盈利很快,一年做2-3倍不是问题,且未有大的“跳崖”或爆仓;设置得不好,瞬间就可以爆仓。这也是martingale EA的共性:爆仓是必然的,但在何时、何地爆仓,却很偶然,跟运气关系很大。
过去由于Martingale策略被边缘化甚至妖魔化,因此,Martingale EA的原代码大多是公开的,随处可得,像著名的Blessing,Indo Run等。现在看来,这种随处可得的EA将来可能都会包装后卖钱,建议大家留心收集,用心甄别。Martingale并非绝对不能用,但要在了解的情况下用,可掌控的情况下用,还是有控制风险可能的。
上面即为全部EA测评笔记。即使不用EA做盘,但作者在设计EA时的策略对我们也会有所帮助。