FX自動売買基礎と応用

MQL4の文法とは?コード作成時に最低限覚えておきたい3つのルール


1.MQL4の文法とは?

MQL4には「文法」という、文章を作るうえでのルールが存在します。
日本語や英語と同様に、間違った文法だと意図が正しく伝わらず、自分が伝えたかったことが間違って伝わってしまいます。
そのため、MQL4の学習において文法を習得することは必須条件であり、自動売買を作成するうえで避けて通れません。

本記事では、MQL4で特に重要な文法を、いくつかご紹介します。

2.文とは?

MQL4のコードは、いくつかの「文」が集まって構成されています。
日本語では文の末尾に「。」、英語では「.」をつけるのと同様に、MQL4では1つの文の区切りとして文末に「;」(セミコロン)をつけます。

  • 一つ目の文;
  • 二つ目の文;
  • 三つ目の文;

日本語で文を読む際、文末に「。」がついていなくても特に違和感はなく、意味が分からなくなってしまうこともありません。
しかし、コードの場合は、文の意味を理解して実行するのはMT4であり人間ではありません。
そのため、ルールにのっとって正確に文法を記述する必要があります。

試しに間違った文法を記述してみましょう。

「ツールボックス」にsemicolon expectedというエラー

17行目でセミコロンを削除します。
その後コンパイルを行うと「ツールボックス」にsemicolon expectedというエラーが出現し「セミコロンが無いですよ」と教えてくれます。
このようにMQL4は優秀なため、コンパイル時に間違った文法があるとエラーの詳細を教えてくれます。

3.変数

MQL4に限らず多くのプログラミング言語では、データを格納する場所として「変数」を使用します。
変数とは、値を保管する箱のようなものです。

変数には、数値や文字列などを保管でき、さらに変数に保管した値を取り出して利用できます。

変数には、数値や文字列などを保管でき、さらに変数に保管した値を取り出して利用できます。

変数の作成は、以下のようにして行います。

    Mli>データ型 変数名 = 値;

「データ型」では、その変数が何用の箱なのかを指定します。
例えば文字列専用であれば「string」、整数専用であれば「int」を指定します。

「変数名」では、文字通り変数の名前を指定できます。
この変数名をプログラムで記述することで、変数から値を取り出して使用します。
この変数名は毎回自分で考える必要があります。

「値」では、その変数にどのような値を格納するのかを指定できます。
この値は「データ型」に沿った値である必要があります。
例えばデータ型が整数専用である「int」であるにもかかわらず、「0.01」などの小数を格納しようとすると、コンパイル時にエラーが発生します。

「移動平均線の期間を格納する変数」は以下のように記述できます。


int maPeriod = 14; 

    ・TIPS 変数はなぜ必要?

    プログラミングになじみがない方の中には、「変数はなぜ必要なのだろう?」「箱に入れなくても直接、その箱に入れる値を使えば良いのではないか」と思う方もいるでしょう。
    変数がプログラムの中で使用される回数は一度ではありません。
    例えばプログラムの中で移動平均線の期間14を何度か使用する場合、期間を28に変更しようとすると14と記述した部分をすべて28に書き換える必要があります。
    しかし、変数maPeriodを使用することで、maPeriodに格納した14を28に書き換えるだけで、一括で変更ができるのです。
    このように変数を使用することで、効率的なプログラミングを行えます。

4.演算子

MQL4では、さまざまな計算を行うために「演算子」が用意されています。
ここでは最も使用頻度が高い四則演算について紹介します。

四則演算とは、いわゆる「足し算」「引き算」「掛け算」「割り算」のことで、それぞれ「+」「-」「*」「/」という記号を使用します。
「+」「-」は一般的な記号ですが、掛け算と割り算はなじみがない方もいるかもしれないので注意が必要です。

試しに、四則演算の結果を確認してみましょう。
以下のように四則演算を出力するプログラムを作成しました。

四則演算の結果

コンパイル後に実行すると、以下のように四則演算が行われたことが確認できました。

コンパイル後に実行で四則演算が行われる

プログラムは基本的に上から下に実行されますが、MT4の「ターミナル」では下から順番にメッセージを表示するため順番が逆です。

    ・TIPS 掛け算の「×」、割り算の「÷」が使われない理由

    米国をはじめとするアルファベットの文化圏では、ASCIIというアルファベットや数字、記号をまとめた文字コードが主流で使用されています。
    その中には「×」や「÷」という記号が含まれていなかったため、代わりに「*」と「/」が使用されたという背景があります。
    PCのキーボードを見ても分かるように「×」と「÷」は用意されておらず、直接タイプすることができません。

5.条件分岐

条件分岐とは、その名の通り条件に応じて処理を分岐させることです。
書式は以下の通りです。


if(条件式){
    //条件式を満たすときに実行される処理
}

if自体には、セミコロンは必要ないので注意が必要です。
例えば変数RSIが30を下回っていたとき、「RSIは30よりも下です」と表示されるプログラムは、以下のように書けます。


if(RSI < 30){
    Print(“RSIは30よりも下です”);
}

FXの手法でよく「MAがゴールデンクロスで、RSIが30より下の時に買いエントリー」などを見かけますが、このようなロジックをMQL4で実装するときはこのifを用います。

6.応用編

それでは、「変数」「演算子」「条件分岐」を組み合わせて以下の仕様を満たすプログラムを作成してみましょう。

  • 1.int型の変数を2つ用意し、それぞれに適当な値を格納する
  • 2.2つの変数を足し合わせた結果、100を超えた場合は「100以上です」、100を下回った場合は「100未満です」と表示する

実際に記述してみます。

「変数」「演算子」「条件分岐」を組み合わせて以下の仕様を満たすプログラムを作成

コンパイル後に実行すると、エキスパートには以下のように「100以上です」と表示されます。

コンパイル後に実行すると、エキスパートには以下のように「100以上です」と表示

変数aとbの値によって表示されるメッセージが変わるので、ぜひ実際にコードを書いて試してみましょう。

EA(自動売買)を学びたい方へオススメコンテンツ

EA運用の注意点

OANDAではEA(自動売買)を稼働するプラットフォームMT4/MT5の基本的な使い方について、画像や動画付きで詳しく解説しています。MT4/MT5のインストールからEAの設定方法までを詳しく解説しているので、初心者の方でもスムーズにEA運用を始めることが可能です。またOANDAの口座をお持ちであれば、独自開発したオリジナルインジケーターを無料で利用することもできます。EA運用をお考えであれば、ぜひ口座開設をご検討ください。


本ホームページに掲載されている事項は、投資判断の参考となる情報の提供を目的としたものであり、投資の勧誘を目的としたものではありません。投資方針、投資タイミング等は、ご自身の責任において判断してください。本サービスの情報に基づいて行った取引のいかなる損失についても、当社は一切の責を負いかねますのでご了承ください。また、当社は、当該情報の正確性および完全性を保証または約束するものでなく、今後、予告なしに内容を変更または廃止する場合があります。なお、当該情報の欠落・誤謬等につきましてもその責を負いかねますのでご了承ください。

この記事をシェアする

ホーム » FX自動売買基礎と応用 » MQL4の文法とは?コード作成時に最低限覚えておきたい3つのルール