文章 "针对初学者的 MQL 5 中的自定义指标" - 页 2 123 新评论 Artyom Trishkin 2014.07.31 21:50 #11 serg7771959:尼古拉斯您能告诉我为什么当我尝试在一个循环中使用 Mass[ i ]= Mass[ i+1]+A; 公式填充一个指标数组时,A 是一个变量,编译没有出错,但当我加入窗口时,却得到 array out of range(数组超出范围)的信息? 因为循环时应考虑到最后一次输入的单元格。比方说,如果 Mass[] 数组的大小是 10,那么从 0 循环到 9(这是数组最后一个单元格的索引),然后在 i==9 处尝试写入索引为 9+1 的单元格。数组中没有单元格 10。因此会得到数组 之外的输出。 nicolasxu 2015.01.18 09:06 #12 我们需要更多这样的教程 igorsds 2016.06.26 02:16 #13 尼古拉,谢谢你。 但我认为,在代码中,变量const int begin在代码中始终为零。这对计算有意义吗? apirakkamjan 2018.06.08 12:14 #14 igorsds:尼古拉,谢谢你。 但我认为,在代码中,变量在代码中始终为零。这对计算有意义吗? begin "的值 会因应用的指标 不同而不同。例如,如果您应用的是 RSI 指标,"begin "的 值将是 14。 Arthur Albano 2018.08.17 14:14 #15 如果您第一次尝试编译,可能会出现缓冲区错误。因此,请更改缓冲区的数量: #property indicator_buffers 2 之后,您可以改回 1(一个)缓冲区: #property indicator_buffers 1 Epril Purwandi 2021.02.20 09:24 #16 如何与 "之 "字形纤维相结合 LRDPRDX 2021.12.02 19:03 #17 我不明白。假设 rates_total == MA_Period - 1 并且这是函数的第一次调用,因此 prev_calculated == 0 并且begin == 0 则第一个 if(rates_total < MA_Period - 1 + begin) 中的条件值为 false 那么 first = MA_Period - 1 将被执行 但由于第一个 for 循环中的条件返回值为 false,因此不会进行计算。 我认为第一个 if 条件应该是 if( rates_total < MA_Period + begin ) 我是不是漏掉了什么? LRDPRDX 2021.12.02 19:16 #18 还有一个问题。如果我已经计算过该指标的 prev_calculated 次,为什么还要从数字为( prev_calculated - 1) 的条形图开始计算? 例如,我在第 0、1、2、3 和 4 条计算了 5 次指标。我不需要在第 4 栏再次计算。我应该从第 5 条开始计算。 LRDPRDX 2021.12.03 14:43 #19 LRDPRDX #:还有一个问题。如果我已经计算了指标prev_calculated 的次数,为什么还要从数字为( prev_calculated - 1) 的条形图开始计算?例如,我在第 0、1、2、3 和 4 条计算了 5 次指标。我不需要在第 4 栏再次计算。我应该从第 5 条开始计算。 好的。我想我的想法不对,因为自上次计算以来,第 4 条可能已经发生了变化。所以(prev_calculated - 1) 看起来是对的。 Marilena Oliva 2021.12.09 12:37 #20 诈骗成风布拉维 123 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
尼古拉斯
您能告诉我为什么当我尝试在一个循环中使用 Mass[ i ]= Mass[ i+1]+A; 公式填充一个指标数组时,A 是一个变量,编译没有出错,但当我加入窗口时,却得到 array out of range(数组超出范围)的信息?
尼古拉,谢谢你。
但我认为,在代码中,变量
在代码中始终为零。这对计算有意义吗?
尼古拉,谢谢你。
但我认为,在代码中,变量
在代码中始终为零。这对计算有意义吗?
begin "的值 会因应用的指标 不同而不同。例如,如果您应用的是 RSI 指标,"begin "的 值将是 14。
如果您第一次尝试编译,可能会出现缓冲区错误。因此,请更改缓冲区的数量:
#property indicator_buffers 2
之后,您可以改回 1(一个)缓冲区:
#property indicator_buffers 1
我不明白。假设
rates_total == MA_Period - 1
并且这是函数的第一次调用,因此
prev_calculated == 0
并且begin == 0
则第一个 if(rates_total < MA_Period - 1 + begin) 中的条件值为 false
那么
first = MA_Period - 1 将被执行
但由于第一个 for 循环中的条件返回值为 false,因此不会进行计算。
我认为第一个 if 条件应该是
if( rates_total < MA_Period + begin )
我是不是漏掉了什么?
还有一个问题。如果我已经计算过该指标的 prev_calculated 次,为什么还要从数字为( prev_calculated - 1) 的条形图开始计算?
例如,我在第 0、1、2、3 和 4 条计算了 5 次指标。我不需要在第 4 栏再次计算。我应该从第 5 条开始计算。
还有一个问题。如果我已经计算了指标prev_calculated 的次数,为什么还要从数字为( prev_calculated - 1) 的条形图开始计算?
例如,我在第 0、1、2、3 和 4 条计算了 5 次指标。我不需要在第 4 栏再次计算。我应该从第 5 条开始计算。