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

 
JRandomTrader #:

自古以来,这一直被用于数据传输。

很方便。你不可能不同意这一点。但正如我之前所说,你应该始终考虑你能回滚多少数据。

 
Vitaly Muzichenko #:

让我们举个例子,这将是一个主题

一个代码可以升级

这在这段代码中是行不通的,因为指标缓冲区独立于我们而存在,我们没有在其中组织一个环形缓冲区--没有办法解释这个MT。

 
Mihail Matkovskij #:

使用ArrayCopy,你只能从另一个阵列转移数据。但你不能转移它们。

谁告诉你这些胡话的?

仔细阅读它是如何做到的。

关于交易、自动交易系统和策略测试的论坛

新手对MQL4和MQL5的任何问题,对算法和代码的任何帮助和讨论

Alexey Viktorov, 2022.02.13 18:21

在这段代码中,你需要指定一个数组

int  ArrayCopy(
   void&        dst_array[],         // куда копируем
   const void&  src_array[],         // откуда копируем
   int          dst_start=0,         // с какого индекса пишем в приемник
   int          src_start=0,         // с какого индекса копируем из источника
   int          count=WHOLE_ARRAY    // сколько элементов
   );

从哪个索引写入,哪个索引复制,取决于阵列的偏移方向。所以,如果索引0应该总是包含新鲜的、新的数据,就从0开始复制,从1开始写入。因此,索引0和1中的值将是相同的,之后,一个新的值将被复制到0中。

而且我非常怀疑ArrayCopy()里面的循环和用户的循环是一样的。因此,有一些具有一定大小的数组,它在每一个刻度上移位1,然后复制到显示为一行的指标缓冲区...


 
JRandomTrader #:

这在这段代码中是行不通的,因为指标缓冲区独立于我们而存在,我们没有在其中组织一个环形缓冲区--没有办法解释这个MT。

我明白了。

好吧,它起作用了--让它起作用到目前为止,还没有结果,我们必须等待我们来自平度的 "朋友",直到市场开放,而这并不快。

我将看看我可以套利什么。

 
JRandomTrader #:

甚至是

而且没有人注意到这个关节!

static int head=0;
for(i=head,count=0;count<ArraySize(A);count++)
  {
   -if(++i>=ArraySize(A))i=0;
   DoSomething(A[i]);
   +if(++i>=ArraySize(A))i=0;
  }
 
JRandomTrader #:

而且没有人注意到这个关节!

我还是不明白。

 
Vitaly Muzichenko #:

还是没有看到。

i应该在循环结束后被递增,使用后。

但你也可以在循环结束时和下一个循环开始时检查数组是否超限。

 
Alexey Viktorov #:

谁告诉你这样的胡言乱语?

仔细阅读它是如何做到的。


我不知道这种功能是如此普遍。但即使是这样,又有什么区别呢?ArrayCopy会比普通循环更快转移数据吗?

 
Vitaly Muzichenko #:

该代码现在正在工作,但由于周期的原因,对速度有疑问。

它将是什么?

我想测试一些套装的套利可能性,指标将画出数值的差异,在计时器上每100ms工作一次。代码执行延迟对于这种情况至关重要。

那我就不知道了。试试ArrayCopy。该函数似乎能够转移数据。但它很难做到比通常的循环更快。嗯,谁知道呢...你一定要试试。

 
Mihail Matkovskij #:

那我就不知道了。试试ArrayCopy。该函数似乎能够转移数据。但它不可能比正常循环做得更快。嗯,谁知道呢...你一定要试试。

我不知道该从何说起