源码与编译
MQL5 数组超出范围:找到第一个无效索引
数组索引必须引用实际存在的元素。编译成功并不能证明每个运行时循环都使用有效的索引。从第一个报告的行开始,而不是立即修补所有循环。
写下界限
对于具有五个元素的一维数组,有效的从零开始的索引是零到四。如果循环访问索引 5,就会越界。读取 i+1 时,为该额外元素留出空间。
检查您收到的数据
如果您请求许多K线但收到的数量较少,则请求的计数不是安全循环界限。记录复制的计数、数组长度和失败索引。决定当历史记录尚未准备好时 EA 应该做什么。
重现一个小案例
尝试前几根K线、空结果和最小回顾。这些案例通常比另一次全年运行更快地揭示边界错误。保留失败的输入,以便再次检查更正情况。
保持修复范围窄
不要压制消息并继续使用虚构价格。有用的修复建立有效边界或等待有效数据。可编辑的源代码使这些小的、有针对性的改进成为可能,而无需改变整个策略。
返回顶部