無料配布中為替手帳2026」を公開

MQL4→MQL5 変換ツール|MT4インジをMT5へ移行【無料】

MQL4をMQL5に変換するツール

ブラウザ完結・無料
MQL4 ソース(.mq4)
MQL5 変換結果
← 左にコードを貼り付けると、ここに変換結果が出ます。
生成コードは機械変換の下書きで、完璧ではありません。危険な箇所(iCustom・ObjectSet・トレード関数など)は変換せず印を残します。必ずMetaEditorでコンパイルして動作確認を。コンパイルエラーが出たら、その箇所と元のMQL4をChatGPTなどのAIに貼って聞くと直しが早いです。ファイルはブラウザ内だけで処理され、どこにも送信されません。

このページ上部の変換ツールの使い方はシンプルです。

  1. 貼る/読み込む:MT4インジのソース(.mq4)を貼り付け、または「ファイルを開く」。コードが無ければ「サンプル」でOK
  2. その場で変換:MT5用(.mq5)の下書きが出ます
  3. 保存して動かす:「コピー」か「.mq5を保存」→ MetaEditorでコンパイルすればMT5で動きます

なぜ「変換」が必要かというと、MQL4のインジ(.ex4)はMT5ではそのまま動かないからです。ソースコード(.mq4)をMQL5(.mq5)に「移植」して、MT5でコンパイルし直す必要があります。ただ、つまずく所はだいたい決まっていて、大半は機械的に片付きます。だからツールで自動化できるわけです。

私は自作インジを100本以上MT5へ移植しましたが、つまずく所は決まっていて、慣れれば流れ作業でした。この記事では「MQL4とMQL5は何が違うのか」「手持ちのインジは移行できるのか」「ツールでどこまでできるのか」を順番に解説します。

MQL4とMQL5の違いと互換性|なぜそのまま動かないのか

まず「互換性」の話から。MT4のインジ・EAはMQL4という言語で書かれ、.ex4という実行ファイルにコンパイルされます。MT5が読むのは.ex5。この時点で別物です。

mq4 / ex4 / ex5 の違い
.mq4…MQL4のソースコード(設計図)。人間が読めて編集できる。
.ex4….mq4をコンパイルした実行ファイル。MT4が読む。中身は見られない。
.ex5…MT5用の実行ファイル。MT5が読む。

ポイントは2つです。①.ex4はMT5では動かない(.ex5でないとダメ)。②.ex4から.ex5へ"直接"変換することもできない。必要なのは、.mq4のソースをMQL5(.mq5)に書き直して、MT5でコンパイルし直すこと。これを「移植」と呼びます。

裏を返すと、.ex4しか持っていない(ソースが無い)インジは、自分では移行できません。配布元にMT5版を頼るか、ソース(.mq4)を入手する必要があります。上のツールも「.mq4のソース」が前提です。

では言語そのものの互換性は? MQL4とMQL5は、どちらもC言語系で文法の8割は共通です。MQL4が書ける人なら、ゼロから学び直す必要はありません。ただし、移植で必ず効いてくる差が3つあります。

違い①:配列の「向き」が逆(最凶のサイレントバグ)

MQL4では価格やバッファの配列はindex 0 が「最新の足」。MQL5は既定でindex 0 が「一番古い足」と、真逆です。怖いのはコンパイルは通るのに表示だけ狂うこと。対策は1行で済みます。

// MQL4:index 0 = 最新足。だからこう書ける
double now = RSIBuffer[0];

// MQL5:既定では index 0 = 最古足! 同じコードが「逆」を指す
// → OnInit でこれを入れて MQL4 と同じ向きに直す
ArraySetAsSeries(RSIBuffer, true);

違い②:iMAなどの内蔵インジが「ハンドル返し」に変わった

MQL4のiMA()などは値が直接返りますが、MQL5は「ハンドル(整数)」が返り、別途CopyBufferで値を取り出す設計です。ここが一番"構造"が変わる所です。

// MQL4:値がそのまま返る
double ma = iMA(NULL, 0, 20, 0, MODE_EMA, PRICE_CLOSE, 0);

// MQL5:ハンドルが返る → CopyBufferで取り出す
int h = iMA(_Symbol, _Period, 20, 0, MODE_EMA, PRICE_CLOSE);
double buf[];
CopyBuffer(h, 0, 0, 1, buf);
double ma = buf[0];

違い③:#propertyの分離と、定義済み変数の廃止

MQL5は「バッファ数」と「描画プロット数」を別々に宣言します。さらに、MQL4で当たり前に使えたClose[]Barsといった定義済みの配列・変数がMQL5には無く、関数に置き換わっています。

