プログラミングの基本的な動きや知識がわかった上で、MQL言語について学んでいきましょう。
MQL言語とは
MQL言語はメタクォーツ言語で、
プログラミングトレーディングストラテジーのための組み込み言語となっています。
このMQL言語は、メタクォーツソフトウェア株式会社によって開発されました。
MQL言語で開発できるもの
MQL言語を活用して開発できるプログラムは大きく分けて3つになります。
- カスタムインジケーター
- EA (Expert Advisor)
- スクリプト
その中でもカスタムインジケーターとEA (エキスパートアドバイザー)が、
非常に多く開発されているプログラムです。

カスタムインジケーター
カスタムインジケーターはチャート上に様々な情報を表示するプログラムになります。
MetaTrader(メタトレーダー)には、一般的なインジケーターも標準搭載されていますが、
MQL言語を活用することで、標準搭載されているインジケーターの機能を拡張したり、
新しいオリジナルなインジケーターを開発することも可能になります。
チャートへの表示に特化しているので売買を行うことはできないです。
EA (エキスパートアドバイザー)
EA (エキスパートアドバイザー)は指定された条件に従い自動的に売買を行うプログラムです。
売買の条件は自由にプログラムでカスタマイズ可能です。
また、カスタムインジケーターを売買条件として使用することも可能です。
ただし、売買を目的にしているプログラムなので、
カスタムインジケーターほどの自由度の高い多彩な表示を行うことができないです。
スクリプト(Script)
スクリプトは、チャートに設定した際に一回だけ処理を行うプログラムです。
カスタムインジケーターやEA (エキスパートアドバイザー)などは新しい価格を受信するたびに
継続して動作するプログラムですが、スクリプトは継続して動作を行うことはなく、
設定された際に一回限り動作する仕組みになっています。
スクリプトは、裁量トレードの補助をするような機能で活用されます。
MQL言語のメリット・デメリット
MQL言語のメリット・デメリットについてご紹介します。
- 自分で思いつくことは何でも実現可能
- 自分がプログラムの中身を全て理解しているので安心
- プログラムの知識が上がる
- 市販で売られているEAの中身が理解できる
- 勝てるシステムを作るのが難しい
- 作成に時間がかかる
- プログラムの不具合による損失リスクもある
メリット1:自分で自由で思いつくことなら何でも実現できる
メリットの1つ目は、自分で自由で思いつくことなら何でも実現することが可能です。
どんな手法やロジックを使ってEAを作るのかなどを自分の頭で考えて作成することができます。
MQL言語をマスターできれば、FXやバイナリーオプションなどで利用する
カスタムインジケーターやEA(エキスパートアドバイザー)を作成できるようになります。
メリット2:自分がプログラムの中身を全て理解しているので安心
メリットの2つ目は、自分がプログラムの中身を全て理解しているので安心できるということです。
通常プログラムのソースコードを見てもどんな動きをするのかは開発者自身しかわかりませんが、
自分でMQL言語でプログラムを作っていけば、どのように動くのか理解することが可能です。
メリット3:プログラムの知識が上がる
メリットの3つ目は、プログラムの知識が上がるということです。
MQL言語をマスターすれば、プログラミングが上達するので他の言語でもその知識を活用することが可能です。
メリット4:市販で売られているEAの中身が理解できる
自作EAのメリットの4つ目は、市販で売られているEAの中身が理解できるということです。
自分で一からEAを作っていれば、
どのように動いているのかなどをある程度理解できるようになるので、
市販のEAのロジックも感覚的に理解できてしまいます。
デメリット1:勝てるシステムを作るのが難しい
デメリットの1つ目は、勝てるシステムを作るのは非常に難しいと言うことです。
もちろんMQL言語を学ぶ主な目的は勝ちたいと思っている人がほとんどですが、
勝てるシステムを作るためには非常に難易度が高く、結局自分でできないから諦めてしまう人がほとんどです。
デメリット2:作成に時間がかかる
デメリットの2つ目は、どうしても作成に時間がかかるということです。
どうしても自分で一から作ろうとなると非常に時間が必要になるので根気のいる作業になります。
デメリット3:プログラムの不具合による損失リスクもある
デメリットの3つ目は、プログラムの不具合による損失が出ることもあるということです。
やはりプログラミングを始めたばかりだとどうしても不具合が発生しがちなので、
実際に稼働してみて使ってみたら暴走モード突入してお金が吹っ飛んだということもあります。
MQL4とMQL5の違い
MQL4とMQL5の違いについて説明します。
- 古い
- MT4に対応
- C言語ベース
- 日本語解説が多い
- コードが短い
- バックテストや最適化が遅い
- バッファの最大8個
- 最新版
- MT5に対応
- C++言語ベース
- 日本語解説が少ない
- MQL4よりコードが長くなる
- バックテストや最適化が早い
- バッファの最大500個
MQL5はMQL4の進化版ですし世界の流れはMQL5です。
MQL5ではC++言語を使用しており、MQL4で使用されているC言語の拡張版です。
そしてバッファが8個しか使えないという成約がMQL4にはあります。
ただしこれは、配列データをシフトさせる動きを記載しておけば良いので、
工夫すれば問題ありません。
これだけ見るとMQL5の方が良いのではないか?と思う人もいると思いますが、
現状、日本ではMQL5の解説が少なくMQL4が主体です。
また、MQL5だとソースコードがMQL4よりも長くなることがあるので、
プログラミング初心者やMQL言語を触ったことがない人は、
まずはMQL4で基礎を学んだ方が良いと思います。
ちなみにMQL4で書いたプログラムのソースコードはMQL5への変換が可能です。

