文章 "MetaTrader 5 中的自定义前瞻优化"

 

新文章 MetaTrader 5 中的自定义前瞻优化已发布:

本文介绍使用 MQL 中实现的内置测试器和辅助函数库来准确模拟前瞻优化的方法。

现在, 我们只需要适应这种连续前瞻优化机制。为了实现这一点, 请确保仅在每个窗口 W 中执行交易结果优化, 同时忽略所有后续测试周期 S。在测试器设置中选择 自定义优化条件, 并在函数库中基于当前窗口 W 内的交易计算, 然后使用 OnTester 事件处理程序从测试器中返回它。此外, 函数应在每个后续测试区间 S 里计算并保存交易结果。.优化完成后, 随着步进 i 的移动, 我们会得到每个窗口 W 的多组参数。它们当中最好的一组将被定义。验算索引号可令我们在下一个测试段 S 立即获得交易结果。通过将它们结合在一起, 我们能获得 D 内多个周期前瞻测试的完整报告。

形成前瞻测试

图例. 1. 形成前瞻测试

作者:Stanislav Korotky

 
前向步行是一种自动优化, 这是否正确?相应地,聚类分析也是自动优化?
 
fxsaber:
前向步行是一种自动优化,这种说法对吗?相应地,聚类分析也是一种自动优化?

不完全是。自动优化是 EA 中内置的一种算法,它可以即时调整 EA 参数(我的博客中有英文版,分为几个部分--开头 部分)。Walk-forward是在历史记录中模拟这一过程,而不是在线,测试仪会进行优化,但EA不能自己优化--如果可以,就不需要WFO了--你只需在胡萝卜测试仪中运行EA,就能得到完整的向前报告。此外,聚类分析的结果不会自动应用于下一步的前向或简单优化。这可能是某些程序的问题。

MQL's OOP notes: On The Fly Self-Optimization of Expert Advisers: part 1
MQL's OOP notes: On The Fly Self-Optimization of Expert Advisers: part 1
  • www.mql5.com
Are you ready for a very very long story? It will be probably most complicated and prolonged publication in the series of MQL OOP so far, but it's surely worth reading, because its main theme is automatic self-optimization of expert advisers on the fly. This is one of the most frequently asked questions of MetaTrader users. And the answer so...
 

如果在测试仪中进行自动优化,也可以在线实现。总的来说,谢谢您,我明白了。

这种情况可以在没有来源的 Expert Advisors 中实现。

 
fxsaber:

如果在测试仪中进行自动优化,也可以在线实现。总之,谢谢,我明白了。

这种情况可以在没有来源的智能交易系统中实现。

MQL5 仍然没有用于测试器管理的 API,因此只有在 "拐杖 "版本中才能通过测试器实现在线自动优化

 
Stanislav Korotky:

MQL5 仍然没有用于测试仪管理的 API,因此只有在 "拐杖 "版本中才能通过测试仪实现在线自动优化。

目前,我看不出有任何限制。

 

您好。请问 MT5 是否可以使用以下算法实现类似方法?

1. 在一个分段(例如一个月)上进行优化,然后在下一个分段(例如也是一个月)上根据最佳利润/最高交易次数或其他用户定义的参数进行测试。

2.将结果记录在文件中,并在一定时间内(比如同样是一个月)进行转移。例如 - 让我们探索 2018 年。

1 个月--优化,2 个月测试最佳利润设置--记录结果

2个月--优化,3个月测试收益最佳的设置--记录结果

......

11 个月 - 优化 12 个月测试利润更好的设置 - 记录结果?

 
Luchezar Shalomaev:

您好。请问是否可以通过 MT5 按照以下算法实现这种方法:

1.在一个分段(例如一个月)上进行优化,然后在下一个分段(例如也是一个月)上根据最佳利润/最大交易次数或用户定义的其他参数进行测试。

2.将结果记录在文件中,并在一定时间内(同样是一个月)进行转移。例如 - 让我们研究 2018 年。

1 个月--优化,2 个月测试收益最佳的设置--记录结果

2个月--优化,3个月测试收益最佳的设置--记录结果

......

11 个月 - 优化 12 个月的最佳利润设置测试 - 记录结果?

这就是这篇文章的内容。目前无需编辑原始 EA 即可实现。

它是通过测试器的自动控制手段完成的。我还没有时间发布完成的解决方案。

 
fxsaber:

这就是这篇文章的内容。目前无需编辑原始 EA 即可实现。

它是通过自动控制测试器的方式实现的。我还没有时间发布完成的解决方案。

谢谢,如果我把我的 EA 放进去,它还能工作吗?

#include <WalkForwardOptimizer.mqh>

...

int OnInit(void)
{
  // 您的工作代码在这里
  ...

  // 可选,默认为 wfo_built_in_loose
  wfo_setEstimationMethod(wfo_estimation, wfo_formula);

  // 可选,默认为 DBL_MAX
  wfo_setPFmax(100);

  // 可选,默认为 false
  // wfo_setCloseTradesOnSeparationLine(true);
  
  // 必须使用,所有参数均来自头文件
  int r = wfo_OnInit(wfo_windowSize, wfo_stepSize, wfo_stepOffset, wfo_customWindowSizeDays, wfo_customStepSizePercent);...............
 
Luchezar Shalomaev:

谢谢,如果我把我的 EA 放进去,它还能工作吗?

这是为文章作者设计的。但它仍然是为程序员设计的。

 
Luchezar Shalomaev:

谢谢,如果我把我的 EA 放进去,它还能工作吗?

给出的代码不完整--您需要使用更多的处理程序--这在示例中都有。但您需要的是程序库本身(而不仅仅是头文件)。如果您已经购买了程序库,请私信我