错误、漏洞、问题 - 页 1088

 
MoneyJinn:

重新编译指标后,在处理动态数 组时开始出现 "数组超出范围 "的错误。

这在以前没有发生过。该怎么做?

如果你在文件的开头有类似的线条

#include <File.mqh> , 这些包含文件很可能在你之前的编译中被修改过,由你或其他人所为

 
Olegts:

如果你在文件的开头有类似的线条

#include <File.mqh>,很可能这些包含文件在你上次编译后被修改过,是你自己还是别人。

没有任何包含文件。

 
MoneyJinn:

没有任何插件文件。

那么你应该把指标贴出来,也许有人会在闲暇时看一看)
 

为什么在试图把东西放入动态数组 时,会出现"数组超出范围 " 的错误?它是一个动态阵列。

数组B1[] 设为相应的指标缓冲区

SetIndexBuffer(0,B1,INDICATOR_DATA); ArraySetAsSeries(B1,true);

阵列的大小在这里显然不是由用户控制的。

 
MoneyJinn:
为什么在试图把东西放入动态数组 时,会出现"数组超出范围 " 的错误?这是一个动态阵列。
这并不意味着它自己增加其大小,ArrayResize函数会这样做,然后你可以添加数据,但不能超过新数组的大小
 
MoneyJinn:
为什么在试图把东西放入动态数组 时,会出现"数组超出范围 " 的错误?它是动态的。
(fcplm)
 
TheXpert:
(fcplm)

谁会把他关起来? 他是一座纪念碑!?

 

平台错误。

如果在填充指标缓冲区的 B1数组时,重复调用过程SetIndexBuffer(0,B1,INDICATOR_DATA)。

例如,在初始化指标时,下一次尝试在B1数组中写东西时,会出现"数组超出范围 " 的错误。

当调用一次SetIndexBuffer(0,B1,INDICATOR_DATA)存储过程时,一切工作正常。

以前没有这样的事情。

Усреднение ценовых рядов без дополнительных буферов для промежуточных расчетов
Усреднение ценовых рядов без дополнительных буферов для промежуточных расчетов
  • 2010.10.25
  • Nikolay Kositsin
  • www.mql5.com
Статья о традиционных и не совсем традиционных алгоритмах усреднения, упакованных в максимально простые и достаточно однотипные классы. Они задумывались для универсального использования в практических разработках индикаторов. Надеюсь, что предложенные классы в определенных ситуациях могут оказаться достаточно актуальной альтернативой громоздким, в некотором смысле, вызовам пользовательских и технических индикаторов.
 
MoneyJinn:

平台错误。

如果在填充指标缓冲区的 B1数组时,重复调用过程SetIndexBuffer(0,B1,INDICATOR_DATA)。

例如,在初始化指标时,下一次尝试在B1数组中写东西时,会出现"数组超出范围 " 的错误。

当单次调用存储过程SetIndexBuffer(0,B1,INDICATOR_DATA)时,一切工作正常。

这在以前没有发生过。

你为什么要反复这样做?

绑定一个缓冲区意味着清除 它并为后续计算的动态绑定做准备。如果你第二次调用它,之前的缓冲区将被清除,只有在下一次调用指标重新计算时才会被填充。

 
Renat:

你为什么要反复这样做?

缓冲区的结合意味着它的清空 和为下一次计算的动态结合做准备。如果你第二次调用它,之前的缓冲区将被清除,只有在下一次调用指标重新计算时才会被填充。

这是指标的标准完全初始化,它发生在指标首次启动时,通过Oninit()完成。

有时,当你更新历史等时,也需要这样做。

没有人想到,通过Oninit()反复初始化指标会导致数组停止响应。