编译器可以做很多事情,但不是这个:-)
而这种情况是可以优化的。首先,指标本身应该写得聪明(而不是在每个刻度上重新计算所有的条形图),其次,指标应该是超级重的,以某种方式减慢EA...说来话长...
而这里有一篇关于"减少辅助指标的内存消耗 " 的有趣文章。
我有一个多货币专家顾问,接收8个时间段的28个符号的指标读数。
这是28*8=224份指标...我为如何优化这个过程而挣扎。多币种操作消耗了近700MB的RAM...我很容易就解决了这个问题--我只是在 "图表 "标签的终端设置中为 "窗口中的最大条数 "字段设置了一个很小的值...在我的记忆中,这个领域的最小值是5千条......。

- 2011.03.18
- Andrew
- www.mql5.com
Integer:
关于5个缓冲区的结论是不正确的。如果参数相同,将只加载一个指标。
是的,我同意。
将有5次调用CopyBuffer()函数 的不同参数(缓冲区编号)。而指标副本--手柄--将是相同的。
作者给了一个响亮的题目 "加速度理论......",但他对基本的东西一窍不通。
-Aleks,有很多关于这个问题的文章!
是的,我同意。
将有5次对CopyBuffer()函数 的调用,参数(缓冲区编号)各不相同。而且将只有一个指标的副本--手柄。
作者给了一个响亮的题目 "加速度理论......",但他对基本的东西一窍不通。
-Aleks-,有很多关于指标主题的文章!
Denkir ,我说的是EA在优化过程中的工作,图表上的烛台数量是否会影响计算量?我研究了这篇文章,我知道有一些优化指标的变种。然而,在这种情况下,我想相信该指标是完美的,并检查从指标到EA的数据传递方法。我不是一个程序员,我发现很难检查指标代码的优化 - 我最多可以在TOR中规定 - 1条滞后和历史计算的限制。
你在测量什么?而30%对我来说并不算少。
关于5个缓冲区,如果我理解正确的话,那么在指标输入参数相同的情况下,当专家顾问多次调用最后一个指标并从不同的缓冲区获取信息时,只对一个指标进行计算?
如果是这样,那么自定义指标的组合应该能加快专家顾问的工作速度?例如,那么在一个指标中可以实现具有独立设置的不同指标的逻辑,当其中任何一个指标被调用时,所有缓冲区的信息被一次性接收,并在另一个具有相同参数的缓冲区的信息请求的情况下使用?
VDev。
我试图通过iCustom来测量嵌入式指数及其类似物的调用速度。内置的约为20-50%的速度。很可能是因为它们是用C++编写的,而不是用MQL。

- 2010.10.25
- Nikolay Kositsin
- www.mql5.com
是的,我同意。
将有5次对CopyBuffer()函数 的调用,参数(缓冲区编号)各不相同。而且将只有一个指标的副本--手柄。
作者大声地称这个话题为 "加速理论......",他对基本的东西一点都不了解。
-Aleks-,有很多关于指标主题的文章!
而你可以简单地反驳我的假设(最好是在4上),用数字证实我的话?
这个话题是关于我的理论的--标题是可以的。)
-Aleks-, 关于测试器。 你需要问开发商...
但在我看来,讨论中的术语有一个问题。你想要什么,是降低计算速度,还是节省RAM来处理指标?
在我看来,我的方法可以解决这两个问题。我可能是错的。
在优化时,速度是很重要的,但是一旦RAM被堵塞,同样,根据我的观察,每次的处理速度会下降。
有谁能比较一下这种方法的速度,背后是否有什么道理?
这种方法将减少指标的内存消耗(大约是前后缓冲区数量之差的倍数),但会增加处理器的负载("组装 "和 "分解 "都必须不断进行)。
而如果指标有5个缓冲区,那么iCustom的第一次调用将计算所有的缓冲区,随后的调用和其他缓冲区的请求将只读取准备好的信息(直到出现新的数据进行计算)。
如果你有一个非常重的指标,可以想出你自己的缓存系统,这样在第一次调用时,数据被计算并写入文件,而在接下来的调用中,它是只读的。我已经这样做了,它要快得多。
但在95%的情况下,没有必要做这些,测试器的速度已经足够快了,在5的情况下,你也可以连接云。
好运!
我首先要说的是,我不是一个程序员,我可能是错的,但我想听听专业人士对下面建议的想法的看法,基于计算。
在开发专家顾问的几个阶段中,使用自定义指标 是一个热点问题。当程序员相互替换时,这一点尤其重要,然后最好将专家顾问的一些逻辑粘贴在指标中--测试逻辑(检查计算和它们的相关性),然后再研究新的部分想法。因此,我们得到了一个不是很复杂的专家顾问,它实际上是向指标索取信息,并通过比较预期数据和实际数据做出决定。
但是,这种方法有一个显著的缺点--这种专家顾问的速度。事实是,从自定义指标中请求数据的频率越高,计算速度越慢,需要更多的资源(内存)进行优化。
到目前为止,我在MT4中工作,但据我所知,原理是一样的。
而问题不在于iCustom指标本身的计算速度,而在于它与专家顾问的连接。
假设该指标使用了5个图表缓冲区,而EA需要这些缓冲区的信息,那么它需要在代码中使用5个iCustom函数,实际上在图表上放了5个指标而不是一个指标,这需要5倍的资源。也许我错了,编译器分析了这种情况--它为一个指标进行计算,并将所需的缓冲区的数据一次性交给所有函数?在这种情况下,我的进一步猜测是徒劳的。
但是,如果不是这样,为什么不把指标的信息合并到一个包里?
我建议在这个问题上做一个实验,测量专家顾问的性能。
这就需要把一个有1个以上缓冲区的自定义指标,增加一个额外的缓冲区。
该算法是符合逻辑的(没有数学)。
1.将指标中的缓冲区转换为整数,根据每个数字的位数,共有3个缓冲区,原为:1,21101;1,13;5,变成:121101;113;5
2.我们计算在第一个数字后面要放多少个数字--在我们的例子中是4,然后在下一个数字中是1,这些数值就是乘法器的度数。
1,21101*10^4=1211010000
1.13*10^1=113
5*10^0=5(检查0)。
3.将这些数字相加,得到1211011135。
4.将该值写入4.缓冲区
5.我们要求专家顾问中的4个指标缓冲区,并将该值按相反的顺序分解成各个组成部分,得到3个数字,可进一步用于专家顾问的工作。
谁能比较一下这种方法的速度,背后是否有什么道理?