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」からファイルを選んでチャートにドラッグ&ドロップしてアタッチ完了

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

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 ランキングページでは、収益率・最大ドローダウン・勝率・プロフィットファクターが一覧で見られます
初学者は、ランキング上位かつドローダウンが自分のスタイルに合う 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ランキング関連ページ。