// MQL4
#property indicator_buffers 2
double price = Close[i];
int total = Bars;

// MQL5
#property indicator_buffers 2
#property indicator_plots   2          // ← バッファ数とプロット数は別物
double price = iClose(_Symbol, _Period, i);   // Close[] は無い → iClose()
int total = Bars(_Symbol, _Period);           // Bars は関数になった

逆に言えば、移植でつまずく所はこの3つにほぼ集約されます。パターンが決まっているから、機械(ツール)に任せられるわけです。

結局、MQL4のインジはMT5へ移行できるのか?

できます。しかもインジケーターの移植は、思っているより軽いです。上で挙げた3つの差を直すのが大半で、ロジック本体(計算式やシグナル条件)はほぼそのまま流用できます。

ツールで自動でいける手作業が要る(ツールが印を付ける)
init→OnInit / start→OnCalculateiCustom(他インジ参照)のハンドル化
Close[]→iClose、Bars→Bars()などObjectSet(ラベル・矢印の描画)の型分け
iMA等のハンドル化(互換ラッパーで吸収)EAのトレード関数(OrderSend等)
配列の時系列をMQL4と同じ向きに固定マイナーな内蔵インジ・特殊な描画

100本やった体感は完全に二極化でした。単純なインジは1本数分の流れ作業。オブジェクト描画やマルチタイムフレームが絡む大物は半日仕事。でも平均すれば「思ったより楽」です。ただしEAだけは別物で、覚悟がいります(後述)。

解決策|MQL4→MQL5 変換ツールの使い方(4ステップ)

その移植作業を自動化したのが、このページ上部のツールです。使い方は4ステップ。

  1. ソースを入れる:.mq4のコードを左に貼り付けるか、「ファイルを開く」で.mq4を選ぶ(ドラッグ&ドロップも可。古いファイルに多いShift_JISも自動判定します)。手元に無ければ「サンプル」を押してください。
  2. 結果を確認する:「✅ 変換できました」なら基本そのまま使えます。「⚠ 手で直す箇所」が出たら、次の章の直し方へ。
  3. 保存する:「.mq5を保存」でダウンロード、または「コピー」。
  4. MetaEditorでコンパイル→MT5へ設置:下記の手順で実際に動かします。

MT5で動かすまで
1. MT5で F4(またはツール→MetaQuotes Language Editor)でMetaEditorを開く
2. 新規インジを作る/保存した.mq5を開いて、変換結果を貼り付ける
3. F7 でコンパイル。エラーが出たら「手で直す箇所」を直す(このツールは完璧ではないので、コンパイルエラーはその箇所と元のMQL4をChatGPTなどのAIに貼って聞くと早いです)
4. 通ると.ex5ができる → MT5の「ファイル→データフォルダを開く→MQL5→Indicators」に置く
5. MT5のナビゲーターを更新 → チャートにドラッグで適用(EAは Experts フォルダ)

【FX初心者】無料インジケーターを無闇にダウンロードしない方がいい理由|MT4関連記事【FX初心者】無料インジケーターを無闇にダウンロードしない方がいい理由|MT4

「手で直す箇所」が出たときの直し方

ツールが「⚠ 手で直す箇所」と出すのは、機械が勝手に変換すると壊れるリスクが高い所です。安全のため変換せず印だけ残しています。代表的な3つの直し方を載せておきます。

① iCustom(他のインジを呼ぶ部分)

iCustomもMQL5ではハンドル返しです。OnInitでハンドルを取り、CopyBufferで値を取り出します。末尾のmodeshiftはCopyBuffer側へ移します。

// MQL4
double v = iCustom(NULL, 0, "MyInd", 10, 0, i);  // 最後の 0=バッファ番号, i=shift

// MQL5(OnInitでハンドル取得 → 使う所でCopyBuffer)
int hCustom = iCustom(_Symbol, _Period, "MyInd", 10);  // OnInitで一度だけ
double buf[];
CopyBuffer(hCustom, 0, i, 1, buf);   // 0=バッファ番号, i=shift
double v = buf[0];

② ObjectSet(ラベルや矢印の描画)

MQL5は第1引数にchart_id(0=現在のチャート)が必要で、プロパティの型ごとにObjectSetInteger / ObjectSetDouble / ObjectSetStringに分かれます。

// MQL4
ObjectSet("name", OBJPROP_COLOR, clrRed);
ObjectSet("name", OBJPROP_PRICE1, price);

