FX-EA System Projectはこちら公式ラインに登録して
プレゼントをもらう

EAやカスタムインジケーターを作るための専用のプログラミング言語『MQL言語』についてわかりやすく説明してみた

プログラミングの基本的な動きや知識がわかった上で、MQL言語について学んでいきましょう。

MQL言語とは

MQL言語はメタクォーツ言語で、

プログラミングトレーディングストラテジーのための組み込み言語となっています。

このMQL言語は、メタクォーツソフトウェア株式会社によって開発されました。

MQL言語で開発できるもの

MQL言語を活用して開発できるプログラムは大きく分けて3つになります。

  • カスタムインジケーター
  • EA (Expert Advisor)
  • スクリプト

その中でもカスタムインジケーターとEA (エキスパートアドバイザー)が、

非常に多く開発されているプログラムです。

【MQL言語入門】MQLプログラミングで開発できる3つのシステムについてまとめてみた
MQL言語で開発できること MQL言語で開発できることは大きく分けて以下の3つになります。 カスタムインジケーター EA(エキスパートアドバイザー) スクリプト その中でもカスタムインジケーターと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の違いについて説明します。

MQL4
  • 古い
  • MT4に対応
  • C言語ベース
  • 日本語解説が多い
  • コードが短い
  • バックテストや最適化が遅い
  • バッファの最大8個
MQL5
  • 最新版
  • 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ファイルの違いはシンプルに中のソースコートが見れるかどうかの違いになります。

mq4ファイル
テキストエディタで開くことができるファイル。
ex4ファイル
バイナリーデータで、中のインジケーターのプログラムを見ることができないファイル。

ですので、基本的に販売などする時はex4ファイルで渡すことが大切です。

もし、ソースコードを共有しているのであればmq4ファイルを使いましょう。

MQL言語のエディタ

エディタとはデータの作成や編集を行うためのソフトウェアになります。

MQL言語の開発には通常、MT4に標準搭載されているMetaEditor(メタエディタ)という

エディタが用いられる事が多いです。

【MQL言語入門】MT4に標準搭載されている『メタエディタ(MetaEditor)』についてわかりやすく説明してみた
メタエディタ(MetaEditor) メタエディタ(MetaEditor)とはMT4標準搭載されているエディタになります。 メタエディタ(MetaEditor)を活用することで、 カスタムインジケーター EA ...

MQLプログラミングの開発環境

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

【MQL言語入門】MQLプログラミングをする上での開発環境についてわかりやすく説明してみた
MQLプログラミングをする上で必要なもの MQLプログラミングをする上で必要なものですが、4つあれば始めることができます。 インターネット環境 PC MetaTrader4 エディタ では、それぞ...

MQL言語の勉強方法

【MQL言語入門】爆速で成長するMQLプログラミング初心者にオススメの勉強方法についてまとめてみた
MQLプログラミング初心者は勉強の仕方がわからない MQLプログラミング初心者は勉強の仕方がわからない人も多いです。 私ところに来る質問で一番多いのが、 プログラミング初心者は何から勉強を始めたらよいですか?という質問です。 ...

MQL言語のオススメの本

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

【MQL言語入門】MQLプログラミングをゼロから本気で学ぶためにオススメの本6選
MQLプログラミングをゼロから本気で学ぶためにオススメの本6選 MQL言語を学ぼとしてもどの本を読んだらいいか初心者にはわからないですよね。 今回は、MQLプログラミングをゼロから本気で学ぶためにオススメの本6選をご紹介します。 ...

MQL4プログラムで知っておきたい知識

MQL4プログラムで知っておきたい知識について説明します。

プロパティの定義

プロパティとは、MQLの設定に関する定義でソースコードの先頭に記述します。

プロパティは様々な種類があり、作成するプログラムによっては、定義が必要なプロパティもあります。

