MQLプログラミングの基礎|構文ルールを覚えよう

メタトレーダー(MT4)

今回は、プログラムの中身の書き方について解説していきます。書き方にはルールがあって、決められたルールで書かないとプログラムは動きません。

文法自体は、他のプログラミング言語にそっくりです。ですので経験のある方は読み飛ばしても大丈夫でしょう。

プログラミングが初めてという人向けの内容ですが、難しいものでもないので安心して下さい。

プログラムを書くときの決まりごと

メタエディターで新規作成からプログラムを作ると、以下のようなテンプレートが出来上がります。これはプログラムとしては完成しているものであり、何もしないプログラムでした。

このプログラムの全体像、どこから始まりどのように終了するのかを別記事で解説しました。

参考記事 MQLのプログラムコードを読んでみよう

今回はこのプログラムの中身の書き方、構文のルールについて具体的にみていきましょう。プログラムの作成には、この構文ルールに則って書いていくことになります。

「#」から始まる文はプログラム全体の設定

「#」で始まる行は、プログラム全体の設定を指定する構文です。

プログラム全体の設定とは何かという話ですが、プログラムをチャートウィンドウへ表示するかどうかの指定などがあります。

以下のような書き方が基本です。

#property 識別子 値

識別子を指定しますが、がないこともあります。

以下の構文は、指標をチャートウィンドウへ表示することを指定していますが値はありません。

#property indicator_chart_window

以下は値を持つパターンで、表示する指標の数を指定します。

#property indicator_butters 1

これで、このプログラムでは1個の指標をチャートウィンドウへ表示するという設定となります。

「//」や「/*○○*/」の行はコメント

// この一行はコメント行になります
a = 1;  // ココから行末までコメント行
b = 1;

/*
「/*」から「*/」のあいだは
すべてコメント行です。

何の処理をしているのか、メモ書きしておくと良いでしょう。
*/

c = a + b; // cはaとbの加算結果

プログラム中の「//」の記号以降は、行末までをコメントとみなします。先頭に「//」を書けばその行全てがコメント。途中から「//」を書けば、そこ以降がコメント行となります。

コメントはプログラムの実行に関係がないため、プログラムが何の処理をしているか等のメモ書きに使われます。プログラムを後で修正することもありますが、意外と何をしているのか忘れているものです。

複数行をまとめてコメントにすることもでき、この場合は「/*」と「*/」で囲みます。

「;」で一文の終わりを表す

// 「;」で一文が終わる。行のどこから書いてもOK
a = 1;
b = 2;        c = 3;

// 一文が複数行へまたがってもOK。一文の終わりは「;」で判断される
d = a
  + b
  + c;

文の終わりは「;」を書きます。

プログラムの文は、どこから書いても構いません。また、行をまたいで複数の行へ書くことができます。

「{}」で複数の文をまとめる

// 複数文のブロック化
{
    a = 1;
    b = 2;
}

// 一行で書くこともできる
{a = 1; b = 2;}

主に関数の形で使うことになるのですが、複数の文をブロック化する場合に「 { 」と「 } 」で囲みます。

ブロック化する書き方も自由で、一行で書くこともできます。

計算式の書き方

計算式の書き方は、通常の四則演算の計算式と同じです。

+ 足し算

ー 引き算

* 掛け算

/ 割り算

一部、独特な考え方があるので順番に見ていきましょう。

「=」は等しいではなく、代入という意味を持つ

プログラムの世界では、右辺の計算結果を左辺へ代入するという意味になります。

例えば、「b + c」の結果を「a」へ入れたい場合には以下のように書きます。慣れるまでは戸惑うかもしれませんね。

// bとcの加算結果をaへ代入
a = b + c;

// 以下の書き方は間違い
b + c = a;

演算の優先順位

現実世界と同様に、計算の優先順位が存在します。

「足し算」と「引き算」よりも、「掛け算」や「割り算」が優先されるというものですね。

例えば以下の式では、「b*c」が先に計算されて「a」が足された結果が「d」へ入ります。

d = a + b * c;

「a+b」を先に計算させたい場合は「()」を付け加えてあげれば大丈夫です。

d = (a + b) * c;

演算の省略形

他のプログラミング言語を知っている人にはお馴染みですが、省略形が存在します。わざわざ難しく書く必要もないので、慣れてきたら活用すればよいでしょう。

例えば、以下のような同じ変数へ2を足すという場合

a = a + 2;

以下のように省略できます。

a += 2;

四則演算で共通して使えるため、他の場合も以下のように書くことができます。

a -= 2; (a = a – 2の略)

a *= 2; (a = a * 2の略)

a /= 2; (a = a / 2の略)

もう一つ省略形があります。特定の場面でよく使うので、抑えておきましょう。

a++;

a–;

これはそれぞれ

a = a + 1;

a = a – 1;

となります。慣れるまでが少し大変かもしれませんが、便利な書き方です。

条件式の書き方

プログラミングをしていると、計算結果が0よりも大きい場合はAの処理。小さい場合はBの処理をしたいということがよくあります。

ここではそういった、条件分岐式の書き方についての説明です。

書式は以下のようになります。イメージとしては、もし条件式が成り立つならば「文」を実行する。成り立たない場合は何もしません。

if(条件式)文;

よく使う条件式は、2つの数値の比較した結果により、その後の処理を変えたいという場合です。「a」と「b」2つの数値を比較する書き方は以下のようになります。

(a == b) aとbが等しい

(a != b) aとbが等しくない

(a > b) aがbよりも大きい

(a < b) aがbよりも小さい

(a >= b) aがb以上である

(a <= b) aがb以下である

以上を踏まえて具体例を見れば、すぐに理解できると思います。

a = 0; b = 1; c = 0;

// aとbの比較
// aとbが等しい場合のみ、カッコの中の文を実行する
if(a == b){
    c = 3;
}

上記の例では、aとbが等しくないため何もしません。つまりcは0のままです。

おわりに

プログラムを作るための構文ルールについて見てきました。以下の6つのルールが、プログラムを書く上での決まりごとです。

  1. 「#」で始まるプログラム全体設定
  2. 「//」や「/**/」で始まるコメント行
  3. 「;」で一文が終了
  4. 「{}」で複数文のブロック化
  5. 四則演算とその省略形
  6. 条件式の書き方

以上を守らないとどうなるかですが、深刻な事態になるというわけでもありません。エラーがでてプログラムを実行することができないというだけのことですので、どんどん書いて慣れていきましょう。

コメント