新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1898

 
Vitaly Muzichenko #:

为什么要先记录数据,然后再转移?

  Buffer1[0]=b;
  Buffer2[0]=a;
  for(int j=H; j>0; j--) {
    Buffer1[j]=Buffer1[j-1];
    Buffer2[j]=Buffer2[j-1];
  }

这与实际的勾股图并不一致!

这就是正确的方法。

  for(int j=H; j>0; j--) {
    Buffer1[j]=Buffer1[j-1];
    Buffer2[j]=Buffer2[j-1];
  }
  Buffer1[0]=b;
  Buffer2[0]=a;
 
Vitaly Muzichenko #:

同样,ArrayCopy() 里面有一个循环,可能不止一个。因此,代码很难因为这种替换而变得更简单、更快速。

我在上面已经说过很多次了:你不能没有一个循环!你不能没有一个循环。

 
Mihail Matkovskij #:

为什么要先记录数据,然后再转移?

这与实际的勾股图并不一致!

这就是正确的方法。

当然是kasher,但也是一样的)。

是的,而且一个短周期内的1000次迭代与几个赋值比较是很容易的。所以它不应该是令人生畏的。

 
EVGENII SHELIPOV #:

如果没有新的极值,并且在三个小节之后,那些0、1、2的小节就形成了一个分形。

什么都没有改变。

或者又出了什么问题

在D1上运行分形指标,看看分形是否存在。
 
Valeriy Yastremskiy #:

当然是kasher,但也是一样的)。

不一样的。如果我们先写一个刻度线,然后移位数组,它就会和我们移位的其他刻度线一起向左移位1栏。但是,如果我们先将数组移位,然后在零索引处写入刻度线的值,我们首先为刻度线腾出空间,然后将其写入那里。而且,结果是,它没有转移到任何地方。

 
Mihail Matkovskij #:

我以前说过很多次:你不能没有一个周期!你不能没有一个周期。

我想我是对的。


试图调换填充物,我得到一个错误


 
Vitaly Muzichenko #:

试图将填充物调换进来,我得到一个错误


很奇怪,为什么会这样......?看起来一切都应该正常,只是刻度线会在它们的位置上,而不是向左移动。

P.S. 额外的阵列仍然应该被添加(正如我在开始时所说)。否则,当一个新的条形图出现时,所有的刻度线将自动向左移动,因为它们是指标缓冲区或者我们可以跟踪新条形图出现的时刻,并将缓冲区转移,但已经转移到右边。
 
如果你不移动数组,而是把它作为一个循环缓冲区,记住第一个元素的当前位置,会怎么样?
 
Mihail Matkovskij #:

不一样的。如果我们先写一个刻度线,然后移位数组,它就会和我们移位的其他刻度线一起向左移位1栏。但是,如果我们先将数组移位,然后在零索引处写入刻度线的值,我们首先为刻度线腾出空间,然后将其写入那里。而且,结果是,它没有转移到任何地方。

是的,在我看来,我们应该从第一个开始,而不是从零开始。)说得好。

SZY,虽然是的。首先你要移位,然后赋值为空,无论哪种方式。

SZZY 通过在移位前覆盖零的值,我们失去了零索引的值。

 
JRandomTrader 缓冲区,记住第一个元素的当前位置,会怎么样?

什么是环形缓冲液,单位是µl