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

if文とfor文

 

この記事では、MetaQuotes Software社のMT4(MetaTrader4)をこれから始めようとする方を対象に、MQL言語入門として、if文とfor文を解説します。

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

一見難しそうに感じるかもしれませんが、簡単ですから、ぜひ挑戦してみてください。

 

MetaEditor の起動

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

MT4の「メタクォーツ言語エディタ」をクリックします。

 

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」の場合のみ。

 

まとめ

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

if文とfor文は、EAやインジケーターを自作するためには必須の構文ですから、ぜひ使いこなせるようになってください。

 

MQL言語入門まとめ

これまでにMQL言語入門として書いた記事がたまってきましたのでまとめました。

【保存版】MQL言語入門まとめ|EA・インジケーターの作り方
せっかくMT4を使うなら、あなたオリジナルのEAやインジケーターを自作してみませんか。「プログラミングなんて自分にはとても無理だ」と思うかもしれませんが、そんなことありません。最低限知っておくべきことさえ押さえておけば、簡単にできます。

 

おすすめ書籍

もっと本格的にMQL言語を使いこなしたいなら、以下の書籍がおすすめです。

私もこの本で勉強しました。

FXメタトレーダー実践プログラミング (現代の錬金術師シリーズ)


おすすめFX業者

もしあなたがリアル口座でMT4の稼働をお考えなら「XMTrading」がおすすめです。 XMは、豊富な入出金方法、24時間日本語サポート、レバレッジ888倍など有利な取引条件、お得なボーナスなどにより、海外FX業者の中で日本人の口座開設数No.1です。

XMの口座開設はこちらから

MT4でシストレ

●免責及び注意事項●
当サイトの全てのコンテンツは管理人自身による情報の提供を目的としており、決して投資行動を勧誘・助言するものではありません。
投資商品、売買価格決定等の投資行動につきましては、ご自身の判断と責任に基づいて行われるようお願いいたします。
また、個々の取引において生じたいかなる損失についても、本ブログサイトおよびその管理者は一切の責任を負いかねます。

Startup!

コメント