MT4/MT5のコメントと変数について|MQL入門(2回目)

2018年11月7日

PCの中から手

「初心者でも分かる!MT4/MT5のプログラミング入門」シリーズの第2回目です。

今回は「コメント」や「変数」について学んでいきます。

第1回目を確認いただいている前提で進めますので、まだ見ていない方は先にご確認いただければと思います。

初心者でも分かる!MT4/MT5のプログラミング入門|MQL入門(1回目)

コメント

コメントとはコンピューターが無視する行のことです。

無視される行を書く意味があるのか?

という疑問が出ると思いますが、大きな意味があります。

コメントの役割は主に3パターンに分かれますので、1つずつ見ていきましょう。

 

パターン1 : プログラムを見やすくする

プログラムをメンテナンスするのはコンピューターではなく人間です。

だから、人間が見て分かりやすいようにプログラムが書く必要があります。

前回書いたプログラムをもう一度見てみましょう。

先頭が「//」(スラッシュ2つ)から始まっている行がコメントになります。

 
先頭の塊で、プログラムの情報を示しています。

ビジネスとしてプログラムを書く場合には、プログラムの詳しい説明も一緒に記載することが多いです。

例えば2行目と3行目の間に「練習用プログラム」と記載したり、11行目~13行目部分で「Expert initialization function 」とすることで、以降の処理の区切りを分かりやすくしています。

 

パターン2 : プログラムの意味を説明する

前回の復習ですが、printf(Hello World);はコンソールに文字を出力するということです。

そこで、後から自分や周りの人が見ても分かるように以下のようにコメントを書きます。

 
プログラムに慣れるまでは、1行1行に説明用のコメントを付けるくらいが良いと思います。

慣れてきたら必要と思える部分にのみ付けるようにしていきましょう。

 

パターン3 : テスト用のプログラムを切り替える

プログラムの動作確認では、プログラムが書かれている行をコメント化したり、外したりしながら進めることが多いです。

前回作成したプログラムを以下のように変更してコンパイルしてみましょう。

printfを3行書いて、そのうちの2個をコメントアウトしています。

 
MT4のエキスパートタブに、コメントアウトしなかった行だけが表示されたかと思います。

Hellow Worldのログ

 
printf(追加したHello World); // テスト」のように末尾にコメントを追加することもできます。

 

複数行をまとめてコメントアウト

複数行をまとめてコメントアウトする場合は、「/*」~「*/」で囲みます。

コメントアウトされていることが分かりやすいように、上下にprintfを追加してコンパイルしてみましょう。

 
想定通りの行が出力されたかと思います。

ログの出力確認

 
ここで1つ注意点ですが、「コメント下のprintf」が上に来ています。

MT4のコンソールには実行した順に積み重なっていくので、先に実行された「コメント上のprintf」のあとに「コメント下のprintf」が乗ったイメージです。

※MT5ではコンソールの表示が逆の順序になります。

 

変数

変数って何なんだ?

ということになると思いますが、「変数は値を入れておくための便利な箱」です。

まずは、以下のようなプログラムを考えてみます。

 
printfで「Hello World」絡みの文字を3つ出力しました。

もし、後から「Hi Japan」に変更したいと思ったらどうするでしょう?

ここで3ヵ所修正すれば良いという考えは、プログラムの世界ではあまりよくありません。

仮に「Hello World」が1万ヵ所に書かれていたら?と考えるのです。

1万ヵ所を全て修正したらとてつもなく時間が掛かってしまいます。

そこで変数が大活躍します。

先ほどのプログラムを以下に書き換えましょう。

 
プログラムを細かく見ていきます。

string word = “Hello World”;

stringという見慣れない文字が出てきました。

MQLでは箱の種類を先頭に書く必要があり、「整数用の箱」、「文字用の箱」という形で書いていきます。

stringは「文字列用の箱」という意味です。
また、ここでの「=」は左辺と右辺が等しいという意味ではなく、右辺を左辺に代入するという意味です。

ちょっと分かりづらい説明になってしまいましたが、日本語で全体を表すと「wordという名前の文字列用の箱に”Hello World”を入れた。」ということです。

printf(“%sを先頭に書く”, word);

先ほどまでHello Worldと書いていた部分を%sにしています。
そして後ろにword(Hello Worldが入っている)を付け加えました。
%sとは文字列を入れる時に使うものです。

つまり、「%sの部分にHello Worldを入れた。」ということです。

ここでコンパイルすれば、以下のように想定通りの場所にHello Worldが入った状態で結果が表示されます。

※変数名のスペルミスをしているとコンパイルエラーになりますのでご注意ください。

複数出力の確認

 
次は以下の変更をしてコンパイルしてみてください。

変更前・・・string word = “Hello World”;

変更後・・・string word = “Hi Japan”;

出力する文字を変更して再度確認

 
このように1ヵ所のみの修正で、3か所の文字が変わったのではないかと思います。これでHello Worldが1万ヵ所にあっても修正は1ヵ所で済みますね。

小技ターミナルがごちゃごちゃして見づらい場合は、コンパイル前に中身をクリアしましょう。

適当なところで右クリックして、クリアしてください。

ログのクリア

 
これで綺麗になったと思います。
クリア後の画面

 

まとめ

今回はコメントと変数について学んできました。

変数は少し分かりづらい話だったかもしれませんが、現時点でそこまで深く理解している必要はないので安心してください。

プログラムを書くときに毎回出てくるものなので、進めていくうちに自然と理解が深まっていきます。

次回の「MT4/MT5で数値の計算をしてみる|MQL入門(3回目)」では、数値の計算やデータの型、エラー時の対応について学んでいきます。

今回の記事のまとめ

  • コメントは、プログラムを「見やすくする、説明する、テストで切り替える」ために用いる
  • 変数は値を入れるための箱で、string(文字列用)のように箱の種類を先頭に付けて書く
  • 変数に対しての「=」は、右辺を左辺に代入するという意味になる

 

自動売買入門のまとめは以下をご参照ください