MT4とMT5の違い|EAは互換性がない・ヘッジ口座とネッティング口座の見分け方

MT4用のEAやインジケーターは、MT5ではそのまま動きません。プログラミング言語がMQL4とMQL5で別で、関数名や事前定義変数が違うため、ソースコード(.mq4)をMQL5に書き換えて、MT5でコンパイル(.ex5)し直す必要があります。逆方向も同じです。実行ファイルだけ(.ex4)を持っていても、MT5用に変換する方法は、MQL5のフォーラムでも「ソースコードが必要」と回答されています。

この記事では、MT4とMT5の違い、EAが動かない理由、ヘッジ口座とネッティング口座の違いと見分け方、どちらを選ぶかの考え方をまとめます。Titan FXの公式ページに書かれた対応状況も例に使います。

この記事について:MT5の使い方と、公式資料の確認方法の解説です。Titan FXの口座開設を勧めるものではありません。Titan FXは、金融庁の「無登録で金融商品取引業を行う者の名称等について」に掲載があります(確認日:2026年10月7日)。経緯と調べ方は海外FX業者が金融庁に登録されているか調べる方法とTitan FXでMT5を使う前に確認する6項目にまとめています。

(確認:MetaQuotes「MetaTrader 5とMetaTrader 4の比較」、MQL5リファレンス「MQL4からの移行」「口座情報」、MetaTrader 5ヘルプ、Titan FXヘルプセンター。確認日:2026年10月7日。サンプルコードはMetaEditorでコンパイル確認。ログインした口座での実行結果は、この記事では確認していません。.ex4が動かないことについて、MQL5リファレンスやMT5ヘルプに直接の記述は見つけられず、フォーラムの回答と、言語の違いの記述にもとづいています)

MT4とMT5の違い(MetaQuotesの比較ページ)

項目 MT5 MT4
時間軸 21 9
未決注文のタイプ 6 4
テクニカルインディケータ(標準) 38 30
グラフィックオブジェクト 44 31
ストラテジーテスター マルチスレッド、多通貨、実際のティック シングルスレッド

プログラミング言語もMT5が「MQL5」、MT4が「MQL4」です。MQL5リファレンスは、MQL5を「MQL4が進化したもの」と説明し、前の世代との互換性を最大限保つものの、言語の間にはいくつかの違いがあり、移行する時は注意が必要だと書いています。

EAやインジケーターが動かない理由(MQL4からの移行)

MQL5リファレンス「MQL4からの移行」には、次のような違いが挙げられています。

MQL4 MQL5
init/start/deinitの3つの特別関数 OnInit/OnStart(スクリプトのみ)/OnDeinit。EAはOnTick、インジケーターはOnCalculateが主な処理の入り口
事前定義変数Ask・Bid・Barsなど これらの変数はない。Digits・Pointは_Digits・_Pointとつづりが違う
時系列Open[]・High[]・Low[]・Close[]・Time[]など 定義済みの時系列はない。必要な深さを、時系列にアクセスする関数で指定する
— EAはOnTickを必須としない(複数のイベントのハンドラを持てる)

つまり、MT4のコードをそのままMT5のMetaEditorに貼って、コンパイルが通るとは限りません。OnCalculateがないインジケーターは、コンパイルもできません。MT5でのコンパイルエラーの見方はMQL5のコンパイルエラーが消えないにまとめています。

EAの導入手順はMT5にEAを入れる方法、インジケーターはMT5にインジケーターを追加する方法にあります。ファイルがMT5用(.ex5)かどうかは、ここで確かめられます。

ヘッジ口座とネッティング口座

MT5には、ポジションの持ち方が2種類あり、どちらになるかは口座ごとに業者が決めます(MT5ヘルプ)。

