威力外汇

 找回密码
 注册

QQ登录

只需一步,快速开始

开启左侧

外汇策略(EA)测试技巧

[复制链接]
莫等闲 发表于 2019-10-9 13:33:03 | 显示全部楼层 |阅读模式
写这篇文章的目的,是看到网络上有不少新人写个程序经过历史数据测试能够赚钱,然后心热上实盘,最后亏损的一塌糊涂。在这里告诫新人,一切你能想到的认为能赚钱的方法,必须写成程序来测试,就是说,人想出来的东西往往是不靠谱的,最终行还是不行,必须用EA来实际测。
能够稳定赢利,是一个EA成功的标志,爆仓、亏损、回撤太大的EA都不是好EA!有没有稳定赢利的EA,答案是肯定的,有。但是,从开始写EA到能写出稳定赢利的EA,是一条艰辛而漫长的路。

一、策略、数据、参数,三者的关系
策略、数据、参数是EA成功的3大要素。如果以开车打个比方的话,策略就是车况,数据就是道路,参数就是驾驶技术。
1、 首先,策略要具有必然的赢利能力。注意,这不是说策略随便设置个参数都可以赢利,而是说在较为宽泛的数据条件下,同一个策略,几乎都可以通过调整参数实现赢利。注意,有些策略虽然也可以赢利,但那种赢利没有逻辑性,而是概率事件,一般表现为把参数调整到邻近值即出现亏损(比如某个参数值为31时赢利,换到32亏损)。让人沮丧的是,通常的,绝大多数容易了解到的策略不具有赢利能力。
2、 其次,路况问题,要确保测试的历史数据和实盘的历史数据出于同一处。也就是说,测试的历史数据必须以实盘的历史数据来测试,这非常重要。经过本人大量统计,不同的历史数据具有不同的特性,比如说,使用A平台标准账户的历史数据调试的参数只能在A平台的标准账户实盘操作,换到B平台或者换成A平台其它账户类型就可能亏损。如果上实盘的平台没有完整的历史数据,解决方法是,让EA运行在测试账户中,再跟单。
3、 最后是参数问题。不再赘述。

二、策略(EA)不赢利原因:
1、 策略反映的心态问题。典型的是马丁格尔,网络上使用马丁格尔策略的人非常多,马丁格尔是一个冒险或者赌博类型的思路,马丁格尔的成功前提必须是存在较少数量的连续亏损,经过我长期的研究,实际上很难找到一种策略可以实现较少数量的连续亏损。再比如扛单型策略,不设置止损只设置止盈,这种策略在振荡行情下非常有效,但是在单边行情中很快就会爆仓。交易策略最好按照交易思维进行,就要像你在商业圈不要靠武力来解决商业问题,要不然你永远都难以在这个圈子站住脚。不要想着使用某一种简单的方法就可以实现获利,在外汇市场,获利比上天还难,如果你很容易就找到了一种获利方法,那么你很可能只是空欢喜一场。
2、 使用单一指标。比如说,只使用均线,即便你2、3条均线一起使用,这也是单一指标。或者在趋势指标中,把均线和MACD同时使用,这也类似于单一指标。经过我实际测试(15年),MT4软件自带的任何指标都不赢利,同一种指标不论怎么组合也难以赢利。这个问题在于每个指标都有自己的短处,比如均线(趋势指标)遇到行情急速振荡的时候就失效,RSI(振荡指标)在单边的时候就失效。制作赢利的系统第一个法则就是要了解指标的内涵,了解指标的长处与短处,尽可能的补充或者
避开指标的短处。
3、 忽略统计。比如你的策略生成了10000个订单,通过对订单的统计,你发现凡是每天8点开的单子亏损率90%,那好,就在8点不要开单;或者说,凡是在某个指标的特定值开的单子亏损概率非常大,那就避开那个时间。统计的方法不要局限于少量的视角,要从比较宽泛的角度去大量统计。
4、 闭门造车。外汇市场是全球人参与的,聪明的人自然很多,比自己更高明的人也大有人在,而个人的力量是有限的,个人看待问题也往往是局限的。多去国外论坛看看,多看看一些经典的书籍,不要对某些和自己风格迥异的思路太过排斥,对于认为有道理的东西多做测试,你的任何偏见都可能成为放走利益或者产生损失的祸首。

