使用自定义指标时的EA加速理论(功能-iCustom)。 - 页 2

 
komposter:

而如果指标是5个缓冲区,那么iCustom的第一次调用将计算所有的缓冲区,随后的调用和对其他缓冲区的请求将只读取准备好的信息(直到出现新的数据进行计算)。

也就是说,如果指标至少被调用过一次,它不仅收到了关于所请求的缓冲区的信息,而且收到了关于指标中包含的所有缓冲区的信息?或者说,这意味着其他缓冲区的计算将在内存中找到,不会因为它而重新计算--数据将从RAM中获取,如果它之前没有被明确调用(程序(EA)没有明确分配内存用于存储指标数据)。 我之前读到,每次调用指标,都会重新计算--难道不是这样?

康帕斯

如果你有一个非常重的指标,请考虑一下你自己的缓存系统,这样在第一次调用时,数据被计算并写入文件,而在下一次调用时,它是只读的。我已经这样做了,它要快得多。

但在95%的情况下,没有必要做这些,测试器的速度已经足够快了,在5的情况下,你也可以连接云。

好运!

从硬盘上读取会更快,还是你在内存中用计算出的指标数据做了一个虚拟驱动器?

好吧,我只是在做梦,现在我只在四个人身上实现定制的想法。

谢谢你祝我好运!

 
komposter:

如果你有一个非常重的指标,可以设计你自己的缓存系统,这样,在第一次运行时,数据被计算并写入文件,而在随后的运行中,它被只读。我已经这样做了,它要快得多。

但在95%的情况下,没有必要做这些,测试器的速度已经足够快了,在5的情况下,你也可以连接云。

好运!

我说的不是一个指标,而是一个专家顾问,但主题很接近。我的黄牛算得挺多的,各种过滤,转换。我在Matlab中缓存了我的模型,首先计算了所有的数学,并将其输入一个.mat文件,然后用这些数据来运行一个策略。现在我迫不及待地想为MQL4 Strategy Tester做同样的事情,因为其优化效果简直是不真实的。
 
-Aleks-:

也就是说,如果该指标至少被程序调用一次,它不仅收到了所请求的缓冲区的信息,而且还收到了指标中包含的所有信息?或者说,这意味着其他缓冲区的计算将在内存中找到,不会因为它而重新计算--数据将从RAM中获取,如果它之前没有被明确调用(程序(Expert Advisor)没有明确分配内存用于存储指标数据)。我以前读到过,每次调用指标时,都会重新计算--它不是这样工作的?

该指标不能只计算一个缓冲区,它在任何调用时都会考虑它里面的所有东西。除非你能用参数限制计算,但这是另一个问题。

每次调用时都要重新计算,但通常只对第0条进行重新计算。如果EA写得很聪明,这些调用不会在每个tick 上发生。

-Aleks-:

从硬盘上读取会不会更快,或者你在内存中创建了一个虚拟磁盘,并计算了指标数据?

我从一个正常的磁盘中读取,但不是每个柱状图上的指标值,而是 "时间;信号 "字符串;这样的数据是更不需要的。

任何指标都不可能有一个普遍的解决方案,你应该依靠全球问题。

-Aleks-:

我只做过五项指标的梦,我只实现了我对四项指标的想法。

唯一的区别是在交易部分和使用时间序列(包括指标)工作。

而云是一个非常强大的东西。

 
VDev:
我不是在谈论指标,而是在谈论专家顾问,但这个问题很接近。我有一个黄牛党,计算量相当大,各种过滤器和转换。我在Matlab中缓存了模型,首先计算了所有的数学,并将其输入一个.mat文件,然后用这些数据运行一个策略。现在我迫不及待地想为MQL4 Strategy Tester做同样的事情,因为其优化效果简直是不真实的。

为一个单独的指标设置一个缓存几乎没有任何意义,我也是从EA中需要的数据开始的。

粗略地说,准备好的信号被记录下来,然后只读取和执行条目和位置支持。

 
komposter:

该指标不能只计算一个缓冲区,它在任何调用时都会计算里面的所有内容。除非计算可以受到参数的限制,但这是另一个话题。

每次调用时都要重新计算,但通常只对第0条进行重新计算。如果EA写得很聪明,那么这些调用就不会在每个tick上发生。

因此,事实证明,如果我们用很多缓冲区来处理一个指标,并从其中一个缓冲区接收所有的信息,那么在内存方面将比对这个指标需要多少次来自其不同缓冲区的信息进行计算更快、更经济?


不过,也许有人可以做个实验,因为这个想法让我很忙!或者说,创新研究只对收费感兴趣?

 
该指标的OnCalculate()只在新价格第一次调用iCustom()时才被调用。随后对iCustom()的调用只接收数据而不启动OnCalculate()。比方说,价格发生变化,下一个iCustom()调用开始onCalculate(),接下来的调用只接收数据,以此类推,直到价格变化,等等。(现在已经通过实验测试)。
 
-Aleks-:

所以最后发现,如果你用许多缓冲区解决一个指标,并从其中一个缓冲区获得所有的信息,会比计算多次这个指标需要从其不同的缓冲区获得信息更快、更节省内存?

1个指标用于5个缓冲区或5个指标用于1个缓冲区是大致相同的。
如果你只需要2个缓冲区的信息,用1个缓冲区调用2个指标将比用5个缓冲区调用一个指标更有利。但并不比一个有2个缓冲区的指标更有利可图。


-Aleks-

不过,也许有人可以做个实验,因为这个想法让我很忙!或者说,创新研究只对收费感兴趣?

康帕斯

这种方法将减少指标的内存消耗(大约是前后缓冲区数量之差的倍数),但会增加处理器的负载(而且 "构建 "和 "分解 "必须不断进行)。

如果你没有遇到内存限制(以目前的体积来说不太可能),它只会变慢。

 

我觉得我被人误解了!:)

但我明白,很可能是我不明白。

假设我们在代码中调用自定义指标--我们需要指定这个指标的缓冲区,然后,按照代码,我们再次调用自定义指标,名称与第一次相同,但缓冲区不同。

问题:该指标将被计算两次还是只计算一次?

 
-Aleks-:

...

问题是该指标将被计算两次还是只计算一次?

一次。
 
Integer:
一次。
因此,一个正确的指标大杂烩会比单独使用指标工作得更快--所以对报价信息的要求会更少?