MQL4言語入門|if文とfor文を使いこなそう!

この記事は約5分で読めます。

if文とfor文

せっかくMT4(MetaTrader4)を使うなら、あなたオリジナルのEA(Expert Advisor)やインジケーターを自作してみませんか!?

初心者向けに、MQL4言語を使ったプログラミングについて解説しています。

 

今回は、if文とfor文を解説します。

制御文であるif文とfor文を使いこなすことが出来れば、思いどおりにEA(Expert Advisor)やインジケーターを自作できるようになります。

一見難しそうに感じるかもしれませんが、実は超簡単ですから、ぜひ挑戦してみましょう♪

 

スポンサーリンク

MetaEditor の起動

サンプルコード「MACD Sample.mq4」を使って説明します。

MT4の「メタクォーツ言語エディタ」をクリックし、MetaEditorを起動しましょう。

 

MeTaEditorが立ち上がったら、画面左側の「Navigater」内のツリーから「Experts」をダブルクリックします。

「Experts」のツリーから「MACD Sample.mq4」をダブルクリックすると、ソースコードが開きます。

 

スポンサーリンク

if文(条件分岐処理)

if文は、「もし○○なら××する」という意味で使われます。

○○は、AはBより大きい(小さい)、AはBと等しい(等しくない)などの条件です。

以下のように記述します。

if(条件式) {
// 条件式がtrueの場合に実行する処理
}

条件式が「正(true)」であれば、{ }内の処理を行います。

条件式が「誤(false)」であれば、{ }内の処理をとばします。

 

「MACD Sample.mq4」の50行目からのif文を見てみましょう。

total=OrdersTotal();
if(total<1)
{

まず、変数totalに注文数を代入します。※OrdersTotal()は注文数を返す関数です。

もし、「total(注文数)が1より小さい」という条件式が「true」なら、{ }の処理を行います。

という意味になります。

 

if else文

if else文は、「もし○○なら××する、そうじゃなければ△△する」という意味で使われます。

elseの後には、if文の条件が「false」の場合に行う処理を記述します。

以下のように記述します。

if(条件式) {
// 条件式がtrueの場合に実行する処理
} else {
// 条件式がfalseの場合に実行する処理
}

条件式が「true」であれば、ifの後の{ }内の処理を行います。

条件式が「false」であれば、ifの後の{ }内の処理をとばし、elseの後の{ }内の処理を行います。

 

「MACD Sample.mq4」の63行目からのif else文を見てみましょう。

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,"macd sample",16384,0,Green);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
Print("BUY order opened : ",OrderOpenPrice());
}
else
Print("Error opening BUY order : ",GetLastError());
return;

変数ticketに、OrderSend()関数の値を代入します。※OrderSend()は注文を出す関数です。約定(true)ならチケット番号を、失敗(false)なら-1を返します。

もし、「ticketが0より大きい」という条件式が「true(=約定成功)」なら、ifの後の{ }内の処理(約定メッセージを吐き出す)を行います。

もし、「false(=約定失敗)」なら、ifの後の{ }内の処理をとばし、elseの後の{ }内の処理(エラーメッセージを吐き出す)を行います。

という意味になります。

 

スポンサーリンク

for文(ループ処理)

for文は、指定した回数だけ処理を繰り返すときに使われます。

以下のように記述します。

for (初期化式; 条件式; 変化式) {
// 条件式がtrueの場合に実行する処理
}

初期化式は、最初に一度だけ実行される式です。主にfor文で使用する変数の初期化に使用します。

条件式は、ループする度に評価される式です。「true」のときに{ }内の処理を行います。

変化式は、ループ処理が終わる度に実行される式です。条件式で使用している変数の値を変化させます。

 

「MACD Sample.mq4」の91行目からのfor文を見てみましょう。

for(cnt=0;cnt<total;cnt++)
{

初期化式では、最初に一度だけ変数cntを初期化(0を代入)します。

条件式では、ループする度に、cntが変数total(=注文数)より小さいかを評価し、小さければ{ }の処理を行います。

変化式では、{ }内の処理が終わる度に、cntに+1します。※「++」と「+1」は同じ意味です。

cntがtotal以上になるまで条件式と変化式を繰り返し、cntがtotal以上になったらfor文を終わります。

という意味になります。

 

スポンサーリンク

条件式の種類

if文やfor文で使われる条件式は、以下のような、等号、不等号、論理演算子などを使って記述します。

1.等号

  • A == B : AとBは等しい。
  • A != B : AとBは等しくない。

2.不等号

  • A < B : AはBより小さい。
  • A <= B : AはB以下。
  • A > B : AはBより大きい。
  • A >= B : AはB以上。

3.論理演算子

  • A || B : OR(※ABのどちらか一方が「true」であれば)
  • A && B : AND(※ABどちらも「true」の場合のみ)

 

スポンサーリンク

まとめ

今回は、MQL4言語入門として、代表的な制御文であるif文とfor文について解説しました。

制御文であるif文とfor文は、EAやインジケーターを自作するためには必須の構文ですから、ぜひ使いこなせるようになりましょう。

タイトルとURLをコピーしました