三、策略(EA)测试赢利而实盘亏损的原因:
1、 测试的历史数据不够长。一般的,我认为自己信得过的EA必须能够从2001年开始测试到现在(2016年),因为在这期间行情有过几次大的单边和振荡,另外,有些指标从2011年起效果变差,有的指标则从2013年起效果变差。很多人测试EA仅仅用近几年甚至几个月的历史数据来测试,这实在不能说明问题。我曾下载2000多个EA测试过,能在15年不亏损不爆仓的,不到1%。
2、 测试用的历史数据质量不佳。一般的,平台提供的历史数据精确度比较好,如EURUSD基本上都可以精确到5位小数点,而一些数据公司提供的EURUSD(如Forex Tester)只能精确到小数点后4位。不要小看这一位数字,EA参数优化的效果与是否存在这位数字关系很大,因为EA完全是数学逻辑,大于就是大于,小于就是小于,不存在“差不多大小”的情况。解决方法是,EA的参数优化最好用多套历史数据测试,找出在每个各历史数据下均表现比较好的参数。或者一直使用某一种历史数据,再通过跟单来解决。
3、 MT4的参数设置错误。剥头型的EA,测试的数据必须越细越好,平台的点差越低越好。在测试头皮型EA的时候,“复盘模型”的参数很重要,一定要用“每个即时价格”来测。同时注意那个“点差”,不要把点差设置得小于平台提供的实际值,为了程序在实盘上可以顺利运行,点差最好比平台提供的均值稍微大一点。交易思路的EA(趋势或振荡)一般对数据精度要求不敏感,当然,如果数据周期很小下单很频繁的话,那么测试精度和点差也是个重要问题。
4、 平台不尽可信。要清楚的是,头皮型EA即便经过了严格的历史数据测试,放到实盘也未必能够赢利。想想看,如果你的头皮EA可以稳定赢利,这就伤害了平台利益,平台就会影响数据来搞死你。外汇市场在不断自我修复,平台也在不断进步,剥头皮这种不属于交易的赢利方法,操作难度已经越来越大。如果你准备常年从事这个行业,最好摒弃头皮这种思路。
5、 MT4的EA测试计算过程存在严重错误。很多人对MT4从不怀疑,我可以负责任的告诉你,MT4并不可靠。比如有时候在MT4中测试时赢利的,如果你找到历史订单看一下,你会发现,很多明明是亏损的而MT4的计算结果却是赢利,这种情况发生的几率并不小。解决方法是,EA在测试以前选中“复盘显示”,在动态显示交易的过程中观察净值图,看是不是存在计算错误。最好还是要细心一些,遇到了赢利的EA一定要按捺住内心的激动,按照程序逻辑,找到历史数据,用手工计算几个订单看看和MT4计算的结果是否一致。

四、判断一个策略好坏的依据:
1、 能否经受更长周期历史数据测试;
2、 对平台差点依赖越是否敏感;
3、 尽值回撤比例;
4、 在所有时期赢利能力变化;
5、 开单量与回撤比例之间的比例;
6、 策略的作者是否深入体验并领会市场。

五、MT4中EA优化实例:
1、 比方说我们写了一个EA,这个EA中有两个重要参数,一个参数是period(整数类型,表示我们所使用的指标的周期),另一个参数是valve(整数类型,表示阈值,当条件大于或小于这个数值时采取一定的措施)。那么,在EA的开头声明这两个变量类型为“extern”,这样我们就可以利用MT4的优化功能遍历所有参数数值,来寻找最佳参数。
如图:

外汇策略(EA)测试技巧

外汇策略(EA)测试技巧,威力社区


2、 编译好EA后,在MT4窗口按Ctrl+R打开测试窗口,选好EA、交易品种、周期等以后,点击右上角的那个“EA属性”,在第一个标签页的下方去掉“遗传基因算法”前的钩,这样的话,就可以把所有可能性全部计算一遍。然后点击第二个标签页,我们看到之前在程序中设置的period和valve变量可以分别设置。比如period,我们把起始值设置为10,把递增值设置为1,把终止值设置为100,并选中前面的钩让这个设置有效。那么在参数优化的时候,MT4会自动按照你的设置,把这个参数从10到100挨个计算一遍。同样的道理,valve也是这样设置的。如果同时period和valve两个都设置为递增调试,那么Mt4会把他们之间匹配的所有可能性全部计算一遍。关闭这个对话框,选中测试窗口右下角的“优化”(实际上这个翻译并不准确,较准确的翻译应该是“优化EA参数”)。
3、 接下来我们点击“开始”,MT4将逐个进行计算以找到赢利的参数设置,在“优化结果”那我们能看到参数设置和对应的获利亏损情况(总体亏损的不显示)。在“优化图表”那,我们把显示设置“二维平面”,这样就能够比较生动的看到两组参数在不同匹配的情况下的赢利状况。
如图:

