Тестер стратегий позволяет тестировать и оптимизировать торговые стратегии (советники) перед началом использования их в реальной торговле. При тестировании советника происходит его однократная прогонка с начальными параметрами на исторических данных. При оптимизации торговая стратегия прогоняется несколько раз с различным набором параметров...
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...
这是一篇很好的文章!备注
感谢作者!
为什么不使用 FrameNext?
您自己的测试仪在没有额外管道的情况下会比标准测试仪更快。加上研究。再加上在云中工作的可能性。事实证明,如果我们想非常有效地使用云计算,选择并不多。当然,你必须为一切付费。而且也不可能将这样的东西用于真正的交易。但是,写一些简单的东西并快速进行测试是最好不过的了。看看均线策略的测试变体--它写得非常快,但即使没有佣金和滑点,结果也不好。这种测试需要测试人员。
出于某种原因,大家都只关注文章中的测试仪,却还没有人谈到分析仪。这也没什么。我认为分析器的重要性不亚于测试器,甚至可能比测试器本身更有趣。例如,该分析器可以集成到常规策略测试仪 的测试中,并获得我们想要的报告格式。
我还想说的是,由于可以存储每次运行的完整信息,因此只需优化一次,然后就可以以任何方式、在任何地方研究结果。而内部测试器则无法做到这一点;它生成的运行信息非常笼统,不可能用它重新创建每次运行的图片。
那么,您将如何在 Python 上使用 MetaTrader 云呢?您想如何在 MT 上运行 Python 脚本?
我们无法使用云,但即使在运行智能交易系统的情况下,我们也无法使用云进行自动优化。您可以运行这样的 python 脚本。
我的意思是,如果我没理解错的话,重点是智能交易系统应该能够自我优化......而不仅仅是快速优化。我们不能使用云计算,但即使在运行智能交易系统的情况下,我们也不能使用云计算进行自动优化。运行这样 一个 Python 脚本。
如果我没理解错的话,重点是智能交易系统应该能够自我优化......而不仅仅是快速优化。这是一个稍有不同的话题。
这是一个不同的话题。
好吧,如果你从意识形态的角度想想......如果我们无论如何都要手工优化,为什么我们需要超快的优化 呢?
出于某种原因,大家都只关注文章中的测试仪,却还没有人谈到分析仪。这也没什么。我认为分析器的重要性不亚于测试器,甚至可能比测试器本身更有趣。例如,该分析器可以集成到常规策略测试仪 的测试中,并获得我们想要的报告格式。
我还想说的是,由于可以存储每次运行的完整信息,因此只需优化一次,然后就可以随时随地研究结果。而内部测试仪就不能这么说了,它所形成的运行信息非常笼统,不可能再现每次运行的全貌。
我没有这方面的发言权,因为我曾经在 KB 中实施过这样的功能。
自己的测试仪不需要额外的管道,速度会比标准测试仪快。加上研究。再加上在云中工作的可能性。事实证明,如果我们想非常有效地使用云计算,选择其实并不多。当然,你必须为一切付费。而且也不可能将这样的东西用于真正的交易。但是,写一些简单的东西并快速进行测试是最好不过的了。看看均线策略的测试变体--它写得非常快,但即使没有佣金和滑点,结果也不好。这就是测试人员的作用。
你不明白我的意思。您是在建议专门为此目的在您的交易 API 上编写一个用于测试的 TS。这等同于使用其他测试仪解决方案。
您忽略了自定义符号以及数字速度比较这一点。
据我所知,数据不会丢失,因为统计数据是由程序的另一个实例收集的。
数据丢失的原因是程序的另一个实例没有执行 OnTesterDeinit。
我不明白。什么是普遍观点?
模板。我在知识库中发布过类似的内容。
OnTesterPass 只是对向 mqd 文件写入下一帧事件的反应。
FrameNext 是指从当前位置 读取 mqd 文件中的帧,并将此位置移动到下一帧。
因此,如果至少在一次 OnTesterPass 中没有调用 FrameNext,那么随后的所有 OnTesterPass+FrameNext 都将接收上一帧,而不是到达的那一帧。
由于本文是一篇教程,因此在代码中以相同注释的形式实现这一细微差别也无妨。