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

2018年11月6日

オープン

プログラム初心者向けに、MQLを使ったプログラムの基礎講座を行います。

MQLとは、「Meta Quotes Language」の略で、メタトレーダー専用のプログラミング言語です。

今回はその1回目として、MT4/MT5でのプログラム実行方法とプログラミングの基本である「標準出力」までを学びます。

最終的には自動売買のプログラムを理解しながら書けるようになります。

はじめに

プログラムの入門編を始めた理由は、本格的に自動売買を始める前にプログラムの基礎だけは理解しておいた方が良いと考えたためです。

基礎部分を説明しながら、MT4/MT5で使う場合の実例もご紹介していきます。

また、この入門編をクリアしていくことで、他の言語でのプログラム(C、JAVA、Python…etc)も少しは読み書きできるようになります。

昨今ではAIブームなどによってプログラミングがとても注目を集めている状況なので、プログラムを理解しておくことに損は無いと思います。

基本的にはMT4で説明していきますが、MT5でも動作するプログラムを紹介していきます。

MT4固有のものに関してはコメントを入れるようにします。

 

準備

実行環境の準備

前提として、メタトレーダー(MT4/MT5)がPCにインストールされている必要があります。

まだインストールできていない方は、以下の業者で口座を開設して準備いただければと思います。

 

国内業者(MT4のみ)

OANDA JAPAN 口座開設
OANDA JAPAN 口座開設
OANDA JAPAN 口座開設?|?fx-on.com

外為ファイネスト 口座開設
外為ファイネスト 口座開設
外為ファイネスト 口座開設?|?fx-on.com

FXトレードフィナンシャル 口座開設
FXトレードフィナンシャル 口座開設
FXトレードフィナンシャル 口座開設?|?fx-on.com

 

海外業者

海外業者の説明は以下をご参照ください。

 

 

私が利用している業者

MT5・・・XM、HotForex、FBS、Tradeview、FXPro

MT4・・・国内が「OANDAと楽天とBitPoint」、海外が「XMとTITAN」

MT5が使える業者はMT4も利用できるので、MT5が使える業者をおすすめしますが、MT5が使えるのは海外業者のみなので抵抗がある場合は国内業者を選択してください。

※楽天とBitPointはバックテスト(自動売買の検証)にスワップの金額が加味されておらず、テスト精度が落ちるのでMT4を使うという観点で言えばあまりお勧めできません。

 

練習用プログラムの準備

MetaEditorを起動します。

※起動方法が分からない場合は、MT4/MT5を起動して「F4キー」を押下すれば起動します。

 

新規プログラム作成

(1) 「File -> New」をクリックします。

新規ファイル作成

 
(2) Expert Advisor (template)を選択して、「次へ」をクリックします。

Expert Advisor選択

 
(3) Nameに「Practice001」と入力して、「次へ」をクリックします。

※AuthorとLinkは必須項目ではないので、入力しなくても大丈夫です。

必要項目の入力

 
(4) そのまま「次へ」をクリックします。

そのまま次へ

 
(5) そのまま「完了」をクリックします。

完了をクリック
左側赤枠のように、「Experts」内に「Practice001.mq4(MT5の場合はmq5)」が表示されていればOKです。

 
右側の赤枠にはテンプレートとなるプログラムが表示されたかと思います。

新規プログラム表示

 
プログラムを下まで見てみると、以下のようにごちゃごちゃと沢山書いてあって混乱すると思いますが、使う部分は少ないので安心してください。

 

作成されたプログラムの配置場所

作成されたプログラムの物理的な配置場所を確認しましょう。

(1) 「File -> Open Data Folder」をクリックします。

データフォルダオープン

 
(2) 「MQL4(MT5はMQL5)」をダブルクリックします。

このフォルダには後々何回もアクセスすると思うので、ショートカットを作っておいても良いですね。

MQL4フォルダを選択

 
(3) 「Experts」をダブルクリックします。

Expertsフォルダを選択

 
(4) 「Practice001.mq4(MT5ならPractice001.mq5)」があることが確認できました。

Practice001の確認

 

練習

不要部分の削除

練習で使う部分は先ほどのプログラムのOnInitという部分だけなので、以下のようにそれ以外を削除してください。

 
削除したらコンパイルします。

コンパイルとはプログラム本体は、人間が見て分かるような形式で書かれていてコンピューターは理解できません。

それを理解(実行)できる形式に変換するのがコンパイルです。