外汇策略(EA)测试技巧

外汇策略(EA)测试技巧,威力社区



绿颜色表示可以获利,我们看到,两组参数的匹配呈现类似斜曲线的样子,具有较为明显的规律,一般的,这样的EA质量比较好,如果显示绿颜色在二维平面上接近随机,说明EA获利的稳定性较差。
4、 计算完成以后,从“优化结果”那里按照获利排序,找到获利较大且亏损较小的参数,
在测试首页去掉“优化”按钮,打开“EA属性”设置默认值为找到的最佳参数,按“开始”再次测试。注意,这次的测试只运行一次,产生当前参数的测试结果,在新出现的标签“结果”、“净值图”、“报告”处可以看到。
5、 在其它历史数据中如法测试相同货币对(通常需要打开另外的MT4或者别的电脑),如法炮制,找到在多种历史数据下皆表现良好的参数,即最终的最佳参数。


六、用MT5云端实现多电脑资源共享策略测试
在MT4中测试EA的朋友可能早已发现,如果自己的电脑是多核心CPU,MT4策略测试时只能使用其中一个内核,CPU其它核心无法发挥功用,浪费时间。假如在4核CPU的电脑上使用MT4测试某EA需要花费4天,那么,相同EA的MT5版本在MT5中测试只需要一天,因为MT5可以同时使用多个CPU内核,可以更好发挥多核CPU的作用。除此之外,MT5还有更强大的功能,可以把多台电脑的CPU资源集合在一起使用。下面我们讲一下怎么把2台电脑的CPU资源集中在一起使用。
举个例子:
比如在局域网中有2台电脑,内网IP地址分别是192.168.1.2、192.168.1.3,我们在192.168.1.3
测试策略,需要使用192.168.1.2的CPU资源,那么,我们先来配置192.168.1.2。
1、 在192.168.1.3的MT5安装目录下找到metatester64.exe(注意,本人电脑为64位,你的电脑是32位的话这里的文件名可能不同),复制到192.168.1.2的电脑上运行。
2、 在出现的对话框点击“服务”
如图:

外汇策略(EA)测试技巧

外汇策略(EA)测试技巧,威力社区


(注意,这里的192.168.1.86是我截图的IP,这个例子中应该显示192.168.1.2)
“代理”后面显示的4表示你电脑有4个内核,如果是2则表示你的电脑有2个内核。“密码”的用途,是你在192.168.1.3使用这台电脑资源的时候需要验证的密码。端口号用默认的就可以了。
然后点“添加”,稍等片刻,下面的列表框就会出现添加结果,这样,就以“云端”功能就以
Windows服务的方式加载到了系统后台(开机自动运行)。192.168.1.2这台电脑就设置好了。
3、 在192.168.1.3电脑上打开MT5,Ctrl+R打开策略测试,然后在最下面找到“代理”,
如图:

外汇策略(EA)测试技巧

外汇策略(EA)测试技巧,威力社区


点击“代理”,如图:

外汇策略(EA)测试技巧

外汇策略(EA)测试技巧,威力社区


“Local”为本地的CPU资源,可以点开前面的加号看到自己CPU的多个内核和系统内存;“Local network farm”为你的云端CPU资源,我们需要把刚才配置好的192.168.1.2电脑添加进来。
4、 在“Local network farm”行上点鼠标右键,选择“增加”,我们看到有3种方式,如图:

外汇策略(EA)测试技巧

外汇策略(EA)测试技巧,威力社区


像图上这样添加你的IP、端口号和密码,点下一步,系统会找到每个CPU内核,然后点完成,配置完成。这样,当你在192.168.1.3测试EA的时候,MT5自动通过网络使用192.168.1.2的CPU资源。广域网设置也是同样的道理。
5、 注意,192.168.1.2需要关闭防火墙或者开启2000—2003端口,要不然的话在192.168.1.3
中可能无法找到192.168.1.2。
6、 接下来,你在测试EA的时候会感受到速度大幅加快。
MT5的MQL5语言比MT4的MQL4语言复杂得多,但是MT5也提供了让人值得学习MQL5的优势,如果你对MT4的策略测试不满意,可以尝试使用MT5。