【MQL言語入門】様々な情報を表示することが可能な『プロパティ(#property)』について徹底解説してみた
プロパティ プロパティとはMQL4プログラムの設定に関する定義で、通常はソースコードの先頭に記述します。 #propertyはプリプロセッサ指令の1つであり、コンパイル前にプリプロセッサによって処理されます。 プロパティでEA...

パラメーターの定義

パラメーターはMQLプログラムを使用するユーザーが後から自由にカスタマイズ可能な項目になります。

inputと記載している変数はパラメーター扱いになります。

プログラムをチャートに設定した際に表示される

ウィンドウのパラメーター入力タブで項目の設定内容を変更することが可能です。

【MQL言語入門】利用者が自由に設定や変更するための『パラメーター』についてわかりやすく説明してみた
パラメーター MT4を利用する際にインジケーターのパラメーターやEAなどのロット数やマジックナンバーなど、 利用者が自由に設定や変更したい数値があります。 これらの数値を変数として宣言することで外部パラメーターとして利用するこ...

イベントハンドラの定義

イベントハンドラとは、特定の条件を満たすことで呼ばれる関数で、

MQLプログラミングは主にイベントハイドラの関数内に記述することになります。

つまり、プログラムのコアの部分です。

プログラムの種類によっては必要なイベントハイドラの種類が異なるので、

作成する内容に合わせてソースコードを内に処理を記述しましょう。

【MQL言語入門】特定の条件を満たすことで呼ばれる『イベントハンドラ関数』について徹底解説してみた
イベントハンドラ イベントハンドラとは特定の条件を満たすことで呼ばれる関数のことです。 MQL4のプログラムは主にこのイベントハンドラの関数内に記述することになります。 プログラムの種類によって必要なイベントハンドラの種類が異...

コンパイル

コンパイルとは、プログラミング言語で書かれたソースコードを

コンピュータ上で実行可能な形式に変換することです。

簡単に言えばPCに分かりやすい形に翻訳する作業です。

【MQL言語入門】ソースコードをコンピューター上で実行可能な形式に翻訳する『コンパイル』について徹底解説してみた
コンパイル コンパイルとはプログラミング言語で書かれたソースコードを コンピューター上で実行可能な形式に変換することです。 コンパイルを行うソフトウェアをコンパイラと呼び、 変換されるプログラミング言語をコンパイ...

デバッグ

コンパイルが正しく成功すれば問題ないですが、不具合があるとエラーが表示されます。

【MQL言語入門】バグの原因を突きとめる『デバッグ』について徹底解説してみた
デバッグとは デバッグとはバグと呼ばれるプログラムや関数の間違いを発見して排除する作業です。 バグフィックスとも呼ばれることがあります。 デバッグ(debug)のbugは英語で欠陥を意味しており、直訳すると欠陥を取り除...

Point変数

PointとはMQLでの注文する際の『最小単位』になります。

トレードの世界ではPips扱います。

従来は通貨ペアは小数点以下2桁・4桁業者しかなかったのでPips表記で良かったのですが、

最近では、少数点以下3桁・5桁業者があるのでPoint変数を活用する必要があります。

【MQL言語入門】通貨の最小価格単位を表す変数『Point』についてわかりやすく説明してみた
Point MQL4で注文する際にPointを使います。 MQLにはPipsという概念が存在しません。ですのでMQLでは直接価格を指定したり、 Pointという値を活用します。 PointとPipsの違いについて Poin...

時刻関数

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

【MQL言語入門】日付と時間を扱う『時刻関数』についてわかりやすく説明してみた
時刻関数 今回は日付と時間を扱う時刻の関数系をご紹介したいと思います。 DayOfWeek() DayOfWeekは、現在の曜日の関数になります。 int DayOfWeek();//1:月曜日、2:火曜日....) Year()...

enum

enumは列挙型と呼ばれており、いくつかの定数をひとまとめにすることができる優れものです。

【MQL言語入門】定数をひとまとめにすることができる『Enum(列挙型)』についてわかりやすく説明してみた
Enum(列挙型) Enum(列挙型)とは、複数の定数をひとつにまとめておくことができる型のことです。 定数をひとまとめにすることができる優れものです。 Enumで定義する定数のことを列挙子と呼びます。 Enumの特徴 E...

まとめ

今回は、MQL言語について詳しく紹介しました。

少し難しい内容もあったと思いますが振り返り何度も見直して理解してから次に進みましょう。

タイトルとURLをコピーしました