【MQL5】 MT5のEA作成の勉強 その1 EAの1番簡単な作り方 + 処理順の確認

【MQL5】 MT5のEA作成の勉強 その1 EAの1番簡単な作り方 + 処理順の確認

まえがき

 FXの取引はMT4MT5に「Expert AdvisorEA)」というものを導入することで自動化できます。自動化することで、寝ている間や会社に行っている間に勝手にトレードを行ってくれるので、兼業トレーダーの強い味方です。現在、日本で最も普及している自動取引はMetaQuotes社が提供しているMT4ですが、同社は2019年3月の時点で一部ビルドのサポートを終了しており、 MT5 への意向を推奨しています。
 しかし、国内で MT5 を使用可能な業者はいまだ少なく、日本語の情報もほとんどない状態です。そこで、 MT5 用の開発言語「MQL5」について学習したいと思います。MT5の詳細は以下をご覧ください。
 https://metaquotes.co.jp/metatrader5/
MT5は「OANDA」が提供しているものを使用します。

EA自動作成をやってみる

 EA自動作成を以下の手順で行いました。

① MT5を起動します。

② ツールバーから「ツール」→「MetaQuotes言語エディタ」を選択します。

③ 起動したMetaEditerから、「新規作成」を選択します。

④ 「エキスパートアドバイザ(自動作成)」を選択します。

⑤ 名前を付けます。著作者がデフォルトでは「MetaQuotes.Ltd」となっていますので、販売などを考える場合はここも書き換えておきます。

⑥ 「追加」ボタンを押して、注文の判定に使用するインジケータを設定します。

⑦ 選択したインジケータ用のパラメーターを選択します。今回は「Parabolic SAR」を選択しました。

⑧ 「OK」を押すとシグナルが追加されます。なお、各シグナルの注文判定基準は公式リファレンスに記載されています。
https://www.mql5.com/ja/docs

⑨ 損切条件を設定します。

⑩ 利確条件を設定します。今回は10%の利益が出た時点で0.1Lotづつ決済するという設定です。

⑪ 右のようなコードがMetaEditer上に精製されます。

デバッグしながら処理の流れを見てみる

 デフォルトで入力されていた処理「OnInit」、「OnDeinit」、「OnTick」、「OnTrade」、「OnTimer」ですが、公式リファレンスの記載をまとめると以下のようなタイミングで実行されるようです。詳細は以下の公式リファレンスを、上記関数名を文字列検索してご確認ください。多分、検索して出てくる内容だけだと意味が分かりにくいので、説明文内のリンク先もしっかり確認することをおすすめします。
https://www.mql5.com/ja/docs

処理名実行タイミング
OnInit EA起動時
OnDeinit EAがアンロード(終了)される直前
OnTick 新しい相場が存在するとき(価格が更新された時)
OnTrade 以下の取引操作実行時
・ 未 決 注 文 の変 更 または削 除
・不 充 分 な資 金 または期 限 切 れによる未 決 注 文 の取 り消 し
・未 決 注 文 のアクティベーション
・注 文 、ポジション(またはその一 部 )の追 加 または決 済
・ポジションの変 更 (決 済 逆 指 及 び/または決 済 指 の値 の変 更 )
OnTimer EventSetTimer関数でタイマーを起動したクライアント端末で定期的に生成

 ざっくり言うと、 「OnInit」 で変数等の設定を行い 、「OnTick」で 取引操作、 そこでエラーがあれば「OnDeinit」でエラーメッセージを出したりした後に終了 、というのが主な流れのようです。

まとめ

 MT5用のEAを自動作成する方法を学びました。各処理の中身は、いたるところでMQL5言語で提供されているライブラリに飛んでいるせいもあって未だに理解が及んでいませんが、今後学習してゆきたいと思います。
 以前、記事で扱っているような方法でFXの過去データをPythonに読み込みましたが、最終的に機械学習AIを作ってEAに組み込めたらうれしいなぁと思っています。いつになるか、実現するかは全く未定ですがwww。

https://tedukapm.tech/?p=39