初学者的问题 MQL5 MT5 MetaTrader 5 - 页 115

 
sss20192:

该指标在数据窗口 中有不同的数据。我把EA附在H1图表上,它从M5、M15和H1时间段复制数据。


int  CopyBuffer(
   int       indicator_handle,     // handle индикатора
   int       buffer_num,           // номер буфера индикатора
   int       start_pos,            // откуда начнем 
   int       count,                // сколько копируем
   double    buffer[]              // массив, куда будут скопированы данные
   );
缓冲区(你有零)和我们复制的数组都是一样的,你从1个元素开始,复制1个元素,也许数组的方向也很重要。

 
zfs:
缓冲区(你有零)和你复制的数组都是一样的,你从1个元素开始,复制1个元素,也许数组的方向也很重要。

嗯,是的,第一个指标缓冲区,在三个不同的塔姆框架上。而到目前为止,我正在使用相同的数组来记录数据。

我试着将ArraySetAsSeries 设置为true和false。同样,有时日志中会出现像-4.53e-32这样的奇怪数据。

 

先生们,你们能告诉我如何实现这一点吗?

有一个数组,一个值被写入其中,如果它包含一个类似的值,就会有一声巨响。

 
sss20192 有时在日志中出现像-4.53e-32这样的奇怪数据。
从好的方面看,我们应该插入对创建句柄 的成功和CopyBuffer()函数 的成功的检查。否则我们甚至还不知道这个垃圾值是CopyBuffer()函数 成功执行的结果,还是该函数没有正常工作。
 
Top2n: 有一个数组,一个值被写入其中,如果它包含一个类似的值,就会出现崩溃。
有必要列举数组元素,并检查它们是否与所需的值对应。如果没有找到匹配的,则将该值写入数组中。
 
Yedelkin:
你应该尝试搜索数组元素,看它们是否与所需的值相匹配。如果没有找到匹配,则将该值写入数组中。
那么如何比较一个数组中的两个索引呢?
 
Top2n:
那么如何比较一个数组中的两个索引呢?

请仔细阅读这篇文章?>>MQL5编程基础知识--数

它有所有处理数组的案例的细节。对你来说,这绝对应该足够了。))

 
tol64:

请仔细阅读这篇文章?>>MQL5编程基础知识--数

它拥有所有处理数组的案例的所有细节。对你来说,这绝对应该足够了。))

谢谢大家的帮助!)我不会和你说再见)))。
 
Yedelkin:
友好地,我们应该在代码中插入对创建句柄 的成功和CopyBuffer()函数 的成功的检查。否则我们甚至不知道这个垃圾值是CopyBuffer()函数 成功执行的结果还是该函数没有正常工作。

已检查。手柄正常创建,索引为10、11、12。但是CopyBuffer函数 产生了错误ERR_INDICATOR_DATA_NOT_FOUND。为什么会出现这种错误,所选货币对在市场观察窗口中,这些货币对的图表是开放的。

此外,我创建了一个变量,它显示了CopyBuffer的执行结果。

int aaa = CopyBuffer...,它显示值1,就像在函数中定义的那样,复制了一个值。


当复制MA缓冲区时,显示了同样的错误,但数值被正确地写入了数组。

请给我们看一个正确的缓冲区复制的例子

 
sss20192: 已检查。手柄是正常创建的,它们的索引是10、11和12。但是CopyBuffer函数 产生了错误ERR_INDICATOR_DATA_NOT_FOUND。为什么会出现这样的错误,所选货币对在市场观察窗口中,这些货币对的图表是开放的。

此外,我创建了一个变量,显示CopyBuffer的执行结果。

int aaa = CopyBuffer...,它显示值1,就像在函数中定义的那样,复制了一个值。

当复制MA缓冲区时,显示了同样的错误,但是数值被正确地写入了数组中。

请给我看一个如何正确复制缓冲区的例子

是的,缓冲区复制的例子在函数CopyBuffer() 的描述中是正确的。请注意线条

//--- check if all data calculated
    if(BarsCalculated(ma_handle)<rates_total) 

//--- try to copy
    if(CopyBuffer(ma_handle,0,0,to_copy,MABuffer)<=0) return(0);