This article explains the step by step process of identifying and resolving code errors as well as the steps in testing and optimizing of the Expert Advisor input parameters. You will learn how to use Strategy Tester of MetaTrader 5 client terminal to find the best symbol and set of input parameters for your Expert Advisor.
An underrated feature of Metatrader’s Backtester is its ability to define a custom fitness function for the genetic optimization process. Meaning that you no longer are limited to rather simple metrics like final balance or profit factor but can evaluate the quality of each test run with your own individual calculations. To give a quick...
经过反复试验,我得出了类似的结论。我不知道为什么花了这么长时间才找到这篇文章和讨论。
我一开始遇到的问题是,我的突破和趋势驾驭策略往往只适合少数几次超级盈利的交易。这几笔交易的利润如此之高,以至于优化器只 "关心 "这几笔交易,并使用广泛的止损和远期止盈,确保其信号能捕捉到这几笔交易,并最大限度地榨取这几笔交易的利润。即使是在使用 DD 与利润比率进行优化时,它仍然不惜一切代价追求这些交易的运行,因为运行占其利润的 90%。我想以某种方式限制这种行为,同时又不切断突破/趋势运行策略。我发现,只要满足最低交易次数和最低利润系数(约 1.3),优化相对 dd 百分比(不是 dd 与利润的比率,只是 dd 相对百分比,而不是其他因素)就能获得良好的结果。
不涉及利润似乎是不对的,但通过设定最低利润率标准,大部分利润相当可观的交易都会出现在顶部。从盈利运行中剔除 dd 通常会增加利润。无论如何,通过选择利润较高的交易,并手工仔细进行最后的润色(如这篇优秀文章https://www.mql5.com/zh/articles/156 的结尾),我可以让优化器完成大量的初始工作,同时避免大量的曲线拟合。我曾用以下代码做过实验,结果好坏参半。(一旦开始在基于百分比的评分基础上增加额外权重,实验也应包括改变风险和起始平衡)。
有谁能告诉我这篇文章是否适用于 MT4?它似乎已经采用了 MT5 的许多属性。
一般来说,我的任务是在 MT4 测试器中 只获取LR 相关性 和 LR 标准误差的 值,因为在 MT5 测试器中很容易看到这些值。
我只想在测试运行结束时,在 deinit() 函数中读取这些值,并将它们与优化参数值一起写入文件。
也许有人已经做过这样的工作,并能与我分享现成的结果(计算 LR 相关性和 LR 标准误值的必要函数),这样我就不必重新发明轮子了?
有谁能告诉我这篇文章是否适用于 MT4?它似乎已经采用了 MT5 的许多属性。
一般来说,我的任务是在 MT4 测试器中 只获取LR 相关性 和 LR 标准误差的 值,因为在 MT5 测试器中很容易看到这些值。
我只想在测试运行结束时,在 deinit() 函数中读取这些值,并将它们与优化参数值一起写入文件。
也许有人已经做过这样的工作,并与我分享了现成的结果(计算 LR 相关性和 LR 标准误值所需的函数),这样我就不必重新发明轮子了?
在AlgLib(MQL4\Scripts\Alglib\UseAlglib.mq4) 中有一个计算历史交易的 LR 相关性和 LR 标准误差的示例。
谢谢!我去看看
我知道了。相关性似乎计算出来了。
我唯一需要考虑的是,这一点在 MT4 Build 670 测试版中不起作用:
测试器中根本没有类型为 6 的订单。
也就是说,在 MT4 测试器中运行并使用下载压缩文件中的 UseAlglib.mq4 代码时,通过调用 deinit() 函数。
余额仍等于 0。然后打印出错误信息"Trading operations with zero balance"(余额为零的交易操作)。
我只需将 MT4 测试器中所需的初始余额值插入代码本身,然后一切都能完美计算。
也许开发人员可以在未来版本的库中考虑到这一点。
我使用以下代码测试了凯利标准(策略):
我不确定 MetatraderStrategy Tester 是否将 0(零)盈利交易计算为盈利交易。有人知道吗?
好吧,我又来了,这个宇宙中的独行侠:-)
我一直在尝试 "直线度自定义标准",试图将计算出的直线斜率纳入等式。现在的情况是,它可以在非常微薄的利润上给你一个非常高的评级。只需加上最终利润
为了将实际斜率添加到等式中,我修改了代码,如下所示。
这不是一个完美的解决方案,但它更接近我想要看到的结果。在使用此代码时,将结果与余额或利润一起使用对我来说效果很好
我知道你已经很久没有发这个帖子了,但万一你还在玩这个,或者其他人也在寻找相同的直线度标准实现方法,我在这里找到了一个可行的公开解决方案:。
我在这里找到了一个有效的公共解决方案https://community.darwinex.com/t/equity-curve-straigthness-optimization-with-metatrader/3976
相关教程有太多信息,例如专门关于 EA 编程的信息,这些信息在其他教程中都有,而且不适用于普通赌客,他们会购买自己的 EA,但编程能力极低。
我发现,默认情况下,MT5 基因算法中唯一有用的标准是 "平衡最大值",然后必须重复几次,并在结果中筛选,直到找到低平局,因为要在多个货币对上使用。
我需要的标准是:最大平衡 <20 Drawdown,最大平衡 <10 Drawdown。