MQL5 EAの基礎——MetaTrader 5のロボットは本当はどう動くのか

最終確認日: · 普遍的な内容
リスク警告 · YMYL この記事は教育目的のみのものであり、投資助言を構成するものではありません。Forex取引には資金を失う高いリスクが伴います — ESMAによれば、個人投資家口座の74〜89%が損失を出しています。

MQL5で書かれたExpert Advisorは、MetaTrader 5のチャート上に常駐する小さなアプリケーションです。新しいティックが届くたびに、あなたがエントリー条件として定義した状況がたった今発生したかどうかを確認します。条件が満たされれば、EAは自ら注文を出します——許可を求めることはありません。この記事では、EAが内部でどう組み立てられ、プラットフォームやFX会社とどうやり取りし、そして実際にどんなときに動かす意味があるのかを説明します。これはプログラミングの入門書ではありません。

MQL5におけるExpert Advisorとは何か

MQL5は、MetaTrader 5プラットフォーム専用に作られた、C++に近い言語です。Expert Advisorはその言語で書かれた単一のプログラムで、バイナリの.ex5ファイルにコンパイルされ、インジケーターと同じようにチャートに取り付けられます。両者の違いは権限に行き着きます。インジケーターはチャートに描画するだけですが、EAはあなたの取引口座に対して実際の注文を出すことが許されています。プラットフォームの権限モデルにおけるこの一行が、受動的な表示と自律的な自動化とを分けているのです。

「EA」は一般的な「取引ロボット」と何が違うのでしょうか。違いはエコシステムだけです。Pythonで書かれたロボットもまたロボットであり、ただ端末の外側に存在し、たいていはREST APIかFIXプロトコルを介してFX会社に接続するというだけのことです。一方EAは、定義上、MT5の内部で生きています。自動売買の全体像をつかみたい方は、まず実践ワークショップのカテゴリーから、ツールの使い方を一通り押さえておくとよいでしょう。

EAはプラットフォームとどう話すのか——OnInit、OnTick、OnDeinitのサイクル

すべてのExpert Advisorは、プラットフォームが代わりに呼び出す3つのイベントによって生活のリズムが決まります。OnInitは、EAがチャートに取り付けられたとき、あるいは端末が再起動したときに、ちょうど一度だけ発火します。このときEAは入力パラメータを読み込み、依存するインジケーターへのハンドルを開き、ティックを受け取る準備が整ったことを知らせます。

2番目のイベントが最も重要です。OnTickは、EAが乗っているシンボルについて、FX会社から新しいクオートが届くたびに呼び出されます。ロンドン時間のEUR/USDのような流動性の高い通貨ペアでは、これが1秒間に数十回起こることもあります。OnTickの内部で、EAは現在の価格がエントリー条件を満たすか、損切り(ストップロス)を動かす必要があるか、あるいは保有中のポジションを決済すべきかを判断します。戦略のロジックはすべて、このひとつの関数の中に収まっています。

3番目のイベントOnDeinitは、EAがチャートから外されたとき、シンボルが変更されたとき、あるいはMT5が終了するときに呼び出されます。その役割は後片付けです——インジケーターのハンドルを解放し、状態を保存し、ログファイルを閉じます。OnTimerやOnTradeといった補助的なハンドラーはあえて省きます。それらは原理を変えるものではないからです。どのEAも、突き詰めればMT5から渡されたものに反応する、イベント処理プログラムなのです。

EAはどうやって注文を出すのか——CTradeクラス

構文に踏み込まずに理解しておく価値のある2つ目のことは、EAがFX会社とどう通信するかです。MT5では、人間がインターフェースをクリックするように単純に「買いを送る」ことはできません。すべての注文は構造化されたリクエスト——MqlTradeRequest——として送られ、サーバーは、注文が通ったのか、それとも証拠金不足・不正なストップレベル・許容スリッページ超過といった理由で拒否されたのかを示すコードを含む結果を返します。

こうした構造体を手作業で埋めるのは骨が折れるため、MetaQuotesは標準ライブラリにCTradeというクラスを用意しており、Buy、Sell、PositionClose、OrderModifyといった便利なメソッドで一切を包み込んでいます。フォーラムでは細かな点が延々と議論されています——Buy(volume, symbol)を使うべきか自分でリクエストを埋めるべきか、リクオートをどう扱うか、急騰急落の場面でスプレッドやスリッページにどう反応するか、といった具合です。大半の個人向け戦略には、CTradeで十分すぎるほどです。

Strategy Tester——EAが過去をただ暗記しただけでないかを確かめる

MT5に内蔵されたStrategy Testerは、MT4の従兄弟よりもはるかに本格的なツールです。EAに過去のティック(バーから生成されたもの、あるいはMetaQuotesサーバーからの本物のティック)を流し込み、パラメータの組み合わせを変えて数千回のパスを走らせ、資産曲線(エクイティカーブ)、ドローダウン、プロフィットファクターを含むレポートを出力します。

困ったことに、あなたの仕事を検証するためのこの同じテスターが、しばしば幻想の製造装置になってしまいます。全履歴にわたってパラメータを最適化すると、ほぼ必ず糸のように滑らかな曲線が得られ、その曲線はEAが実際の資金にぶつかった途端、ほぼ必ず崩れ去ります。この現象にはカーブフィッティング(曲線あてはめ)という名前があり、不運ではなく数学的な必然です。その対策——データを最適化用の期間(in-sample、たとえば2018–2022)と検証用の期間(out-of-sample、たとえば2023–2024)に分割し、検証期間ではパラメータをいじらずにEAを走らせること、そして理想的にはその上にウォークフォワード分析を重ねること——については、トレード戦略のカテゴリーで扱う検証の考え方が出発点になります。

過去データで利益を出した戦略が、将来も利益を出すとは限らない。過去データはあり得る相場状態という宇宙のごく小さな標本にすぎず、その標本に対してパラメータを最適化することは、まさに言葉どおり——標本へのあてはめなのだ。 — Ernest P. Chan, 2013

EAが本当に役立つとき、そして害になるとき

EAを動かす意味があるかどうかは、戦略に大きく左右されます。EAが本物の優位性(エッジ)をもたらす状況が3つあります。人間が心理的に貫けないルールを一貫して執行すること(月に二百回のスキャルピングを想像してください)、世界の大半が眠っているアジアセッション中に24時間市場を監視すること、そして判断を1秒以下で下さなければならない領域での取引——人間では単純に遅すぎる領域です。

EAは、判断が必要な場面ではどこでも力を発揮できません。非農業部門雇用者数(NFP)の発表に対する取引、現在の値動きが本物の相場の地合い(market regime)の変化なのか一時的なノイズなのかの見極め、地政学的な文脈の解釈——その多くがEAには不向きです。MQL5フォーラムの独立した調査による統計は容赦ありません。Marketplaceで売られるEAの明らかな多数派が、つやつやしたバックテストのチャートとは裏腹に、運用初年度のライブ取引で損失を計上しています。これは売り手の悪意ではありません——美しいバックテストは安く手に入り、本物の優位性は稀なのです。

自分でEAを書く価値はあるか

自分が取引する戦略を理解していて、それを裁量の余地が残らないほど精密なルールとして記述できるなら、自分専用のEAを作ることは、この分野で投じられる時間の最良の投資です。MQL5のドキュメントと簡単なテストプロジェクト、そしてStrategy Testerに3〜6か月向き合えば、どんな購入済みロボットの詰め合わせも与えてくれない知識が身につきます。

2つ目の理由は実務的なものです。EAは週5日・24時間動き続けます——ただし、それが乗っているマシンもまた24時間動き続ける場合に限ります。一本のケーブルに電源を頼っている家庭のデスクトップでは足りません。だからこそVPSが別の役割を果たすのですが、これは取引プラットフォームのVPS・FX会社の所在地・レイテンシーに関する解説で扱います。同じEAでも、FX会社のサーバーとEAが乗るマシンとの間のレイテンシー次第で、目に見えて異なる結果を生むことがあるのです。

今すぐやるべきこと

  1. FX会社のサイトからMetaTrader 5をダウンロードしてデモ口座を開き、Strategy Testerのタブへ進んでください。内蔵のサンプルEA(Moving AverageまたはMACD Sample)をEUR/USDのH1に読み込み、一度パスを走らせ、出力されたレポートを丁寧に読んで、資産曲線・ドローダウン・プロフィットファクターといった基本指標が実際にどう見えるかを確かめましょう。
  2. mql5.com/en/docsの公式MQL5ドキュメントを開き、OnInit、OnTick、CTradeクラスの3つの章だけを読んでください。まだ何も書こうとしなくて構いません。目的は、ドキュメントがどう構成され、必要になったときに動く例をどこで探せばよいかを知ることです。
  3. あなたの戦略を「もしXかつYならレベルZのストップを置いて買いで入る」という形の論理ルールとして書き出してください。1時間たってもルールに「文脈次第で」や「直感的に」といった言葉が残っているなら、それは自動化では救えない裁量戦略です。コードを書く前に、まずは戦略づくりの土台に立ち返りましょう。
  4. ルールが曖昧さなく書けたなら、学習の計画を立ててください。MetaQuotesのドキュメントでMQL5の基礎をおよそ3か月、加えて移動平均クロスに基づく可能な限り単純なEAを組む1週間程度のサイドプロジェクトを。そのひとつのプロジェクトが、購入したロボット10個よりも多くを教えてくれます。
  5. 実際の資金で何かを走らせる前に、現在のクオートを使ったデモでのフォワードテストを最低1か月は自分に課してください。バックテストはフォワードテストの代わりにはなりません——フォワードテストは、バックテストには見えないFX会社の執行レイテンシーをあぶり出してくれます。
Jarosław Wasiński
著者について

Jarosław Wasiński

MyBank.pl 編集長 · 金融・市場アナリスト

金融業界で20年以上の経験を持つ独立系アナリスト兼実務家です。2004年から運営されているポータルサイト MyBank.pl の創設者であり編集長を務めています。2007年から外国為替市場とマクロ経済のファンダメンタル分析を行っています。グローバル市場の視点から執筆し、欧州(ESMA)および日本(金融庁/FSA)の規制枠組みにも目を配っています。

出典・参考文献

  1. MetaQuotes MQL5 Reference — OnTick event handler · oficjalna dokumentacja zdarzenia wywoływanego na każdą kwotację www.mql5.com ↗
  2. MetaQuotes MQL5 Standard Library — CTrade class · klasa biblioteki standardowej do składania zleceń przez EA www.mql5.com ↗
  3. MetaQuotes MetaTrader 5 — Strategy Tester documentation · narzędzie do backtestowania i optymalizacji EA www.metatrader5.com ↗

よくある質問

MQL5のEAはPythonの「ボット」と何が違うのですか。

ロジックの観点では——まったく違いません。どちらも、市場の条件を定期的に確認して注文を送るループに行き着きます。違いはエコシステムです。MQL5のEAはMetaTraderの子です。チャートに取り付き、内蔵のインジケーターを利用し、Strategy Testerを使います。Pythonのロボットは端末の外側で生き、外部からFX会社に接続します——たいていはREST APIかFIXプロトコル経由です。戦略がMT5のインジケーターに依存していて内蔵のテスターが必要なら、EAに分があります。機械学習ライブラリや統計を使いたい、あるいは複数のソースのデータを組み合わせたいなら、Pythonに分があります。

EAを動かすにはプログラミングができる必要がありますか。

他人のEAをただ動かすだけなら——いりません。.ex5ファイルをチャートにドラッグし、パラメータを設定して、AutoTradingを有効にするだけです。本当の難しさはその先から始まります。MQL5を知らなければ、ロボットが内部で実際に何をしているのか、スリッページにどう反応するのか、ひそかにマーチンゲール手法を使っていないかを検証できません。MQL5 MarketのEA販売者は、最も重要なパラメータをユーザーから隠していることがよくあります。ソースコードを開く力がなければ(そして大半の商用EAは非公開です)、盲目的に信じるほかなくなります。だからこそ私は、言語の基礎を学ぶことへの投資をお勧めします——数週間ドキュメントに向き合えば、自分が何を読んでいるのかを理解できるようになります。

なぜStrategy Testerは素晴らしい結果を示すのに、実取引では損失になるのですか。

Strategy Testerは最適化のツールであって、予測のツールではないからです。最良の資産曲線を生むパラメータを求めて全履歴データをくまなく探せば、その特定の標本では素晴らしい結果を出す組み合わせを——ほぼ確実に——見つけられます。しかしその標本でだけのことです。この現象はカーブフィッティング(過剰最適化)と呼ばれ、数学的な必然です。対策は、データを最適化用の期間(in-sample、たとえば2018–2022)と検証用の期間(out-of-sample、たとえば2023–2024)に分け、検証期間ではパラメータをいじらずにEAを走らせることです。検証期間で一貫した結果が出て初めて、あなたが見ているのが見せかけの産物ではないと考えられるようになります。ウォークフォワード分析はさらに一歩進み、学習用とテスト用の窓を全履歴にわたってずらしていきます。

EAを動かすにはVPSが本当に必要ですか。

1秒以下で反応する戦略には——議論の余地なく、必要です。1日に数十回の注文を出すEAを動かすスキャルパーは、家庭の回線が途切れたりコンピュータがスリープに入ったりするたびに優位性を失います。FX会社のサーバーと同じデータセンターに置いたVPSなら、レイテンシーを約五十ミリ秒から数ミリ秒まで削れます。週に一度だけ取引するポジション戦略なら、VPSは快適さであって必須ではありません——UPS(無停電電源装置)を備えた家庭用デスクトップで十分です。MT専門のプロバイダーでの費用は、今では月あたりおおむね15〜50 EURです。FX会社によっては、一定の入金額または取引量を超えると無料のVPSを提供するところもあります。なお国内で口座を開く際は、金融庁(FSA)の登録を受けた業者を選び、無登録の海外業者には注意してください。

さらに深く · 完全ガイド