初めてお越しの方へ

一部のコンテンツはMTPlaceメールマガジンに登録していただくことで閲覧/ダウンロード可能となります。もちろん登録は無料、解除も簡単にできますのでMTPlaceメールマガジン登録よりお気軽にご登録下さい。記事の一覧はサイトマップを御覧ください。

Categories: MQL4の基本

配列の意味と使い方

MT4のインジケーターやEAを作成するにあたって、絶対に理解して置かなければならないことに「配列」があります。なぜならほぼ必ずと言って良いほど「配列」を使用するからです。なんだか難しそうですが、使ってみるとそれほど難しくもありませんのでご安心下さい。
start関数を空にしたソースを準備しましたのでダウンロードしてお使いください。
start関数が空の TestIndicator

では、配列とはどのようなものかをご説明します。
配列とは、同じデータ型のデータを連続的に並べたものです。以下に配列の定義方法を示します。

配列変数の型 配列変数の名前[配列の要素数];

ここでは、学校のあるクラスの生徒達の名前を例にあげます。説明を簡単にするために、そのクラスの生徒数は4人であるとしましょう。そして生徒の苗字は、五十音順に”Abe”,”Ito”,”Sato”,”Suzuki”であるとします。
以下に、4人の生徒の名前を変数に入れて、それを五十音順に表示するソースを示します。(並べ替え等の小難しい話は抜きです)

int start()
  {
   string student1Name = "Abe";
   string student2Name = "Ito";
   string student3Name = "Sato";
   string student4Name = "Suzuki";
   
   string moziretu = "";
   moziretu = moziretu + student1Name + "\n";
   moziretu = moziretu + student2Name + "\n";
   moziretu = moziretu + student3Name + "\n";
   moziretu = moziretu + student4Name;
   
   Comment(moziretu);
   return(0);
  }

この例の場合、わざわざ変数に名前を入れる意味はないのですが、配列の説明のためですので、ここでは意味があるかないかについては考えないで下さい(^_^;)通常の変数を使用すると、4つの変数を定義する必要がありますね。
これを配列変数を使用して書き換えると以下のようになります。

int start()
  {
   string studentName[4];
   studentName[0] = "Abe";
   studentName[1] = "Ito";
   studentName[2] = "Sato";
   studentName[3] = "Suzuki";
   
   string moziretu = "";
   for(int i = 0; i 

まず、34行目でstring型の配列変数studentNameを定義しています。そして、その配列は4個分の要素を持つことが出来ると定義しています。
次の35行目~38行目でその中身を設定しています。"studentName[0]"の"[]"の中の数字は配列の添字(そえじ)と言いますが、0はその配列の最初の要素を表しています。0から始まるので、最後の要素番号は"配列の要素数-1"つまりこの例では3となります。
そして41行目からのfor文で配列変数studentNameの要素0~3全てについてmoziretuに入れています。for文のカウンタ変数iは0~3まで変化していきますからこのようなテクニックが使えるのです。
以上のように、配列はfor文などの繰り返し処理でも扱いやすいものとなっています。

今はまだ理解できないかもしれませんが、勉強を進めるにつれて理解できるようになりますので焦らないで大丈夫です。単純に変数の後ろに"[数字]"というのを見つけたら(あ、これは配列変数だな)と気づいていただければOKです。
・今回作成した配列のサンプル TestIndicator

だいご