【MQLプログラミング基礎】繰り返し文を書いてみよう!プログラム例あり

【初級編】MQLプログラミング基礎
朝日奈りさ
朝日奈りさ

繰り返しはプログラミングの基礎中の基礎です。しっかり理解しましょう!

繰り返しとは?

MQLプログラミングでは、全く同じ処理を、何度も繰り返し実行できると、とても便利です。

たとえば、「100個のポジションを決済する」という処理を考えると、100回同じ処理をしなければなりません。

そのような、全く同じ処理を繰り返し行うことができる機能があります。

それが、「for文」と「while文」です。

そこで今回は、for文とwhile文の書き方を解説します。

 

for文の書き方

for文は「〇〇という条件に当てはまる限り、××を実行し続ける」というイメージで書きます。

〇〇は条件式と呼ばれ、if文にも同様の条件式が使われます。

一般的には以下のようにプログラミングします。

for(変数の初期化; 条件式; 変数の更新)
  {
    繰り返し行いたい処理内容
  }

for文の()内は、3つに分割されます。

・変数の初期化
・条件式
・変数の更新

それぞれ解説します。

 

変数の初期化

その名の通り、変数を初期化します。

たとえば、「int i = 0;」と書き、iという変数を0に初期化します。

もし、iという変数を、for文より上で宣言しているなら、「i = 0;」だけでOKです。

変数を初期化する理由は、次の条件式で、この変数を使うからです。

 

条件式

条件式を記述するのですが、ポイントとしては、上記の変数を条件式に含めることです。

たとえば、「i < 100;」と書き、この条件式が正しい(true)の場合、{}内のプログラムを実行します。

ここだけみると、if文の考え方と同じですね。

iを条件式に含める理由は、条件式が正しい(ture)のままだと、無限に繰り返しが起こり、for文が終了しなくなるため、条件式を誤り(false)になるようにさせたいからです。

iを更新することによって、条件式を誤りにさせるようにできます。

 

変数の更新

変数を更新します。

for文は繰り返し実行されますので、変数の更新も繰り返し行われます。

ここで変数を更新することによって、条件式が誤り(false)となり、for文を終了することができるようになります。

たとえば、「i++」と書きます。

これは、iの値を1増やすという処理です。「i = i + 1」と書いても同様の処理になります。

 

for文のプログラム例

上記の例をまとめると、以下のようにプログラムできます。

for(int i = 0; i < 100; i++)
  {
    i が 0~100 まで増え続け、合計で100回実行される
  }

「変数の初期化」「条件式」「変数の更新」を適切に設計することで、自由自在に繰り返しをさせることができます。

慣れるまでは、プログラム例をコピペして、使ってみると良いでしょう。

 

while文の書き方

繰り返しは、for文以外にも「while文」があります。

while文の考え方は、for文と似た感じですが、書き方が大きく異なります。

「変数の初期化」「変数の更新」は()内ではなく、{}に書きます。

一般的には以下のようにプログラムします。

変数の初期化

while(条件式)
  {
    繰り返し行いたい処理内容
    変数の更新
  }

for文と違い、()内には条件式だけ書きます。

注意点としては、変数の更新を書き忘れることがあります。

書き忘れると、無限ループが発生するので、処理が思うように進まない可能性があります。

また、エラーも出ないので、無限ループが発生している箇所を探すのが大変です。

そのため、私はfor文を使うことをオススメします。

 

while文のプログラム例

int i = 0; //変数の初期化

while(i < 100)    //条件式
  {
    i++;    //変数の更新
  }

「変数の更新」を書き忘れると無限ループが発生します。

while文を書くときには注意しましょう。

 

サンプルプログラム

for文とwhile文のサンプルプログラムです。

for文の繰り返しは、チャート上に表示されます。

while文の繰り返しは、ログに表示されます。

下記のプログラムをコピペすることで利用可能ですが、ダウンロードもできます。

//+------------------------------------------------------------------+
//|                                          SampleMQL_for&while.mq4 |
//|                                    Copyright 2020, 朝日奈りさFXchannel |
//|                                      https://mql-programing.com/ |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, 朝日奈りさFXchannel"
#property link      "https://mql-programing.com/"
#property version   "1.00"
#property strict

//大域変数を宣言
int j = 0; //while文用の変数

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//for文の例
   for(int i = 0; i < 100; i++)
     {
      Comment("これはfor文の ",i+1," 回目の繰り返しです。");
     }

//while文の例
   while(j < 100)
     {
      Print("これはwhile文の ",j+1," 回目の繰り返しです。");
      j++;
     }
     
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---

  }
//+------------------------------------------------------------------+

 

実行結果は以下のようになります。

〇for文の実行結果

 

〇while文の結果

 

まとめ

MQLプログラミング基礎として、繰り返し文(for文、while文)を解説しました。

ポイントは以下の3点です。

・変数の初期化
・条件式
・変数の更新

これらをうまく設計することで、繰り返しを自由自在に使うことができるようになります。

サンプルプログラムのパラメータを変更して、繰り返しの便利さを体験してみてください!

 

コメント