错误、漏洞、问题 - 页 1998

 
Stanislav Korotky:

这就是我不理解的论点(当它被MQ提出来的时候),我现在也不理解。初始化是不会有任何进展的。现在,它被委托给应用程序的程序员,他无论如何都要做,但正如实践所显示的,有时会出现错误。如果是由内核完成,性能不会受到影响,也不会出现错误。

例如,让我们拿一个数组的指标缓冲区:初始化指标时,缓冲区的长度为零。有什么可以用零来初始化?当添加另一个索引时,它是否被强制归零,然后填入一些数值?这个归零或填充EMPTY_VALUE 是为了什么?而如果有必要指定PLOT_EMPTY_VALUE而不是0或 EMPTY_VALUE,或者强制指定一个,但我们需要另一个......无论你如何切割它,你最终都是在浪费时间......。

还有一个自定义阵列...数组被声明为一些不同于零的数据, EMPTY_VALUE。那么,为什么要强行用东西来初始化呢?

所以事实证明,在大多数情况下,它影响了性能。

 
Alexey Viktorov:

但是,一个自定义的阵列...数组被声明为零和EMPTY_VALUE以外的一些数据。那么,用东西强行初始化它的目的是什么?

要少一些 "测试者的结果不匹配"。

 
fxsaber:

为了使它不那么 "测试者结果不匹配"。

谁需要它?

写一篇文章,在每一段中都说你不应该随便向任何人订购EA。你必须正确编写你的EA。

 
Alexey Viktorov:

谁需要它?

我和,我很确定,开发商。

 
fxsaber:

对我来说,我很肯定,对开发者来说也是如此。

我非常怀疑这种小事会让你陷入困境。要么就是有其他原因。

 
Alexey Viktorov:

我很怀疑这样的小事能难住你。要么是其他的原因。

即使我写得很完美(没有犯错--事实并非如此),拿着别人的库(有时没有源代码--在市场上)并使用它是很正常的,希望它写得称职。而且没有任何保险,在那之后你会在测试器中遇到不同的结果。而找到真正的原因将非常困难。而修复它有时是不可能的。

目标是,从运行到运行,结果是可重复的--相同的,即使有错误。

 
fxsaber:

理想的解决方案可能是在默认情况下对所有程序进行强制初始化,并有一个编译开关来禁用它(对于那些有信心并想加快几个百分点的人)。

 

初始化确实需要大量的资源。我抛出了一段强制初始化的代码,在优化中得到了几乎2倍的速度)

而我偶然发现了一件有趣的事情。缩水120%,同时结果是在上和加,这怎么可能呢?

当我测试该策略时,我得到了109%的缩减,而且没有追加保证金,而余额一直在增长。
 
Anton Ohmat:

初始化确实需要大量的资源。我抛出了一段强制初始化的代码--它的优化速度几乎提高了2倍)

你写的东西不对。

 
Andrey Khatimlianskii:

完全初始化并不总是必要的。例如,对于一个在循环中为每个条形图填充缓冲值的指标(并且不管指标缓冲区 是否被初始化,都要这样做)。

在这种情况下,不强制归零会更经济。

而为什么要编造这种不切实际的情况,实际上是MQL程序员的错误?很明显,完全初始化只做一次,或者在检测到数据抽水时进行。在这种情况下,由内核来完成会更有效率。