ネッティング ヘッジ
ポジション 1つの銘柄に、1つの共通ポジションだけ 1つの銘柄に、反対方向を含めて複数のポジション
同じ方向の追加注文 既存のポジションの数量が増える 新しいポジションが別に開く
反対方向の注文 既存のポジションが減る・決済される・反転する 反対方向の新しいポジションが開く(両建て)
決済の方法 同じ銘柄・同じ数量で、反対方向の取引をする ポジションを指定して「ポジション決済」を選ぶ

EAのコードにも影響します。ネッティングの口座で、ヘッジ口座の前提で書かれたEAを動かすと、注文が思い通りに積み上がらないことがあります。決済の方法はMT5の決済方法とMQL5でポジションを決済する方法にあります。

口座がどちらかを確かめる

次のスクリプトで、いまログインしている口座の方式を表示できます。MetaEditorで0エラー・0警告でコンパイルできることを確認しています。ログインした口座での表示は、この記事では確認していません。

void OnStart()
  {
   ENUM_ACCOUNT_MARGIN_MODE mode = (ENUM_ACCOUNT_MARGIN_MODE)AccountInfoInteger(ACCOUNT_MARGIN_MODE);
   switch(mode)
     {
      case ACCOUNT_MARGIN_MODE_RETAIL_NETTING:
         Print("ネッティング口座です(1つの銘柄に1つのポジション)");
         break;
      case ACCOUNT_MARGIN_MODE_RETAIL_HEDGING:
         Print("ヘッジ口座です(1つの銘柄に複数のポジション)");
         break;
      case ACCOUNT_MARGIN_MODE_EXCHANGE:
         Print("エクスチェンジ方式の口座です(株式市場向け)");
         break;
     }
  }

Titan FXのヘルプセンターには、同社が提供する口座はMT4・MT5ともヘッジ口座のみで、画面の左上に「Netting」と出る時は、正しくログインできていない可能性がある、と書かれています。また、デモ口座の申請時の「取引時にヘッジを使用する」は選べない、とも書かれています(MT5でデモ口座を開く方法)。

どちらを使うか

  1. 手持ちのEA・インジケーターが、MT4用かMT5用かを先に確かめる。ソースコード(.mq4/.mq5)があるかどうかも見る
  2. ソースがなければ、EAを使う側のプラットフォームに合わせる。MT4用の.ex4なら、MT4の口座を選ぶ
  3. ソースがあれば、書き換えて移すこともできる。ただし、書き換えは、単なるコピーでなく、動作の確認が必要な作業です
  4. EAを試すなら、デモ口座で、同じ口座の種類・同じ契約サイズで確かめる(MT5でデモ口座を開く方法)

業者が両方に対応しているかも確かめます。Titan FXの公式ページには、口座タイプ3種類ともMT4とMT5の両方に対応と書かれています(Titan FXでMT5を使う前に確認する6項目)。ただし、それぞれ別の口座として開設します。同じ口座でMT4とMT5を切り替えられるという記述は、確認した資料では見つかりませんでした。

まとめ

  • MT4用のEA・インジケーターは、MT5ではそのまま動かない。MQL4とMQL5は別の言語で、関数や変数が違う
  • .ex4は、MT5用に変換できない。ソースコード(.mq4)を書き換えて、MT5でコンパイルし直す
  • MT5にはネッティングとヘッジの2つの方式があり、業者が口座ごとに決める。スクリプトで確かめられる
  • 使うEAがどちら向けかを先に決めてから、口座のプラットフォームを選ぶと、手戻りが少ない

金融庁への登録状況の確認は海外FX業者が金融庁に登録されているか調べる方法にまとめています。

免責事項

この記事は情報提供を目的としたもので、投資助言ではありません。特定の業者・口座・取引を勧めるものではなく、売買のタイミングや金額を示すものでもありません。

外国為替証拠金取引は、為替変動により元本を割り込む可能性があります。レバレッジをかけた取引では、証拠金を上回る速度で損失が拡大する場合があります。過去の実績や記載された条件は、将来の結果を保証しません。

記載した取引条件は確認日時点の公式ページ・ヘルプの内容であり、その後変更される場合があります。取引に関する判断は、読者自身の責任で行ってください。