MARKET
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▼|きょうの指標重要指標なし|

ArrayResize ― 配列の大きさを変える|MQL4/MQL5リファレンス

MQLリファレンス›関数データの持ち方ArrayResize
MQL4 / MQL5 両対応データの持ち方配列

ArrayResize配列の大きさを変える

動的配列(大きさを固定していない配列)の要素数を増減させる関数。「集めた分だけ増やす」処理の基本で、過去の一致件数を集める・履歴を溜めるなど、数が事前に分からない場面で使う。

1書式

int ArrayResize(
   void      &array[],   // 大きさを変えたい配列
   int       new_size,   // 新しい要素数
   int       reserve=0   // 先読みで確保しておく余分な数(省略可)
);

書式そのものはMQL4・MQL5で同じ。

2引数

引数 内容
array 大きさを変える配列(1次元・多次元とも可)
new_size 変更後の要素数
reserve 毎回1つずつ増やすと処理が重いときに、まとめて確保しておく余分の数

3戻り値

変更後の要素数。失敗すると-1(メモリ不足など)。要素数を減らしても、超えた分のデータが自動で消えるだけで、既存の値は保たれる。

4実際に動かした結果

見つかるたびに1つずつ伸ばす

[0][1][2][3][4] ArrayResize(g_matches, 1) → 2 → 3 → 4 → 5 と、見つかるたびに1つずつ伸びる

5件見つかったので5回 ArrayResize を呼び、そのつど末尾に値を積んでいる。

✓ 実測

要素を1つずつ増やしながら値を積む処理を実行。

操作 結果
ArrayResize(arr, 1) → arr[0]=値 要素数1、値が入る
ArrayResize(arr, 5) を経て5件積む 要素数5、先に入れた値は保たれる

5使用例:見つかるたびに配列を伸ばす

double g_matches[];
int    g_n = 0;

void AddMatch(double score)
{
   g_n++;
   ArrayResize(g_matches, g_n);
   g_matches[g_n - 1] = score;
}

MetaEditorでコンパイル0エラー・0警告を確認済み。

6MQL4→MQL5の違い

🔁 差分

関数自体の形は同じだが、配列の並び順の既定がMQL4とMQL5で違う。MQL4のインジケーターバッファは自動で「時系列(新しい方が0番)」になるが、MQL5では既定が普通の並び(古い方が0番)で、時系列にしたいときはArraySetAsSeries(array, true)を自分で呼ぶ必要がある。呼び忘れると、値は入るのに0番目が思っていたのと逆の足になる。

7よくある罠

⚠ 実務で踏んだもの
  • ループの中で毎回1つずつArrayResizeを呼ぶと、件数が多いときに遅くなることがある。件数の見込みが立つならreserveでまとめて確保する。
  • 要素数を減らしてから増やすと、減らした間の値は保証されない。作り直すときは値も入れ直す。

8関連する関数

9使っている無料ツール

PastEcho — いまの形に似た過去の場面を見つけるたびに、一致した件数ぶんだけ配列を伸ばして集めるために使用(製品ページへ)
公式リファレンス:MQL4 / MQL5(英語・要約は転載しません)

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▼きょうの指標重要指標なし
REI-FX&BO OFFICIAL LINE

ツールのダウンロードパスワードは
公式LINEで、すぐ届きます。

友だち追加の自動返信でパスワードをお送りします。
新しいツールの公開や、検証でわかったことも先にお知らせします。

全ツールのパスワード新作ツールをいち早く配信は月1〜2回だけ
LINEで友だち追加 パスワードを受け取る ›

追加後にひとことメッセージをいただけると、ツールづくりの参考にします。