Статья о традиционных и не совсем традиционных алгоритмах усреднения, упакованных в максимально простые и достаточно однотипные классы. Они задумывались для универсального использования в практических разработках индикаторов. Надеюсь, что предложенные классы в определенных ситуациях могут оказаться достаточно актуальной альтернативой громоздким, в некотором смысле, вызовам пользовательских и технических индикаторов.
重新编译指标后,在处理动态数 组时开始出现 "数组超出范围 "的错误。
这在以前没有发生过。该怎么做?
如果你在文件的开头有类似的线条
#include <File.mqh> , 这些包含文件很可能在你之前的编译中被修改过,由你或其他人所为
如果你在文件的开头有类似的线条
#include <File.mqh>,很可能这些包含文件在你上次编译后被修改过,是你自己还是别人。
没有任何包含文件。
没有任何插件文件。
为什么在试图把东西放入动态数组 时,会出现"数组超出范围 " 的错误?它是一个动态阵列。
数组B1[] 设为相应的指标缓冲区
SetIndexBuffer(0,B1,INDICATOR_DATA); ArraySetAsSeries(B1,true);
阵列的大小在这里显然不是由用户控制的。
为什么在试图把东西放入动态数组 时,会出现"数组超出范围 " 的错误?这是一个动态阵列。
为什么在试图把东西放入动态数组 时,会出现"数组超出范围 " 的错误?它是动态的。
(fcplm)
谁会把他关起来? 他是一座纪念碑!?
平台错误。
如果在填充指标缓冲区的 B1数组时,重复调用过程SetIndexBuffer(0,B1,INDICATOR_DATA)。
例如,在初始化指标时,下一次尝试在B1数组中写东西时,会出现"数组超出范围 " 的错误。
当调用一次SetIndexBuffer(0,B1,INDICATOR_DATA)存储过程时,一切工作正常。
以前没有这样的事情。
平台错误。
如果在填充指标缓冲区的 B1数组时,重复调用过程SetIndexBuffer(0,B1,INDICATOR_DATA)。
例如,在初始化指标时,下一次尝试在B1数组中写东西时,会出现"数组超出范围 " 的错误。
当单次调用存储过程SetIndexBuffer(0,B1,INDICATOR_DATA)时,一切工作正常。
这在以前没有发生过。
你为什么要反复这样做?
绑定一个缓冲区意味着清除 它并为后续计算的动态绑定做准备。如果你第二次调用它,之前的缓冲区将被清除,只有在下一次调用指标重新计算时才会被填充。
你为什么要反复这样做?
缓冲区的结合意味着它的清空 和为下一次计算的动态结合做准备。如果你第二次调用它,之前的缓冲区将被清除,只有在下一次调用指标重新计算时才会被填充。
这是指标的标准完全初始化,它发生在指标首次启动时,通过Oninit()完成。
有时,当你更新历史等时,也需要这样做。
没有人想到,通过Oninit()反复初始化指标会导致数组停止响应。