11
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【FX自動売買】MQL4を使った簡単なEAの作り方【MT4】

Posted at

EAを作りたい

FXを自動売買できるツールをEA(Expert Adviser)という。
良いEAを作れば利益を出すことができるし、EAを売って儲けることもできる。
機械学習とかを使えば高性能なEAを作り出すことも可能なのではと思い調べてみた。

Pythonと機械学習

機械学習といえばライブラリが充実しているPythonが使われることが多い。
手前味噌ではあるが、以前Pythonで決定木を利用したFX予測をする記事を書いた。
あくまでこれは練習用に決定木を使ってみただけなので、LightGBMやらLSTMやらを使って本気でやればもっと精度は上がると思う。

また、国内のFX業者で言えばoandaが外部APIを公開しているため、これを叩けばPythonのスクリプトから売買を行うこともできる。
これも以前記事を書いた。

MT4とMQL4

一方で、このままEAとして売り物になるかと言えば答えばNOだ。
なぜかと言うと、上であげたスクリプトではPythonを動かして外部APIを叩くという少々高度なやり方で売買を行なっているためだ。
EAとして売るためにはプログラミングに詳しくない一般的なユーザでも使えるようなEAを作る必要がある。

現在FXの取引に最も使われいてるのがMT4 (Meta Trader 4)だ。

様々な時間足やテクニカル指標を表示できるほか、EAを組み込むこともできる。
そしてこのMT4のEAとして組み込むにはMQL4と呼ばれるC++をベースにした言語を書く必要がある。

なお、MT4より新しい(そして高性能な)MT5が出ており、こちらを使うの場合はMQL5という言語を使う必要がある。
MQL5はMQL4と微妙に言語使用が違ったりするので注意が必要だが、現在MT4でEAを使うユーザの方が多いためここではMQL4でEAを作ることを目指す。

環境

  • OS: Windows 10
    • 本当はLinuxかMacを使いたかったが、MT4でEAを使う場合Windowsが一般的なのでしょうがなく使う
  • PCにMT4がインストール済、口座にログイン済を想定
    • 練習用の場合はデモ口座が安全
    • 口座はどこでもいいのだけど、自分はXMという海外口座で試した

MT4のインストール及び口座へのログイン手順は調べてば出てくるので省略。

やってみる

参考にしたサイト

EAの新規作成

MT4の起動後、「ツール」から「新規作成」を選ぶ。
image.png
エキスパートアドバイザ(テンプレート)を押す。
image.png

EAの名前はExperts\の後につける。ここではtestとした。
image.png

イベントハンドラの選択画面が出てくるが、とりあえずこのまま進む。

コンパイルと実行

以下のコードが表示されるはず。

test
//+------------------------------------------------------------------+
//|                                                         test.mq4 |
//|                        Copyright 2021, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
# property copyright "Copyright 2021, MetaQuotes Software Corp."
# property link      "https://www.mql5.com"
# property version   "1.00"
# property strict
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   
  }
//+------------------------------------------------------------------+

関数だけが定義されていて、中身は空っぽだ。

コードの説明は後でやるとして、とりあえずコンパイルしてみよう。
メタエディタの上部のUIからコンパイルを押してみる。
するとエディタ下部に実行結果がでてくるので、エラーが出てないことを確認する。
image.png

今編集しているソースコードがtest.mq4で、コンパイルしてできたのがtest.exとなる。
MT4のナビゲーターのエキスパートアドバイザを見ると、新しく「test」ができていることがわかる。(もしできてなければ右クリック-> 更新)
このtestをチャートにドラッグ&ドロップすればEAを適用することができる。
今はコードの中身が空っぽなので何も起きない。

MQL4をいじる

さて、あとはMQL4にやりたい処理を書いていくことでオリジナルのEAを作ることができる。
以下のサイトなんかが参考になった。(このへん追記するかも)

まとめ

機械学習を行いたい場合はPythonのライブラリが必要になるのでMQL4だけではなく外部のAPIか何かをたたく必要がある。
だが、いずれの場合にせよ、EAの入り口と出口はMQLで実装することになるためこれらの知識は必要。
具体的な実装についてはまた今度。

11
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?