MQL4 / MQL5 両対応 よく見るエラーコードERR_ARRAY_INDEX_OUT_OF_RANGE
目次
エラー4002ERR_ARRAY_INDEX_OUT_OF_RANGE ― 配列の範囲外を読み書きした
配列の範囲外(存在しない添字)を読み書きしようとしたときに出る。配列を扱うコードで、もっとも基本的でありながら踏みやすいエラー。
1主な原因
- ループの終了条件を1つ間違えて、要素数ぴったりの添字(範囲外)まで読もうとした
ArrayResizeで縮めたあと、古いサイズを前提にアクセスしていたArraySetAsSeriesの有無で「0番目がどっちか」を勘違いしていた
2対処法
✓ ArraySizeで実際の要素数を確認してからアクセスする
添字を決め打ちせず、ArraySizeの戻り値でループの範囲を作る。配列を縮めたり並べ替えたりした直後は、そのあとのアクセスが古い前提のままになっていないか見直す。
3発生する例と直し方
// 悪い例:<=で1つ多く読んでしまう(境界を超える) double buf[10]; for(int i = 0; i <= ArraySize(buf); i++) Print(buf[i]); // 直した例:<にする double buf2[10]; for(int i = 0; i < ArraySize(buf2); i++) Print(buf2[i]);
4MQL5では
🔁 差分
MQL5でも同じ4002。配列の境界チェックの考え方自体はMQL4・MQL5で変わらない。
5関連するエラー
MORNING BRIEF平日 毎朝7時までに更新
今日はどこを見ればいいか。
ドル円とユーロドルの主要ライン・予想高値安値を、平日の朝に図1枚にまとめています。
朝刊を見る→9/25 8:27 時点ドル円158.78▼-7 pipsドル円 予想レンジ158.41 〜 159.23ドル円 上の節目158.90▲ドル円 下の節目157.80▼ユーロドル1.1378▼-2 pipsユーロドル 予想レンジ1.1351 〜 1.1408ユーロドル 上の節目1.1403▲ユーロドル 下の節目1.1359▼きょうの指標重要指標なし