mq4ファイルとex4ファイル
mq4ファイルとex4ファイルの違いはシンプルに中のソースコートが見れるかどうかの違いになります。
ですので、基本的に販売などする時はex4ファイルで渡すことが大切です。
もし、ソースコードを共有しているのであればmq4ファイルを使いましょう。
MQL言語のエディタ
エディタとはデータの作成や編集を行うためのソフトウェアになります。
MQL言語の開発には通常、MT4に標準搭載されているMetaEditor(メタエディタ)という
エディタが用いられる事が多いです。

MetaEditor(メタエディタ)以外で開発したいという方は、
Visual Studio Code(VSCode)や

Sublime Text 3で開発するのも良いです。

MQLプログラミングの開発環境
MQLプログラミングの開発環境について説明します。

MQL言語の勉強方法
MQL言語の勉強方法について説明します。

MQL言語のオススメの本
MQL言語を学ぶためにオススメの本は以下の記事を参照してください。

MQL4プログラムで知っておきたい知識
MQL4プログラムで知っておきたい知識について説明します。
プロパティの定義
プロパティとは、MQLの設定に関する定義でソースコードの先頭に記述します。
プロパティは様々な種類があり、作成するプログラムによっては、定義が必要なプロパティもあります。

パラメーターの定義
パラメーターはMQLプログラムを使用するユーザーが後から自由にカスタマイズ可能な項目になります。
inputと記載している変数はパラメーター扱いになります。
プログラムをチャートに設定した際に表示される
ウィンドウのパラメーター入力タブで項目の設定内容を変更することが可能です。

イベントハンドラの定義
イベントハンドラとは、特定の条件を満たすことで呼ばれる関数で、
MQLプログラミングは主にイベントハイドラの関数内に記述することになります。
つまり、プログラムのコアの部分です。
プログラムの種類によっては必要なイベントハイドラの種類が異なるので、
作成する内容に合わせてソースコードを内に処理を記述しましょう。

コンパイル
コンパイルとは、プログラミング言語で書かれたソースコードを
コンピュータ上で実行可能な形式に変換することです。
簡単に言えばPCに分かりやすい形に翻訳する作業です。

デバッグ
コンパイルが正しく成功すれば問題ないですが、不具合があるとエラーが表示されます。
そのエラーを取り除く作業をデバッグと言います。

Point変数
PointとはMQLでの注文する際の最小単位になります。
トレードの世界ではPips扱います。
従来は通貨ペアは小数点以下2桁・4桁業者しかなかったのでPips表記で良かったのですが、
最近では、少数点以下3桁・5桁業者があるのでPoint変数を活用する必要があります。

時刻関数
時刻関数は時間に関する関数になります。時間はインジケーターやEAなどで活用されることが多いです。

enum
enumは列挙型と呼ばれており、いくつかの定数をひとまとめにすることができる優れものです。
enumはタイムフレームなどでよく使用されるので、
MTF(マルチタイムフレーム)系のインジケーターやEAを作成する際に重宝されます。
-320x180.png)
まとめ
今回は、MQL言語について詳しく紹介しました。
少し難しい内容もあったと思いますが振り返り何度も見直して理解してから次に進みましょう。