文章 "基于快速数学计算的自定义策略测试器"

 

新文章 基于快速数学计算的自定义策略测试器已发布:

本文将介绍创建自定义策略测试器和自定义优化通关分析器的方法。阅读之后, 您将了解数学计算模式, 和所谓分帧机制如何工作, 如何准备和加载用于计算的自定义数据, 以及如何使用有效的算法将它们压缩。对于那些打算在智能系统中存储自定义信息感兴趣的人来说, 这篇文章会很有趣。

它的代码只包含输入参数 x 和 OnTester 函数, 它根据传递的参数计算正弦值。在此例中, x。现在尝试优化此函数。为此, 请在策略测试器中选择 "慢速完整算法" 优化模式, 和之前的模拟模式: "数学计算"。

在优化参数中设置 x 的变化范围: 开始 — 0.01, 步长 — 0.01, 终止 — 10。一切准备就绪后, 运行策略测试器。它几乎会立即完成其工作。之后, 打开优化图形并在关联菜单中选择 "1D 图"。这将在图形表达中显示正弦函数:

图例 3. 正弦函数的图形表达

作者:Vasiliy Sokolov

 

阅读完 ResourceCreator.mqh 的源代码。产生了一些问题

  1. 为什么他们决定不使用标准的 FileLoad 和 FileSave?
  2. 开发人员说,只有在强制压缩后,tester_file 指令才会将相应文件传给代理。那么,在 EX5 中加入引号的变体(我认为这是您的决定--我还没有进一步阅读)是否合理,或者说它是否是tester_folder 的 替代方案?您对这种情况进行过速度研究吗?
  3. 我的理解是否正确,即在每次运行时都要解压缩内部资源?
 
在此实现中,位置创建时刻是最有趣的。它的字段受到保护,不会被外部修改,但静态 CreateOnBarOpen 方法会返回一个参数设置正确的类对象。除非调用该方法,否则不可能创建该类对象。这就是防止无意更改数据的方法。

他们一定是忘了把构造函数从 public 中移除。我不明白他们为什么不使用常规的构造函数?

 
每次运行都可以作为一个单独的文件存储在一个压缩包中。

这种解决方案有一个弱点,即终端异常退出。它会导致优化中断的数据丢失。而且,正如你已经注意到的,mqd 文件无法再次读取。

此外,该解决方案不允许您在移动中使用分析器。

 

这是一篇很好的文章!注意事项

  • 实际上,建议使用专有的交易 API。这几乎否定了开发。当您的测试器的交易 API 与标准 API 一致时,在 MT5 中使用自己的测试器才有意义。否则,您可以使用竞争对手的现成测试工具或具有相同优势的相同 R。
  • 对于自定义符号机制,还不太清楚需要这样的测试器做什么。
  • 如果能以通用的形式进行字节操作就更好了。
  • 没有对您的测试仪和标准测试仪的速度进行比较。
  • 将您的测试仪用于此目的也是合理的。

交易、自动交易系统和交易策略测试论坛。

MetaTrader 5 的技术奇点

fxsaber, 2017.12.14 14:11 pm.

对于自定义符号,有一个通过 CustomTicksAdd 抛出刻度线的选项。这是一个非常方便的东西!以此类推,我希望看到 TesterTicksAdd 以及 TesterCreate、TesterDestroy。这样你就可以在测试器中添加自己的 Ticks,并读取测试器当前状态的交易环境。

这将是算法交易中的一个突破,比自定义 feed 更好,因为编写 TS 的方案将完全改变。所有以前的 TS 实现都将立即成为算法交易逻辑的旧标准。

感谢作者!


为什么使用 FrameNext 而不使用 while?

 

很酷,但在我看来过于复杂......实际上,你可以在 python 中找到一些现成的测试器/优化器,必要时调用它,包括在 gpu 上。应该有很多 Python 测试程序。

顺便说一句,没有一篇文章介绍如何在 mt5 中使用 python 脚本,而这可能会很有成效。

 
fxsaber:
  • 字节操作希望以通用的形式出现。

我不明白。什么是普遍观点?

fxsaber

ZY 为什么在没有 while 的情况下使用 FrameNext?

最后一次运行会传递给 OnTesterPass,后者会加载FrameNext。在这种情况下不需要 while。
 
fxsaber:

该解决方案有一个弱点,就是会异常退出终端。它会导致优化中断的数据丢失。而且,正如您已经注意到的,mqd 文件无法再次读取。

此外,这种解决方案不允许您在移动中使用分析仪。

据我所知,数据不会丢失,因为统计数据是由程序的另一个实例收集的。总的来说,我认为将所有运行结果存储为一个存档是整个项目 中最成功的解决方案。

 
Maxim Dmitrievsky:

很酷,但在我看来过于复杂......实际上,你可以在 python 中找到一些现成的测试器/优化器,必要时调用它,包括在 gpu 上。应该有很多 Python 测试程序。

顺便说一下,目前还没有一篇关于在 mt5 中使用 python 脚本的文章,而这可能会很有成效。

那么,您将如何在 Python 中使用 MetaTrader 云呢?甚至如何在 MT 上运行 python 脚本?

 
fxsaber:

他们可能忘了将构造函数从 public 中移除。我不明白他们为什么不使用普通的构造函数?

实验。

 
fxsaber:

阅读完 ResourceCreator.mqh 的源代码。出现了一些问题

  1. 为什么他们决定不使用标准的 FileLoad 和 FileSave?
  2. 开发人员说,只有在强制压缩后,tester_file 指令才会将相应文件传给代理。那么,在 EX5 中加入引号的变体(我想这是您的决定--我还没有进一步阅读)是否合理,或者说它是否是tester_folder 的 替代方案?您对这种情况进行过速度研究吗?
  3. 我的理解是否正确,在每次传递时,你都会解压缩内部资源?
这些都是值得探讨的选项。也许在下一个版本中,我会改变很多东西。现在我让它至少能以某种方式驱动。