下図の通り、「Compile」をクリックするか、「F7キー」を押下します。(F7はCompileのショートカットキーです。)

MetaEditorでコンパイル

 
エラーが発生していないことを確認します。

「Errors」タブに、「0 error(s), 0warning(s)」と表示されていれば問題ありません。

エラー状況確認

 
先ほどのプログラムが配置されているフォルダを確認してみましょう。

新しく「Practice001.ex4(MT5ならPractice001.ex5)」というファイルが作成されたかと思います。

ファイル生成確認

 
この「.ex4/.ex5」ファイルが、コンピューターが実行するためのファイルになります。

現時点ではあまり深く考える必要はありませんので、「プログラムを少しでも修正したらコンパイルをする。」と覚えてください。

 

お決まりのHello World

プログラム入門の最初は「Hello World」を出力するところから始めるのが一般的なので、同じようにそこからスタートします。

以下のように「printf(Hello World);」部分を追加してコンパイルしてください。

printfは、コンソールに文字を出力する関数になります。

 
これで実行可能になりました。

MT4/MT5ではチャートに実行ファイルをドラッグ&ドロップすることでプログラムが実行されますので、さっそくやってみましょう。

MT4/MT5の「エキスパートアドバイザ」に先ほど作った「Practice001」が表示されていると思いますので、チャートにドラッグ&ドロップしてください。

チャートへの適用

 
以下のウインドウが表示されたと思いますので、「全般」タブを選択してください。

自動売買は行わないので「自動売買を許可する」チェックを外して、「OK」をクリックします。

プログラム適用確認

 
「ターミナル」の「エキスパート」タブに「Hello World」と表示されました。

※ターミナルが表示されていない方は、上部にある「表示」でターミナルを表示してください。

プログラム実行結果

 
「プログラムの修正」→「コンパイル」→「チャートに適用」がMT4/MT5でプログラムを実行する基本的な流れになります。

 
一度チャートに適用したプログラムであれば、次回はコンパイルするのみで実行されますので、試しにprintf(“Hello World”);を好きな文字に変更してみてください。

 
printf(“世界一”);にしてコンパイルした結果、想定通りのメッセージが表示されたと思います。
世界一のログ

 

printfは実践でどう使うか?

色々なことに使うことができます。

例えば以下のようなケースでメッセージを出力するのに利用します。

  • 自動売買中に注文処理エラーが発生した場合・・・printf(“注文処理でエラー発生”);
  • ファイル読み書き処理でエラーが発生した場合・・・printf(“ファイル処理でエラー発生”);
  • プログラムの検証段階で正常に動いているかの確認をするとき・・・printf(“ここまで処理通過”);

 

チャート上にも表示してみる

printfをComment(“適当な文字”);としてコンパイルしてみてください。チャートの左上に記載した文字が表示されたかと思います。printfを使うのかCommentを使うのか?と迷われるかもしれませんが、慣れてくればどちらを使うべきか直ぐに判断できるようになりますので今は特に気にする必要はありません。

 

コンパイルエラーが出る場合

慣れないうちはプログラムを書いてコンパイルするとエラーになることが多いので、発生しやすいエラーを書いておきます。

 

全角スペースを使った

最初のうちは気づきづらいのですが、基本的にはプログラムで全角スペースは使えません。

例外的に使える部分もありますが、慣れるまでは半角スペースしか使わない方針で良いと思います。

 

全角文字を使った

「”」ダブルクォートなどの記号や英字も全角は使えません。

 

;(セミコロン)の付け忘れ

MQLでは文章の末尾にセミコロンを付ける必要があります。

 

スペルミス

printfと打つべきところがprinfのようにtが抜けてしまうようなケースです。

 

どうしてもエラーが直らない場合

随所でプログラムを掲載しておきますので、それをコピーして上書きしてしまってください。

 

まとめ

MT4/MT5では、プログラム実行方法がチャートにドラッグ&ドロップするという特殊なのものなので、今回はその部分の説明を重視しました。

ここまでで準備は整いましたので、次回の「MT4/MT5のコメントと変数について|MQL入門(2回目)」ではしっかりとプログラム部分をやっていきます。

今回の記事のまとめ

  • printfはコンソールに文字を出力する関数
  • MT4/MT5ではチャートに実行ファイルをドラッグ&ドロップすることでプログラムが実行される
  • コンパイルエラーが出る場合は、「全角文字が入っていないか?セミコロンを忘れていないか?スペルミスが無いか?」を確認する

 

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