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

 
我喜欢这本书,仅仅是因为它没有一篇关于微积分 的文章,而且参考资料中也几乎没有这方面的内容。
 
fxsaber:

这是一篇很好的文章!备注

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

感谢作者!

为什么不使用 FrameNext?

您自己的测试仪在没有额外管道的情况下会比标准测试仪更快。加上研究。再加上在云中工作的可能性。事实证明,如果我们想非常有效地使用云计算,选择并不多。当然,你必须为一切付费。而且也不可能将这样的东西用于真正的交易。但是,写一些简单的东西并快速进行测试是最好不过的了。看看均线策略的测试变体--它写得非常快,但即使没有佣金和滑点,结果也不好。这种测试需要测试人员。

 

出于某种原因,大家都只关注文章中的测试仪,却还没有人谈到分析仪。这也没什么。我认为分析器的重要性不亚于测试器,甚至可能比测试器本身更有趣。例如,该分析器可以集成到常规策略测试仪 的测试中,并获得我们想要的报告格式。

我还想说的是,由于可以存储每次运行的完整信息,因此只需优化一次,然后就可以以任何方式、在任何地方研究结果。而内部测试器则无法做到这一点;它生成的运行信息非常笼统,不可能用它重新创建每次运行的图片。

Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
  • www.metatrader5.com
Тестер стратегий позволяет тестировать и оптимизировать торговые стратегии (советники) перед началом использования их в реальной торговле. При тестировании советника происходит его однократная прогонка с начальными параметрами на исторических данных. При оптимизации торговая стратегия прогоняется несколько раз с различным набором параметров...
 
Vasiliy Sokolov:

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


我们无法使用云,但即使在运行智能交易系统的情况下,我们也无法使用云进行自动优化。您可以运行这样的 python 脚本

我的意思是,如果我没理解错的话,重点是智能交易系统应该能够自我优化......而不仅仅是快速优化。
CreateProcess function (Windows)
  • msdn.microsoft.com
Creates a new process and its primary thread. The new process runs in the security context of the calling process. If the calling process is impersonating another user, the new process uses the token for the calling process, not the impersonation token. To run the new process in the security context of the user represented by the impersonation...
 
Maxim Dmitrievsky:

我们不能使用云计算,但即使在运行智能交易系统的情况下,我们也不能使用云计算进行自动优化。运行这样 一个 Python 脚本

如果我没理解错的话,重点是智能交易系统应该能够自我优化......而不仅仅是快速优化。

这是一个稍有不同的话题。

 
Vasiliy Sokolov:

这是一个不同的话题。


好吧,如果你从意识形态的角度想想......如果我们无论如何都要手工优化,为什么我们需要超快的优化 呢?

 
Vasiliy Sokolov:

出于某种原因,大家都只关注文章中的测试仪,却还没有人谈到分析仪。这也没什么。我认为分析器的重要性不亚于测试器,甚至可能比测试器本身更有趣。例如,该分析器可以集成到常规策略测试仪 的测试中,并获得我们想要的报告格式。

我还想说的是,由于可以存储每次运行的完整信息,因此只需优化一次,然后就可以随时随地研究结果。而内部测试仪就不能这么说了,它所形成的运行信息非常笼统,不可能再现每次运行的全貌。

我没有这方面的发言权,因为我曾经在 KB 中实施过这样的功能。

 
Vasiliy Sokolov:

自己的测试仪不需要额外的管道,速度会比标准测试仪快。加上研究。再加上在云中工作的可能性。事实证明,如果我们想非常有效地使用云计算,选择其实并不多。当然,你必须为一切付费。而且也不可能将这样的东西用于真正的交易。但是,写一些简单的东西并快速进行测试是最好不过的了。看看均线策略的测试变体--它写得非常快,但即使没有佣金和滑点,结果也不好。这就是测试人员的作用。

你不明白我的意思。您是在建议专门为此目的在您的交易 API 上编写一个用于测试的 TS。这等同于使用其他测试仪解决方案。

您忽略了自定义符号以及数字速度比较这一点。

 
Vasiliy Sokolov:

据我所知,数据不会丢失,因为统计数据是由程序的另一个实例收集的。

数据丢失的原因是程序的另一个实例没有执行 OnTesterDeinit。

 
Vasiliy Sokolov:

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

模板。我在知识库中发布过类似的内容。

OnTesterPass 会传递给最后一次运行,从而加载 FrameNext。这种情况下不需要 While。

OnTesterPass 只是对向 mqd 文件写入下一帧事件的反应。

FrameNext 是指从当前位置 读取 mqd 文件中的帧,并将此位置移动到下一帧。


因此,如果至少在一次 OnTesterPass 中没有调用 FrameNext,那么随后的所有 OnTesterPass+FrameNext 都将接收上一帧,而不是到达的那一帧。

由于本文是一篇教程,因此在代码中以相同注释的形式实现这一细微差别也无妨。