// MQL5(chart_id を足し、型で関数を分ける)
ObjectSetInteger(0, "name", OBJPROP_COLOR, clrRed);   // 色・座標などは Integer
ObjectSetDouble (0, "name", OBJPROP_PRICE, price);    // 価格は Double

③ EAのトレード関数(OrderSendなど)

ここだけはハッキリ言っておきます。EAの売買部分はインジより重いです。MQL5ではトレードが「ポジション・注文・約定」に分離し、ネッティング/ヘッジの概念も絡むため、OrderSendはMQL4の感覚では書けません。標準ライブラリのCTradeクラス(trade/Trade.mqh)に置き換えるのが定石です。誤変換は実損に直結するので、ツールもここは自動変換せず必ず止めます。まずはインジから移して、MT5の作法に慣れてからEAに手を出すのがおすすめです。

(補足)MT4とMT5の違い

プラットフォームの違いはご存じの方が多いと思うので、要点だけ。基本的にMT4でできることはMT5でも全部でき、むしろ増えます

項目MT4MT5
時間足9種類21種類
板情報・経済指標カレンダーなしあり(内蔵)
バックテスト単一通貨・1スレッド64bitマルチスレッド・マルチ通貨
ポジション管理ヘッジのみネッティング+ヘッジ
【コード付】最速でMQL4言語をプログラミング未経験者がマスターする方法関連記事【コード付】最速でMQL4言語をプログラミング未経験者がマスターする方法

100本以上のインジをMT5へ移植して、何が大変だったか

ここからは一般論ではなく、私が自作インジを100本以上MT5へ移植して実際にやってみてどうだったかの話です。

まず、一括変換は失敗しました。最初は全ファイルに同じ変換ルールを当てて一気に片付けようとしたのですが、見事にコケました。理由は単純で、インジごとに構造(描画方式・データの取り方・イベント処理)がバラバラだからです。結局、1ファイルずつ中身を読んで直すのが一番速かった。このツールが変換前にファイルを"分類"してから処理しているのは、この反省からです。

そして大変さは完全に二極化しました。移動平均にラインを引くような単純なバッファ系は、1本あたり数分の流れ作業。一方、ラベルやボタンを並べるパネルUI+オブジェクト描画+マルチタイムフレームが全部乗った大物は、1本で半日仕事でした。

具体的にハマったのは、この3つです。

  • 配列の時系列:一番時間を溶かしたのがこれ。コンパイルは通るのに表示だけ逆になり、原因に気づくまでかなりかかりました。今はArraySetAsSeriesを最初に入れる癖で回避しています。
  • フィボ系の自作インジiHighest / iLowest の挙動がMT4と違って素直にいかず、MT5ではCopyRatesで高値・安値を自分で走査する形に書き換えた方が安定しました。
  • 平均足の大型インジ:行数が多すぎて全面書き直しは地獄。Time[] / High[] / Low[] の"互換配列"を自分で用意し、元のロジックを温存したまま移植しました。

それと、ObjectSet系の描画は型ごとに関数が分かれていて数が多いので、互換関数を1つ挟むと一気にラクになります(毎回 ObjectSetInteger/Double/String に書き分けない)。

それでも、平均すれば「思ったより大変じゃない」。これが100本やった私の結論です。型さえ一度掴めば9割は同じ作業の繰り返しで、最初の数本を越えると一気にスピードが上がります。唯一EAだけは別腹で、トレード周りの作り直しがあるぶん覚悟がいります。

新規業者向けのMT4ライセンスは2018年に提供終了しており、これから増えるのはMT5です。インジ資産を持っているなら、追い込まれる前に、今のうちに1本ずつ移しておくとラクだと思います。上のツールに貼り付けて、出てきた下書きをMetaEditorでコンパイルしてみてください。たぶん、思っているより手前にゴールがあります。

これからMQL4自体を学ぶ人、基礎を固めたい人は、先にMQL4の学習記事を読むのがおすすめです。MQL4が書ければ、MQL5はその延長で十分に戦えます。

もっと正確に詰めたい人向けに、一次情報も置いておきます。MQL5の仕様は公式が最優先です。次点で、関数の対応を一覧で見たいときは変換表が早いです。

MQL5公式ドキュメントMQL4からMQL5への移行 MQL5公式記事Migrating from MQL4 to MQL5 FXアンテナMQL4⇔MQL5 プログラム変換表
FX攻略法」の記事をもっと見る →

LINE追加で18種類以上の特典を無料プレゼント

書籍・インジケーター・カレンダー・為替手帳など

特典を受け取る

こちらもおすすめ