七、MT5策略测试优化结果的筛选技巧
策略测试完成以后,点击“优化结果”,对“结果”或“利润”按照降序排序,如下图所示。

外汇策略(EA)测试技巧

外汇策略(EA)测试技巧,威力社区


我们可以看到,测试序号17743为最佳结果,赢利1638.35,回撤(为资金的)2.67%,共40个交易,参数为:Period=46, valve=28.5, mfi_price=1
现在的问题是,如果我们需要以此优化结果找到最佳参数,那么,位于优化结果第一行测试序号17743的参数能不能使用?
为了更加生动的显示参数与获利的分布情况,MT5可以生成优化图形,选择“优化图形”点击“3D图形”,我们得到下图:

外汇策略(EA)测试技巧

外汇策略(EA)测试技巧,威力社区



绿色的部分是获利的测试,你可以旋转坐标来观察实际状况。我们看到,绿色的像山峰一样的分布大多是连续的,实际上和山峰差不多,有腹地也有顶峰,而顶峰就是我们要找到的最佳参数。是不是说,顶峰越高就越好?不是的!必须是顶峰位置参数的相邻参数的获利状况和顶峰相差不大,否则,即使获利很多,也可能属于“概率幸运”。
再看优化的结果列表。在优化结果的前列,valve的值大多在27、27.5、28、28.5,这说明该值在这些数值附近有较大的获利能力,说明第一行的valve值28.5是可取的。然后看前一个参数period,当value的值在27—28.5的时候,period的值在41—50前后,处于一个比较集中的区域,说明period这个值也是可取的。最后一个参数mfi_price,我们发现当参数为Period=46, valve=28.5的时候,分别有mfi_price的值为0和1两条结果,择优选获利较大的mfi_price=1。说明系统自己判断的第一行测试结果的参数是可用的。
相反的,如果我们选择测试序号为609的参数Period=12, valve=7,我们看到,在period=12和valve=7的附近支撑数字较少,我们认为这个值很可能是孤立的幸运数字,所以舍弃不用。
其它情况以此类推。

八、本篇终结语:
最后奉劝朋友们,外汇交易并不像我们学习开车那么简单,开车是非常简单的事情,基本上每个人通过努力最终都能学会。而在外汇市场,绝大多数人的天赋和努力,最终不能到达成功的彼岸,最终都会被市场遗弃,执着于此,只会亏损累累。

上一篇:MT4外汇自动交易圣经
下一篇:系统交易方法
一个绝顶高手,绝不仅仅是拥有绝世剑法,还要有绝顶聪明的思维。
武功再高 只是十人敌 百人敌,但有了顶尖的思维才可以成为万人敌。
回复

使用道具 举报

关闭

站长推荐上一条 /10 下一条

“毅力是将最成功的人与其他人区分开来的“额外的东西”。为了坚持我们的梦想,直到它们成为现实,我们必须传递激情、毅力和耐力”——特拉维斯布拉德伯里

小黑屋|威力社区

GMT+8, 2024-11-21 18:42 , Processed in 0.258161 second(s), 39 queries .

Powered by Discuz! X3.4

© 2017-2020 Comsenz Inc.

本网站仅在国家法律允许时提供学习交流。本网站不代理经纪商(broker),不参与经纪商经营活动,不对经纪商提供担保或承担任何责任。

高风险提示:外汇黄金、差价合约等杠杆类交易包含重大亏损风险,阁下可能会于交易时蒙受损失超过存入的资金!!! 因此未必适合每一位投资者。 阁下必须充分理解所涉及的风险并在必要时寻求独立财务顾问建议。

任何在本网站内发表的评论、新闻、研究、分析、价格、其他资料或第三方网站的链接只能视作一般市场资讯。本网站信息不构成或导致(1) 提供或出售任何金融服务或产品的要约邀请;(2)采取任何金融产品相关行动的推荐(明示或暗示);或(3)任何投资建议或市场预测。 市场意见并非按照旨在促进投资研究独立性的法律要求而拟备,因此并非受到发放此等资料前禁止交易的约束。本网站不会为直接或间接使用或 依赖此等资料而可能引致的任何亏损或损失(包括但不限于任何盈利的损失)负责。