MetaTrader 5策略测试器:缺陷,缺陷,改进建议

 

MQ团队目前正在对MetaTrader 5策略测试器进行深入修订。尽管在过去两年里做了很多工作(感谢MetaQuotes团队),这个测试器还是提出了很多问题。不幸的是,最近的变化更多地集中在测试器的视觉外观上,这样初学者可以更容易地使用它,而它的工作机制仍然引起更有经验的用户的疑问。

我建议把这个主题专门用于对MetaTrader 5测试器的建设性批评,并把它变成一个你可以接触到开发人员的地方。

所有的声明/讨论/批评/反驳都应该有明确的论据和可重复的结果支持。讨论的重点应该是执行和定价机制。在真空中对装饰物、图标和球形马的欲望(我希望所有的核心都能加载,我希望单次运行有多线程,等等)是不受欢迎的,尽管没有禁止。

所以,我们走吧。


MetaTrader 5测试器跳过执行限价订单

1.在一个二进制文件(附在帖子后面)中,给出了作为数组MqlTisk的自定义ticks。

2.自定义数据由一个特殊的脚本处理,并将其加载到工具历史中。脚本也附在信息中。

3) 在产生的图表上启动一个专家顾问,并根据其逻辑进行交易。专家顾问在真正的ticks模式下工作。

4.在00:11:05:085的时刻,以10422.5的价格下了一个限价单。下单时刻的当前价格是10422.0。

5.在00:11:06.179的时候,最后价格发生在10424.0。根据交易所的定价规则,SellLimit订单应该在10422.5的价格执行,但这并没有发生。限价单似乎悬在空中,显示出完全的投降:交易发生时,别人提供的价格比我们的更差!"。

6.但奇迹开始展开。价格反转,从1024.0跌至10419。即限价单卖出水平从上到下穿透。然而,限价单也悬在空中。

不幸的是,我没有发现任何显示发生了什么的日志。有一种感觉是,测试员的日志被简单地关闭了,printf也不起作用。输出到测试器的日志被关闭。

总之,这似乎是另一个以前不存在的问题。

在这方面,我录制了一段视频,其中我可以清楚地看到发生了什么(最有趣的是从30秒左右开始的。在屏幕的顶部,当前时间精确到毫秒)。



视频清楚地显示,柱状图的范围穿透了限价单的水平,但没有执行。

还有其他问题需要测试者回答。但现在我认为有必要处理这个问题。

附加的文件:
 

MetaTrader 5测试器不能正确建立条形图

这是上一篇文章中的自定义符号(同样的数据)。 条形图是以最后价格绘制的,这在符号设置中被指定

左边是测试器中绘制的条形图。在右边,你可以看到初始条形图。

你可以看到,这些图表并不完全重合。左边那个上面有一些狗屎。

S.w.以为它是由Bid建立的,但看看交易列表--事实证明,这种价格甚至不在Bid中,也不在Last或Ask中。我在下面附上文字形式的交易信息。

附加的文件:
deribit_csv.zip  735 kb
 

你使用的是什么构建号

日志中的时间非常奇怪 0000.00.00 00:00:00.000

你有什么操作系统?

带有日志扩展名的文件是否保存在测试器的数据文件夹中?

 

1.你没有给出文件 "deribit1.out.bin"。在所附档案中 "deribit1.out"。

2.你没有给自定义字符 设置

 
我通过投标建造酒吧。通过投标/询问来执行限制。一切工作(确切地说,是2093年,我没有进一步检查)都很正常。
 
Vasiliy Sokolov:

你所忽略的一个好的功能

MqlTick tiks[];

if (FileLoad("deribit1.out.bin", ticks))
{
// ....
 
Slava:

1.你没有给出文件 "deribit1.out.bin"。在所附的档案 "deribit1.out "中。

2.你没有给自定义的角色设置

请原谅我。

附加的文件:
 
fxsaber:

你所忽略的一个好的功能。

值得一提的是。

 
Slava:

你使用的是什么构建号

日志中的时间非常奇怪 0000.00.00 00:00:00.000

你有什么操作系统?

带有日志扩展名的文件是否保存在测试员数据文件夹中?

该建筑是最新的。2136.我总是使用最新的版本。

Windows 7 SP1

日志被保存。策略测试器日志中出现的日志。但在策略测试器的可视化日志中没有出现任何内容。


 
Vasiliy Sokolov:

请原谅我。

谢谢。(笑)。我们会处理好的。

 

主要的建议无疑是将测试自动化。

做到向前走的优化或类似的事情。测试应该是在几个时期和仪器上进行。

如果你不想这样做,那就让那些没有编程工程学位(或学位?)的人用MQL工具来做。

为了做到这一点,我们需要读写(Get__ Set__)测试期的开始和结束,前进期的开始,以及重新启动测试员的新测试期的可能性。

此外,现有的帧处理设施也不能正常工作。关于这一点,这里 已经写得够多了。

另一个错误:在启用前向期和以前的参数的情况下重新启动测试器时,它挂起。我们必须改变实例、时间框架、工具或重新编译专家顾问。

最后一个公开可用的 版本仍然是2085。

原因: