Titan FX(タイタンFX)

MQL5 入門:MQL5 とは?初心者が MT5 で EA 自動売買プログラムを書く完全ガイド

MQL5 入門:MQL5 とは?初心者が MT5 で EA 自動売買プログラムを書く完全ガイド

外国為替やマルチアセット取引で、執行効率と戦略の安定性をどう高めるかは多くのトレーダーの関心事です。MQL5 は MetaTrader 5(MT5)プラットフォームと組み合わせ、より強力なオブジェクト指向アーキテクチャとマルチスレッド演算機能を備えており、実行速度が速く、ロジックが安定した EA(Expert Advisor)を開発できます。

本記事は MQL5の入門ガイド をゼロから初学者向けに体系化したものです。MetaEditor の環境設定から始め、MT5 の Tick(気配駆動)動作ロジック を順に押さえます。基本構文とイベント関数を解説し、Titan FX の無料 EA リソースとリアルタイムのフォワードテストデータを組み合わせて、効率的な自動売買システムを段階的に組み上げる道筋を示します。

この記事でわかること
  • MT5 の Tick(ティック)駆動の仕組みと、MQL5 が果たす役割
  • MetaEditor 5 を使った EA 開発フロー(.mq5 → コンパイル → .ex5)
  • 必須の構文:4 つのデータ型(int/double/string/datetime)と 4 つのイベント関数(OnInit/OnTick/OnTimer/OnDeinit)
  • MQL5 開発でよくあるエラー(コンパイル・発注・指標 Handle)と安定化のコツ
  • Titan FX が提供する 70 本以上の無料 EA とフォワードテストランキングの活用法

1. MQL5 とは?MT5 と Tick(ティック)駆動の仕組み

MQL5 は、MetaQuotes が MetaTrader 5(MT5)のために設計したモダンなプログラミング言語で、構文は C++ に近い特徴を持ちます。トレード戦略をより効率的な自動売買システムへ落とし込めます。

MT5 で作成できる 3 種類のプログラム

  • EA(Expert Advisor、自動売買プログラム): 売買執行・損切り益出し・資金管理を自動化する自動売買のコアツール(本記事の主題)
  • カスタムインジケーター: テクニカル指標やカスタムシグナルをチャート上に描画し、相場判断を補助する
  • スクリプト(Script): 一回限りのタスク(一括決済など)を実行し、終わったら停止する

MT5 の基本的な動作ロジック(EA を例に)

MT5 は Tick(気配の更新) を基本単位として動きます。価格が動くたびに 1 つの Tick が発生します。

EA をチャートにアタッチすると:

  • MT5 が最新の Tick データを EA に送り続けます
  • EA は主に OnTick() 関数でそれを受け取り、取引ロジックを実行します

ポイント: すべてのエントリー/エグジット判定は OnTick() の中に書きます。これが EA の中心的な処理です。

2. MQL5 で EA を書く:MetaEditor 5 の操作フロー

MT5 の MetaEditor 5 を起動し、次の手順で開発を進めます。

  • ① MT5 にログイン → ナビゲーションバーの「IDE」をクリックして MetaEditor を起動
  • ② 「New」→「Expert Advisor (template)」または「Expert Advisor (generate)」を選択。「Expert\」配下に名称と作者情報を入力して進む
  • ③ 必要に応じて EA の取引時間処理ハンドラを選択(チェックなしで次へ進んでも構いません)
  • ④ エディタ領域でコードを書く(拡張子は .mq5)。完成したら「Compile」をクリックしてコンパイルを実行。成功すると .ex5 実行ファイルが生成される
  • ⑤ MT5 に戻り、「Navigator」→「Expert Advisors」からファイルを選んでチャートにドラッグ&ドロップしてアタッチ完了
MQL5 で EA コードを書いて保存・コンパイル確認する手順

※ 初学者は「EA をロードしても無反応」になりやすく、たいてい「自動売買を許可」設定が無効です。MT5 上部の「自動売買」ボタンが緑になっていることを必ず確認してください。「Tools」→「Options」→「Expert Advisors」を開き、「Allow algorithmic trading」にチェックを入れます。必要に応じて禁止条件(Disable AutoTrading)を併用します。

MT5 EA が動かない場合に自動売買を有効化する設定画面

3. 基本構文:データ型とイベント関数

MQL5 の構文は階層が明確で、基本的なデータコンテナとトリガー機構を押さえれば、論理的に厳密な EA を組み立てられます。

よく使うデータ型

MQL5 でデータを定義する際、適切なコンテナを選ぶと演算効率と安全性が両立します。

データ型説明使い方の例
int小数を含まない整数を保持注文番号、テクニカル指標の期間設定
double高精度の小数値を保持商品レート、ロットサイズの計算
stringテキスト内容を保持取引メモ、メール通知の本文
datetime日時データを保持EA を特定の時間帯のみ稼働させる制御

EA の主要イベント関数

MQL5 は前世代より豊富なイベント処理を備えますが、初学者はまず以下の 4 つの心臓部を優先的に押さえます。

関数名実行タイミング主な役割
OnInit()EA がチャートにロードされたときテクニカル指標 Handle の初期化
OnTick()新しい Tick が更新されるたびエントリー/エグジット判定(最重要)
OnTimer()定時トリガー(例:毎秒 1 回)価格駆動でないロジック判定に向く
OnDeinit()EA を取り外したり、チャートを閉じるときリソースの解放、指標が確保したメモリの解放

