【FX自動売買】EA入門 mqlの基礎文法 変数・関数宣言方法【MT4】

この記事は【EAの教科書シリーズ】の一部です。全記事は以下から確認できます。

MT4をまだダウンロードしていない方はこちらのページでダウンロード方法を案内しているので、事前にMT4を用意しておいてください。

mqlの基礎

以前、上の記事でもお話しましたが、MT4でEAを作成するにはmqlというMT4専用の言語を使用します。

mqlはC++をベースに作成された言語であるため、文法はほとんどC++やC、Javaなどと一緒です。これらの言語を学んだことのある人であれば、さほど理解に苦しむことはないかと思います。

今回はプログラミング初学者でも理解できるようにmqlの超基礎的な部分について解説していきたいと思います。他の言語を学んだことがある人も簡単なリファレンスだと思ってみていただければ幸いです。

mqlでの変数の定義方法

mqlのプログラム中では文字列も数字も利用できますが、必ず変数の型、変数名を定義してから関数内で使いたい値を変数に代入します。

例えば4+1という計算をさせてその結果を取得する関数を作りたいとします。もし4+1=などと書いたら、これはエラーが発生しプログラムは動作しません。

必ず使いたい値用の変数の定義から始めましょう。

4や1といった整数はInteger(int)と呼ばれる型の変数になります。mqlで書く場合、以下のようになります。

int A=4;
int B=1;
int C=0;

これらは全てinteger型の変数なので、intというワードで型を宣言しています。その後に半角スペースを一つあけ、変数の名前を書きます。ここではそれぞれA, B, Cと名付けていますが、本当はあまりこのような名前は好ましくありません。

その変数が何のために使われる変数なのかが一目でわかるような名前にするのが良いでしょう。

変数A, B Cには数値が代入されているので、それらを使って計算させたいときにはC=A+Bのように書くことができます。

また変数の定義の終わりにはセミコロン(;)をつけることを忘れないようにしましょう。これによって一つの命令(ここでは変数を一つ作成すること)が終了することをコンピューターが理解できます。

mqlにおける他の変数型

上で紹介したinteger型の変数は具体的には以下のような感じで使われることが多いです。

int ShortMA=20;
int LongMa=80;

これは移動平均線(Moving Average = MA)を使う関数などで異なる期間のMAの期間を指定するための変数です。
MAを作成するための関数にこれらの値を使うことで、そのMAが短期間用なのか長期間用なのかがわかります。また、あとで期間を変更しようと思ったときにはこの変数宣言部分を変更するだけで、プログラム全体のMAの期間に反映されるので、変更が容易になります。

少数を表すDouble型

integer型は整数を表すための型ですが、数値を表す型は他にもDouble型などがあります。

Double型は少数を含む数値を表すための型です。

double StopLoss=0.0025;

上のように損切額の値を設定する際などに使われます。

文字列を表すString型

String型は文字列を表すための型で、”USDJPY”などのように文字列の両端をダブルクォーテーション(”)で囲みます。

string greeting="Hello";

真偽値を表すBool型

Bool型は真偽値とよばれるTRUEFALSEという値を表すための型です。

bool yes=TRUE;
bool no=FALSE;

TRUEとFALSEはそれ自体が真偽値という特殊な値で、文字列ではないのでダブルクォーテーションで囲まないように注意しましょう。

関数の型

関数を定義する際にも型の宣言が必要です。関数の型はその関数が返す戻り値の型を意味しています。

戻り値とは関数を実行した結果得られる値のことです。

関数は大きく分けて二種類あり、戻り値を返すものと返さないものがあります。

戻り値を返すタイプの関数であれば、最後に返される戻り値の型が関数の型になります。例えば4+1という計算をさせて、その結果である5を返す関数であれば、5はInteger型なので、関数のInteger型だと言えます。

一方で戻り値がない関数は戻り値がないことを表すvoidという型になります。上の例にならっていうなら、4+1を内部で計算させるだけで、その結果である5は取得できません。

関数の宣言方法

関数の宣言は

関数の型 関数名()
{
行わせたい処理;
return;
}

のように書きます。

例)4+1を計算させて結果を取得する

int GetCalculationResult()
{
    int A=4;
    int B=1;
    int C=0;
    C=A+B;
    return (C);
}

最終的に計算結果の5(C)が得られるので関数の型にはintを指定しています。名前は計算結果を取得することを意味するGetCalculationResultにしています。
return (C);は戻り値としてCを返すことを意味しています。同時にreturnはその関数がそこで終了することも意味しています。

次に戻り値がない場合を見てみましょう。

例)4+1を計算させた結果を出力する

void PrintCalculationResult()
{
    int A=4;
    int B=1;
    int C=0;
    C=A+B;
    Print(C);
}

こちらでは関数の型がvoidになっています。戻り値がないことを表しています。

またPrintという関数は()の中の値をコンソールに出力するための関数で、今回は計算結果のCを出力しています。

returnがないことも確認してください。

まとめ

今回はmqlで変数や関数を定義・宣言する方法を紹介しました。他のプログラミング言語と大差ないので、何かしらの言語を学んだことがある人であれば難しくないと思います。

プログラミングが完全に初めての方もこれを機にプログラミングの基礎を学習してみるのもいいでしょう。

[itemlink post_id=”2273″]