初学者はまず OnInit() / OnTick() / OnDeinit() の 3 つを優先して習得すれば十分です。

4. つまずきやすい点の回避:MQL5 のエラーと安定化テクニック

MQL5 の開発では、構文エラーは比較的解決しやすい一方、ロジックの安定化こそが本当の挑戦になります。

よくある開発エラー早見表

エラータイプよくある原因解決方法
コンパイルエラー; の付け忘れ、CopyBuffer の引数ミスマッチMetaEditor 下部のエラー文をダブルクリックして該当行へジャンプ
発注が無反応自動売買が有効でない、口座モードが不一致MT5 上部のボタンを確認、CTrade クラスで命令を簡素化するのも有効
データ取得失敗指標 Handle が未初期化OnInit で Handle の有効性を確認し、ArraySetAsSeries を実行

安定度を上げるテクニック

最適化ツール主な機能推奨タイミング
Print() / Comment()ログまたはチャートに情報を出力プログラム内部のロジックを追跡したいとき
ビジュアルバックテストストラテジーテスターで Visual Mode を有効にする過去のエントリー/エグジット挙動を見ながらロジックを検証
リソース解放IndicatorRelease() を使用OnDeinit で実行し、長時間運用時のシステム負荷を防ぐ

重要: MT5 のマルチスレッドでパラメータを最適化する際、「過剰最適化」の罠に注意してください。ヒストリカル成績が完璧すぎる一方でリアル口座でドローダウンが大きい場合、たいていパラメータが過去データに過適合しています。シンプルなロジックから出発するのが王道です。

5. 無料 EA リソース:Titan FX のフォワードテストを開発に活かす

実際に動かしながら学びたい場合、ブローカーが提供する成熟したテンプレートを参照するのが最善のルートです。Titan FX は MT5 のマルチアセット取引に対応した、70 本以上の無料 EA を公開しています。

Titan FX EA フォワードテストランキングのページ。各自動売買戦略の損益と最大ドローダウンが並ぶ

これらのリソースの価値は「透明性」にあります:

  • Titan FX 研究所では、実際の市場環境でのフォワードテスト結果を確認できます(純粋なヒストリカルバックテストよりも信頼性が高い)
  • EA ランキングページでは、収益率・最大ドローダウン・勝率・プロフィットファクターが一覧で見られます

初学者は、ランキング上位かつドローダウンが自分のスタイルに合う EA を選び、まずデモ口座で挙動を観察してみてください。自動化の習得を加速できるだけでなく、プロフェッショナル EA の構造を学ぶ最適な教材にもなります。

6. FAQ:MQL5 開発でよくある疑問

Q1:ストラテジーテスターでは正常なのに、リアル口座では EA が約定しないのはなぜですか?

よくある原因として、ブローカーのサーバー時間差、スプレッド設定の違い、スリッページ設定が小さすぎる、口座モードの不一致(Netting / Hedging)などが挙げられます。まずはデモ口座で実スプレッドと遅延に近い環境でテストするのが有効です。

Q2:複数銘柄(Multi-symbol)の同時バックテストはどうやりますか?

ここは MT5 の強みです。コード内で iClose()CopyBuffer() の引数として現在チャート以外の銘柄名(例:"EURUSD")を指定するだけで、MT5 ストラテジーテスターが該当ヒストリカルデータを自動でロードし、複数通貨ペアを同期計算します。追加設定は不要です。

Q3:EA を特定の時間帯にだけ稼働させるには?

OnTick() の冒頭で時間判定を入れます。TimeCurrent() でサーバー時間を取得し、構造体 MqlDateTime で時・分を抽出。指定区間(例:欧米セッション)の外であればその回の処理を即時終了するロジックを書けば、流動性の低い時間帯を避けられます。

7. まとめ

本記事を通じて、MQL5 の環境設定から基本構文・EA デバッグまでの一連の流れを把握できたはずです。MQL5 は高い実行性能を提供するだけでなく、複数銘柄を組み合わせた検証や複雑な戦略のバックテストもシンプルかつ高効率にこなせます。

自動売買の価値は規律と実行力にあります。シンプルなロジックから着手し、Titan FX の無料 EA テンプレートとフォワードテストランキングを参考教材として活用しつつ、デモ口座で十分に安定性を検証してみてください。OnTick のロジックと資金管理の理解が深まるにつれて、MQL5 は自分専用の自動売買ツールを構築する実用的なツールになります。


関連記事

✏️ 著者について

Titan FX の金融市場リサーチおよび調査チーム。外国為替(FX)、商品(原油・貴金属・農産物)、株価指数、米国株、暗号資産など、幅広い金融商品を対象に投資家向け教育コンテンツを制作しています。


主な出典(カテゴリ別)

  • 公式プラットフォーム資料: MetaQuotes、MetaTrader 5、MQL5 Reference の公開ドキュメント。
  • EA開発・検証資料: MQL5 Community、MetaEditor 5、ストラテジーテスター、マルチシンボルテスト関連資料。
  • Titan FX関連資料: Titan FX のMT5、EA自動売買、フォワードテスト、EAランキング関連ページ。