MT4からMT5への技術移行完全ガイド|MQL4資産・EA・インジケーター作り直しの考え方
MT4で使っていたEA、インジケーター、スクリプト、MQL4ソース、setファイル、検証結果を、MT5へ移行したいと考える場面があります。
ただし、MT4のEAやインジケーターを、そのままMT5へ入れて動かすことはできません。MT4とMT5では、対応する実行ファイル、MQL言語、注文管理、インジケーターバッファ、バックテスト環境、外部連携の扱いが異なるためです。
この記事では、MT4からMT5へ移行する前に確認したい、MQL4資産、EX4 / MQ4、EAの注文管理、インジケーターのバッファ、外部連携、setファイル、バックテスト条件、作り直し時の仕様整理についてまとめます。
このページは、MT4 / MT5 / MQL4 / MQL5の技術学習記事です。投資判断、売買タイミング、利益保証、勝率保証、推奨ロット、推奨銘柄、推奨エントリー、特定ブローカー誘導を目的とした内容ではありません。
- MT4からMT5への移行で最初に確認すること
- MT4とMT5の違いを技術面から見る
- MQL4とMQL5の違い
- MT4側の言語・機能と学習範囲を確認する
- EX4だけの場合とMQ4ソースがある場合
- ソース形式・依存ファイル・権利の確認
- EAを移行する時の確認ポイント
- インジケーターを移行する時の確認ポイント
- MT4インジケーターの表示・判定・通知を移し替える
- OrderSelect型とPosition / Deal / History型の違い
- MT4のOrderSendと注文条件を読み解く
- Netting口座とHedging口座の確認
- インジケーターバッファと描画方式の違い
- 外部連携・DLL・WebRequestの確認
- setファイルとパラメータの扱い
- バックテスト条件の再整理
- MT5で作り直す時に仕様化する項目
- 移行できるもの・作り直した方がよいもの
- 既存機能を維持するかMT5で再設計するか
- EA利用者向けの確認ポイント
- MQL5開発者向けの確認ポイント
- 検証担当者向けの確認ポイント
- よくある誤解
- 関連ログ・関連エラー
- 開発依頼前に送る情報
- 移行する対象ごとに確認資料をそろえる
- 送ってはいけない情報
- MT4からMT5への技術移行チェック表
- よくある質問
- 関連する確認ページ
- あわせて確認したいページ
- まとめ
- 利用条件・相談窓口
- お問い合わせはEAFC公式LINEへ
MT4からMT5への移行で最初に確認すること
MT4からMT5へ移行したい場合、最初に確認するべきことは「同じものをそのまま動かせるか」ではなく、「どの資産を、どの目的で、MT5向けに作り直すのか」です。
MT4用のEAやインジケーターは、基本的にMT4専用です。MT5で使うには、MQL5向けに再設計または作り直しが必要になります。
| 確認項目 | 内容 | 最初に確認すること |
|---|---|---|
| 対象ファイル | EA、インジケーター、スクリプト、ライブラリ | EX4だけか、MQ4ソースがあるか |
| 移行目的 | 同等再現、機能整理、通知追加、外部連携追加など | 完全再現を目指すか、仕様を見直すか |
| 注文管理 | MT4の注文管理とMT5のポジション・約定管理 | EAが何を管理しているか |
| インジケーター値 | 矢印、ライン、サイン、バッファ値 | EAから読む必要があるか |
| 検証条件 | MT4バックテスト、MT5バックテスト、デモ確認 | 同じ結果になる前提にしない |
MT4からMT5への移行は、単純な変換作業ではなく、既存仕様を確認して、MT5の構造に合わせて再設計する作業と考える方が安全です。
MT4とMT5の違いを技術面から見る
MT4とMT5は、画面の見た目が似ている部分もありますが、技術的には別のプラットフォームです。
EAやインジケーターの移行では、取引管理、イベント関数、バックテスト、時間足、板情報、外部連携、ファイル配置などの違いを確認する必要があります。
| 項目 | MT4 | MT5 | 移行時の確認 |
|---|---|---|---|
| 開発言語 | MQL4 | MQL5 | ソースの書き換え・作り直しが必要 |
| 実行ファイル | EX4 | EX5 | EX4はMT5でそのまま使えない |
| ソースファイル | MQ4 | MQ5 | 自動変換ではなく再設計が必要な場合がある |
| 注文管理 | Order中心の設計が多い | Order / Deal / Positionを分ける | 決済・履歴・損益集計の考え方を見直す |
| インジケーター | MQL4バッファ設計 | MQL5バッファ・handle・CopyBuffer設計 | EA連携時はiCustom / CopyBufferを確認する |
| バックテスト | MT4テスター | MT5 Strategy Tester | 同一条件の再現が必要 |
MT4とMT5の違いは、単に画面や操作の違いではありません。EAやインジケーターの内部構造にも影響します。
MQL4とMQL5の違い
MQL4資産をMQL5へ移す際は、ファイル拡張子の変更だけで完了とは扱いません。イベント関数、注文・ポジション管理、時間足やインジケーター参照などの実装差を洗い出し、MQL5側のAPIと実行モデルに合わせて適応します。
MQL4とMQL5は、どちらもMetaTrader向けの開発言語ですが、同じコードをそのまま共通利用できるものではありません。
特にEAでは、注文処理、ポジション管理、履歴取得、イベント処理、標準ライブラリ、構造体の扱いが異なります。
| 比較項目 | MQL4側 | MQL5側 | 作り直し時の確認 |
|---|---|---|---|
| 注文処理 | OrderSend、OrderSelectなどを使う設計が多い | OrderSend、MqlTradeRequest、CTradeなどを使う | 注文、決済、変更の責務を整理する |
| 保有管理 | 注文単位で扱う設計が多い | Position、Order、Dealを分けて扱う | Magic Number、symbol、ticket管理を見直す |
| 履歴取得 | 注文履歴を参照する設計が多い | HistorySelect、Deal、Order履歴を使う | 損益集計や再エントリー条件を確認する |
| インジ連携 | iCustomの戻り値を直接扱う設計が多い | handle作成後にCopyBufferで取得する | バッファ番号とshiftを確認する |
| 構文・型 | MQL4の書き方 | MQL5の型や構造体に合わせる | コンパイルエラーを前提に確認する |
MQL4からMQL5への移行では、見た目の関数名が似ていても、内部の考え方が変わる場合があります。
MQL5開発の入口は、MQL5開発入門も参考にしてください。
MT4側の言語・機能と学習範囲を確認する
MT4とMT5の基本的な違い
対応する開発言語の違い
MT4では主にMQL4、MT5では主にMQL5を使ってEAやインジケーターを作成します。
MQL4とMQL5は似ている部分もありますが、同じ言語としてそのまま扱えるわけではありません。発注・決済、注文・ポジション管理、イベント処理、標準ライブラリ、インジケーターバッファなどに違いがあります。
| 項目 | MT4 | MT5 |
|---|---|---|
| 主な開発言語 | MQL4 | MQL5 |
| EAソース | mq4 | mq5 |
| EA実行ファイル | ex4 | ex5 |
| インジケーター | mq4 / ex4 | mq5 / ex5 |
| 設定値保存 | setファイル | setファイル |
| 主なログ確認 | Experts / Journal | Experts / Journal / Tester関連ログ |
EA・インジケーターのファイル形式の違い
MT4用のEAやインジケーターは主に .mq4 / .ex4、MT5用は主に .mq5 / .ex5 形式です。
拡張子が違うだけではなく、内部で使用する言語やAPI、注文・ポジション処理なども異なるため、MT4用ファイルをMT5へそのまま配置して使用することは基本的にできません。
| ファイル形式 | 対象環境 | 意味 | 改修時の扱い |
|---|---|---|---|
| .mq4 | MT4 | MQL4ソース | 内容・権利を確認して改修検討 |
| .ex4 | MT4 | コンパイル済みファイル | 内部ロジックの直接改修は原則困難 |
| .mq5 | MT5 | MQL5ソース | 内容・権利を確認して改修検討 |
| .ex5 | MT5 | コンパイル済みファイル | 内部ロジックの直接改修は原則困難 |
| .mqh | MT4 / MT5 | include・共通部品 | 依存ファイルとして確認が必要 |
| .set | MT4 / MT5 | Inputs設定 | 現在設定や検証条件の確認に使用 |
バックテスト環境の違い
MT4にもMT5にもEAを検証するためのテスト機能がありますが、テスト環境や内部の実装前提が同一ではありません。
MT4からMT5へEAを再構築した場合、MT4側のバックテスト結果とMT5側の結果を、条件を確認せず単純比較しないことが重要です。銘柄、時間足、期間、スプレッド、初期証拠金、Inputs、setファイルなどを分けて記録してください。
- どちらのプラットフォームで検証したか
- 対象EAのバージョンが一致しているか
- 銘柄名・サフィックスが一致しているか
- 時間足・期間が一致しているか
- Inputs・setファイルがどの設定か
- スプレッドなどの検証条件が一致しているか
- ログにエラーや注文失敗が出ていないか
操作画面・設定画面の違い
MT4とMT5は画面構成が似ていますが、ナビゲーター、テスター、注文画面、設定項目、ログ画面などには違いがあります。
不具合相談や導入確認では、「MT4かMT5か」を必ず明示し、EA・インジケーター名、バージョン、対象銘柄、時間足、Inputs、ログとあわせて整理してください。
| 確認項目 | 確認する内容 | 相談時に整理する情報 |
|---|---|---|
| 利用環境 | MT4またはMT5 | 現在使っているプラットフォーム |
| 対象ファイル | Experts / Indicators等 | mq4、mq5、ex4、ex5、mqhの有無 |
| 設定 | Inputs、setファイル | 現在値、変更希望、使用set |
| ログ | Experts、Journal | 発生時刻前後の内容 |
| 画像 | チャート、設定、エラー表示 | 機密情報を伏せたスクリーンショット |
EA開発で見たMT4とMT5の違い
発注・決済処理の考え方
EA開発では、発注、決済、注文変更、エラー処理の違いが特に重要です。
MT4とMT5では注文やポジションを扱う仕組みが異なるため、MT4用EAをMT5へ移行する場合、発注・決済部分だけを機械的に置き換える方法では不足することがあります。
- 新規注文を出す条件
- 発注前チェック
- 注文結果の確認方法
- 決済対象の識別方法
- SL / TPの設定・変更
- 注文失敗時のログ
- 必要に応じた再試行処理
ポジション管理の考え方
EAでは、現在保有している注文・ポジションをどう認識し、どこまでを自分の管理対象にするかが重要です。
MT4からMT5へ移行する場合は、MT4側で使用していた注文識別や履歴検索の考え方を、そのまま移せるとは限りません。ナンピンEA、複数ロジックEA、コピーEA、半裁量EAなどでは特に慎重な仕様確認が必要です。
また、MT5側では利用する口座構成によってポジション管理の前提も確認する必要があります。既存MT4 EAのポジション管理仕様をそのまま前提にせず、対象口座で必要な管理方法を仕様として整理します。
| 確認項目 | 確認する内容 | 移行・改修前に整理すること |
|---|---|---|
| 管理対象 | どの注文・ポジションをEAが管理するか | 手動注文を含めるか、EA注文のみか |
| マジックナンバー | EAやロジックを識別する番号 | 現在使用中のマジック一覧 |
| 銘柄 | 対象銘柄・サフィックス | 端末上の正式な銘柄名 |
| 方向 | BUY / SELLの管理範囲 | 両方向を独立して扱うか |
| 複数ロジック | ロジックごとの独立管理 | ロジック別設定・識別方法 |
| 既存ポジション | EA起動前から存在するポジション | 管理対象にするかどうか |
マジックナンバー管理
マジックナンバーは、EAが自分の注文・ポジションを識別するために使われる情報です。
MT4/MT5どちらでも、複数EAや複数ロジックを使う場合は識別方法の整理が重要です。移行や改修時に管理範囲が曖昧だと、対象外のポジションを管理したり、管理すべきポジションを見落としたりする原因になります。
- EAごとのマジックナンバー
- ロジックごとの識別
- BUY / SELLの管理範囲
- 手動注文の扱い
- 既存ポジションの扱い
- 他EAとの重複有無
ログ確認と不具合調査
EAが動かない、注文しない、決済しない、設定が反映されない場合は、画面だけでなくログを確認します。
MT4/MT5のどちらでも、ExpertsログとJournalログは重要です。相談時には、発生時刻前後のログ、EA名、バージョン、銘柄、時間足、使用したsetファイル、再現手順を整理してください。
| ログ | 主に確認すること | 使う場面 |
|---|---|---|
| Expertsログ | EA側の初期化、条件判定、注文・決済、通知 | EAが何を判断したか確認する時 |
| Journalログ | 端末側の接続、取引許可、注文結果等 | 注文・接続・端末側の問題を確認する時 |
| テスト時のログ | 初期化、注文、エラー、設定値 | 検証環境で再現する時 |
| 外部連携ログ | 通知、WebRequest、レスポンス、失敗理由 | Discord・API等を確認する時 |
インジケーター開発で見たMT4とMT5の違い
表示系の違い
インジケーターは、チャート上にライン、矢印、サイン、数値、パネル、サブウィンドウなどを表示する補助ツールです。
MT4用インジケーターとMT5用インジケーターでは、計算・描画・バッファ処理などの実装が異なる場合があるため、MT4用ファイルをMT5へ配置するだけでは利用できません。
- メインチャート表示か
- サブウィンドウ表示か
- ライン表示か
- 矢印・サイン表示か
- パネル・ラベル表示か
- アラート・通知を含むか
- EAから値を参照しているか
バッファ・描画・通知の違い
インジケーターでは、計算した値をチャートへ表示したり、EAから参照したりするためにバッファや描画設定を使用します。
MT4からMT5へ移行する場合は、見た目だけでなく、値の計算、バッファ、サイン位置、通知タイミング、リペイントの有無などを確認する必要があります。
| 確認項目 | 表示中心 | 通知・EA連携あり |
|---|---|---|
| ライン・矢印 | 表示位置、色、太さ、条件 | 表示条件と判定条件を分けて確認 |
| サブウィンドウ | 表示範囲、値、描画方法 | EA等から参照する値も確認 |
| アラート | 必要性を確認 | 通知タイミング、重複防止を確認 |
| 外部通知 | 通常は不要な場合が多い | WebRequest、Webhook等を確認 |
| EA連携 | なしの場合もある | 取得する値・サイン・確定タイミングを確認 |
MT4インジケーターをMT5へ移行する場合
MT4用インジケーターは、MT5へそのまま移して利用することは基本的にできません。
mq4ソースがある場合は、現在の計算・描画・通知仕様を確認したうえでMQL5向けに再実装を検討できます。ex4しかない場合は内部ロジックを直接確認できないため、画面、設定、仕様資料などをもとに必要な機能を整理します。
ソースコードがある場合とない場合
| 手元にあるファイル | 確認できること | 基本的な扱い |
|---|---|---|
| mq4 | MT4用ソースを確認できる | 権利確認後、MT4改修またはMT5再構築を検討 |
| ex4 | 内部ロジックは直接確認できない | 仕様や画面から再構築範囲を整理 |
| mq5 | MT5用ソースを確認できる | MT5内で改修可否を確認 |
| ex5 | 内部ロジックは直接確認できない | 仕様説明や資料が必要 |
MQL4とMQL5の違い
MQL4とは
MQL4は、主にMT4向けのEA、インジケーター、スクリプト等を作成するために使われる言語です。ソースファイルは主にmq4形式で保存されます。
MQL5とは
MQL5は、主にMT5向けのEA、インジケーター、スクリプト等を作成するために使われる言語です。ソースファイルは主にmq5形式で保存されます。
MQL4からMQL5は単純変換ではない
MQL4からMQL5へ移行する場合、単純な文字置換や拡張子変更だけで対応できるとは限りません。
特に、発注・決済、ポジション管理、インジケーターバッファ、イベント処理、オブジェクト描画、外部連携、ファイル操作、ログ出力などを含む場合は、MT5側の仕様に合わせた見直しが必要になります。
| 機能 | 移行時の主な確認 | 確認する内容 |
|---|---|---|
| 表示中心のインジ | 計算・描画の再確認 | 表示条件、バッファ、色、位置 |
| サイン通知付きインジ | 通知処理まで確認 | サイン条件、重複防止、WebRequest |
| 単純なEA | 発注・決済を再確認 | 注文条件、決済条件、ロット |
| 複数ロジックEA | 管理設計を再確認 | ロジック識別、ポジション、ログ |
| ナンピン・グリッドEA | ポジション単位の管理を再確認 | 段数、追加条件、ロット、決済 |
| 外部連携付きEA | 通信・認証・失敗処理を確認 | WebRequest、送信先、認証、ログ |
MT4からMT5への移行時に照合する主な項目
MT4からMT5へ移行する場合は、「コンパイルできるか」だけでなく、元の製品が持っている仕様を機能単位で照合します。
| 分類 | 確認内容 |
|---|---|
| Entry | BUY / SELL条件、判定足、判定タイミング、再エントリー |
| Execution | 発注、ロット、スプレッド制限、注文失敗時の処理 |
| Position | 管理対象、マジック、方向、複数ポジション、既存ポジション |
| Exit | TP / SL、条件決済、時間決済、トレーリング、一括決済 |
| Indicator | 計算方法、バッファ、サイン、確定足、リペイント |
| UI | パネル、ボタン、ラベル、ライン、表示位置 |
| Notification | アラート、Discord等、通知タイミング、重複防止 |
| External | WebRequest、API、CSV、外部設定、認証 |
| Log | 初期化、条件未達、注文結果、エラー、通知結果 |
| Validation | 銘柄、時間足、期間、set、検証方法、期待動作 |
MQL4とは何か
MT4向けの開発言語
MQL4は、MetaTrader 4、つまりMT4向けの開発言語です。
MT4上で動くEA、インジケーター、スクリプト、補助ツールなどを作るために使われます。MT4のチャート、価格データ、注文情報、口座情報、インジケーター値などを参照し、条件に応じて表示、通知、注文、決済、集計などを行うプログラムを作成できます。
| 用語 | 意味 | 確認すること |
|---|---|---|
| MT4 | 取引プラットフォーム | EAやインジを動かす環境 |
| MQL4 | MT4向けの開発言語 | EA・インジ・スクリプトを作る言語 |
| mq4 | MQL4のソースファイル | 改修や内容確認に重要 |
| ex4 | コンパイル済みファイル | MT4で実行するファイル |
| set | Inputs設定ファイル | 現在設定の確認に使用 |
EA・インジ・スクリプトの作成に使う
MQL4では、主にEA、カスタムインジケーター、スクリプトを作成できます。
EAは、条件に応じて注文や決済、ポジション管理、通知などを行うプログラムです。インジケーターは、チャート上にライン、矢印、サイン、数値、アラートなどを表示する補助プログラムです。スクリプトは、1回だけ実行する処理や、操作補助に使われることがあります。
| 種類 | 主な役割 | 相談時に確認すること |
|---|---|---|
| EA | 注文、決済、管理、通知、操作補助 | 売買実行の有無、条件、ロット、ログ |
| インジケーター | 表示、サイン、アラート、集計 | 表示条件、通知条件、色、時間足 |
| スクリプト | 一度だけ実行する処理 | 実行内容、対象、誤操作防止 |
| 補助ツール | ログ、通知、集計、確認補助 | 対象データ、出力先、通知先 |
MQL5との違いを簡単に確認する
MQL4はMT4向け、MQL5はMT5向けの開発言語です。
名前は似ていますが、完全な互換性があるわけではありません。MQL4で作られたEAやインジケーターをMT5で使いたい場合、MQL5用に作り直しが必要になることがあります。
特に、発注・決済処理、ポジション管理、インジケーターバッファ、イベント処理、外部連携、ファイル操作などを含む場合は、単純変換ではなく仕様確認が必要です。
MQL4で作れる主なもの
EA
MQL4では、MT4上で動くEAを作成できます。
EAは、条件に応じて注文や決済を行うものだけでなく、既存ポジションの管理、通知、操作パネル、ログ出力、取引補助などを行うものもあります。
カスタムインジケーター
MQL4では、MT4用のカスタムインジケーターを作成できます。
チャート上にライン、矢印、サイン、ラベル、数値、サブウィンドウ表示などを行うことができます。アラートやメール通知、外部通知を組み合わせる場合もあります。
スクリプト
スクリプトは、MT4上で一度だけ実行する処理に使われます。
たとえば、チャート上のオブジェクト整理、ファイル出力、確認用の処理、手動操作の補助などが考えられます。ただし、注文や決済に関わる処理を行う場合は、誤操作防止やログ確認が重要です。
通知・集計補助
MQL4では、アラート、メール、プッシュ通知、ログ出力、CSV出力、状態表示などの補助機能を作成できます。
通知や集計は、取引結果を保証するものではなく、状態確認や記録を補助するための機能です。通知が届かない場合は、通知設定、MT4本体設定、Expertsログ、外部連携設定を分けて確認します。
操作補助ツール
MQL4では、チャート上にボタンやラベルを表示し、操作を補助するツールを作ることもできます。
ただし、ボタン操作で注文や決済を行う場合は、誤操作防止、確認ログ、対象ポジション、マジックナンバー、銘柄名を明確にする必要があります。
| 作れるもの | 主な用途 | 確認するポイント |
|---|---|---|
| EA | 注文、決済、管理、通知 | 条件、ロット、マジック、ログ |
| インジケーター | 表示、サイン、アラート | 表示条件、色、時間足、通知 |
| スクリプト | 一回実行の操作補助 | 実行内容、対象、誤操作防止 |
| 通知ツール | 条件成立や状態変化の通知 | 通知先、通知条件、ログ |
| 集計補助 | 損益、履歴、状態の整理 | 集計対象、期間、出力形式 |
MQL4 EAでできること
エントリー条件
MQL4 EAでは、価格、インジケーター値、時間、スプレッド、ポジション状態などを条件にして、新規エントリー判定を作ることがあります。
ただし、条件を作ることと、利益や勝率を保証することは別です。開発相談では、売買結果ではなく、どの条件で処理を実行するかを機能仕様として整理してください。
決済条件
EAでは、利確、損切り、時間決済、条件反転、トレーリング、建値移動などの決済条件を作ることがあります。
決済条件を相談する場合は、どのポジションを対象にするのか、BUY/SELLで同じ条件か、マジックナンバーで分けるのか、手動ポジションを含めるのかを整理してください。
ロット管理
EAでは、固定ロット、入力ロット、倍率、段階ロットなどのロット管理を行う場合があります。
ロットに関する相談では、推奨ロットではなく、EAがどの値を参照し、どのように注文ロットを計算するかという仕様として整理します。
マジックナンバー
マジックナンバーは、EAが自分の注文やポジションを識別するための番号です。
複数EA、複数ロジック、手動注文が混在する場合は、マジックナンバーの整理が重要です。改修や不具合調査では、どのマジックを対象にするのかを明確にしてください。
時間制御
MQL4 EAでは、稼働時間、曜日、サーバー時間、停止時間、ニュース時間帯などを条件にする場合があります。
時間制御を相談する場合は、PC時間なのか、MT4サーバー時間なのか、何時から何時まで有効なのかを整理してください。
通知
EAでは、起動、停止、注文、決済、エラー、状態変化などを通知する機能を作ることがあります。
通知機能を使う場合は、通知条件、通知先、重複通知防止、通知ログを確認してください。外部通知を使う場合は、Webhook URLやAPIキーなどの実値を公開場所へ貼らないよう注意が必要です。
| EA機能 | 整理する内容 | 相談時の注意点 |
|---|---|---|
| エントリー条件 | どの条件で注文判定するか | 売買助言ではなく仕様として整理する |
| 決済条件 | どの条件で決済するか | 対象ポジションを明確にする |
| ロット管理 | 固定、入力、倍率、段階など | 推奨ロットではなく計算仕様として扱う |
| マジック管理 | EA・ロジック・手動注文の区別 | 他EAとの重複に注意する |
| 時間制御 | 稼働時間、曜日、停止条件 | サーバー時間かPC時間か確認する |
| 通知 | 通知条件、通知先、ログ | 認証情報やURLの扱いに注意する |
MQL4インジケーターでできること
サイン表示
MQL4インジケーターでは、条件に応じて矢印、マーク、ラベルなどを表示できます。
サイン表示を依頼する場合は、BUY条件、SELL条件、表示位置、確定足か未確定足か、サインの再描画やリペイントの扱いを整理してください。
ライン表示
ライン表示では、移動平均線、バンド、水平線、トレンドライン、独自計算ラインなどを表示できます。
表示されない場合は、色、太さ、表示対象、計算期間、チャート背景との同化、ローソク足数を確認します。
アラート
インジケーターにアラート機能を追加すると、条件成立時にポップアップや音で知らせることができます。
アラートが鳴らない場合は、インジケーター側の通知ON/OFF、通知条件、重複防止、Expertsログを確認してください。
メール通知
MT4本体のメール設定を使って、インジケーターからメール通知を行う場合があります。
メール通知を使う場合は、MT4本体の設定、インジケーター側の通知設定、通知条件、送信ログを分けて確認してください。
集計表示
インジケーターでは、損益、ポジション数、スプレッド、時間、サイン履歴、検証用の統計などを表示することがあります。
集計表示は、状態確認や検証補助を目的としたものです。表示結果が利益や損失回避を保証するものではありません。
チャート補助
チャート補助として、背景色変更、セッション表示、時間帯表示、価格ライン、注釈、ラベルなどを作ることもあります。
表示系の相談では、スクリーンショットが重要です。現在の表示と変更したい表示を、画像やメモで整理してください。
MQL4とは何を作るための言語か
MT4用EA
MQL4では、MT4用のEAを作成できます。
EAは、条件判定だけでなく、注文、決済、ロット、MagicNumber、ポジション管理、エラー確認、ログ出力などを扱います。チャート上に表示するだけではなく、MT4上で実際に売買処理を実行するため、確認範囲が広くなります。
EAを学ぶ場合は、いきなり複雑なロジックを作るのではなく、まずは条件判定、ログ出力、注文処理、決済処理、エラー処理を分けて理解することが重要です。
カスタムインジケーター
MQL4では、チャート上にライン、矢印、文字、サブウィンドウ表示などを出すカスタムインジケーターも作成できます。
インジケーターは、主に表示や通知を担当します。売買実行は行わず、チャート上に情報を表示したり、条件成立時にアラートを出したりする用途に向いています。
初心者がMQL4を学ぶ場合、まずは売買実行を伴わない表示系インジケーターから始めると、エラー確認やデータ取得を整理しやすくなります。
スクリプト
MQL4では、1回実行型のスクリプトも作成できます。
スクリプトは、チャートへ適用したタイミングで処理を実行する用途に使われます。たとえば、チャート情報を確認する、ログを出す、ファイルへ簡単な情報を保存するなど、学習用の小さな処理に向いています。
EAやインジケーターより処理の流れを把握しやすいため、MQL4の基本文法やログ確認の練習にも使えます。
補助ツール
MQL4では、売買ロジック以外の補助ツールも作成できます。
たとえば、ログ確認補助、チャート上の情報表示、通知補助、ファイル出力、検証結果の整理などです。これらは売買判断ではなく、MT4上の確認作業を補助する目的で使います。
| 作れるもの | 主な役割 | 学習時の確認ポイント |
|---|---|---|
| EA | 注文、決済、ポジション管理 | 注文処理、エラー処理、MagicNumber |
| インジケーター | 表示、通知、サイン表示 | バッファ、描画、リペイント |
| スクリプト | 1回実行の処理 | 基本文法、ログ出力、ファイル確認 |
| 補助ツール | 確認・記録・通知の補助 | ログ、画面表示、外部連携 |
MQL4を学ぶ前に決めること
EAを作りたいのか
まず、作りたいものがEAなのかを確認してください。
EAは、エントリー条件、決済条件、ロット、MagicNumber、最大ポジション、取引時間、通知、ログ、注文エラー処理まで扱います。学習範囲が広いため、表示系から始める場合よりも検証項目が増えます。
EAを作りたい場合は、「どの条件で注文するか」だけでなく、「注文しない条件」「注文に失敗した時のログ」「既存ポジションの扱い」まで整理してください。
インジを作りたいのか
インジケーターを作りたい場合は、表示したい内容を整理します。
ラインを出すのか、矢印を出すのか、サブウィンドウに表示するのか、アラートを出すのか、通知を送るのかによって、必要な学習内容が変わります。
インジケーターでは、バッファ、オブジェクト描画、チャート更新、リペイントの有無、確定足の扱いを確認することが重要です。
既存改修か新規作成か
MQL4を学ぶ目的が、既存EAや既存インジケーターの修正なのか、新規作成なのかも分けてください。
既存改修では、現在のコード構造、Inputs、関数、注文処理、決済処理、ログ、コメントと実装の整合を確認する必要があります。新規作成では、最初から責務を分けて設計できます。
既存コードを修正する場合は、変更前のファイルを必ず保存し、変更箇所と変更理由を記録してください。
表示だけか売買実行か
表示だけの機能と、売買実行を伴う機能は分けて考えます。
表示だけであれば、チャート描画、ラベル、矢印、アラート、ログが中心です。売買実行を伴う場合は、注文、決済、ロット、証拠金、取引時間、エラー処理、MagicNumber管理まで確認する必要があります。
| 目的 | 最初に決めること | 確認範囲 |
|---|---|---|
| EA自作 | 注文・決済を行うか | エントリー、決済、ログ、エラー処理 |
| インジ自作 | 何を表示するか | バッファ、描画、通知、リペイント |
| 既存改修 | どこを変えたいか | 既存仕様、Inputs、ログ、影響範囲 |
| 補助ツール | 何を確認・記録したいか | ログ、ファイル、画面表示、通知 |
学習順の考え方
基本文法
最初は、変数、条件分岐、関数、配列、ループ、コメント、ログ出力を確認します。
MQL4はC系の書き方に近い部分があります。まずは小さなスクリプトや表示だけの処理で、コードを書いてコンパイルし、ログに結果を出す練習をすると確認しやすくなります。
チャート情報の取得
次に、チャート情報や価格情報の取得を確認します。
現在の通貨ペア、時間足、Bid、Ask、ローソク足の始値・高値・安値・終値、インジケーター値などを取得し、ログへ出す練習をします。
ここで重要なのは、見た目のチャートと、コードが参照している値を分けて確認することです。
インジケーター作成
表示系を学ぶ場合は、カスタムインジケーターの作成に進みます。
ライン表示、矢印表示、サブウィンドウ表示、バッファ値、アラート通知などを確認します。EA化を考える場合は、インジケーターの表示がEAから参照できる値として整理されているかも確認します。
EAの注文処理
EAを作る場合は、注文処理を慎重に確認します。
OrderSend、OrderClose、OrderModifyなどの注文関連処理は、条件判定だけでなく、ロット、価格、スリッページ、SL/TP、MagicNumber、エラー処理と関係します。
最初から複雑な売買ロジックを作るのではなく、ログで条件成立を確認し、その後に注文処理を分けて確認する流れが安全です。
ログ確認
MQL4学習では、ログ確認を早い段階から習慣化してください。
Expertsログ、Journalログ、MetaEditorのコンパイル結果を見れば、コードがどこで止まっているのか、設定値が正しく読まれているのか、注文エラーが出ているのかを確認できます。
| 学習段階 | 確認する内容 | 確認方法 |
|---|---|---|
| 基本文法 | 変数、条件分岐、関数、配列 | 小さなコードとコンパイル確認 |
| チャート情報 | 価格、時間足、ローソク足 | ログ出力で値を確認 |
| 表示系 | ライン、矢印、バッファ | チャート表示とログを比較 |
| EA処理 | 注文、決済、エラー処理 | ExpertsログとJournalログを確認 |
| 検証 | バックテスト、動作確認 | 条件、set、ログを保存 |
初心者がつまずきやすい点
コンパイルエラー
MQL4学習で最初につまずきやすいのが、コンパイルエラーです。
セミコロン抜け、括弧の不足、変数名の間違い、関数名の間違い、型の不一致、ファイルの文字コード、関連ファイル不足などでエラーが出ることがあります。
エラーが出た場合は、MetaEditorのエラー一覧で、ファイル名、行番号、エラー内容を確認してください。複数エラーが出ている場合でも、最初のエラーが原因で後続エラーが連鎖していることがあります。
配列
ローソク足やインジケーター値を扱う場合、配列の向きや参照位置で混乱しやすくなります。
現在足を見ているのか、1本前の確定足を見ているのか、過去の足を見ているのかを整理してください。未確定足を使うと、値が変化する可能性があります。
時間足
MQL4では、チャート時間足と、コード内で参照する時間足を分けて確認する必要があります。
チャートに表示している時間足を使うのか、固定時間足を参照するのか、複数時間足を使うのかによって、結果が変わります。
OrderSend
OrderSendは、EAで新規注文を出す時に使われる代表的な注文処理です。
ただし、OrderSendを使えば必ず注文が通るわけではありません。ロット、価格、スプレッド、取引時間、証拠金、SL/TP距離、自動売買設定、口座状態などにより、注文エラーが出る場合があります。
MagicNumber
MagicNumberは、EAが自分の注文やポジションを識別するための番号です。
複数EAを同じ口座で使う場合、MagicNumberが重複していると、別EAの注文を管理対象にしてしまう場合があります。EA開発では、どの注文を管理対象にするかを明確にする必要があります。
リペイント
インジケーター開発では、リペイントの有無にも注意が必要です。
過去に出ていたサインが後から消える、移動する、色が変わるような挙動がある場合、EA化や通知化ではどのタイミングの値を使うかを慎重に決める必要があります。
既存コードを読む時の注意
関数の役割
既存コードを読む場合は、まず関数ごとの役割を確認してください。
初期化、終了処理、メイン処理、エントリー判定、決済判定、注文処理、通知処理、ログ出力、外部連携がどの関数に分かれているかを整理します。
Inputs
Inputsは、EAやインジケーターの設定項目です。
既存コードを読む場合は、Inputsの名前、初期値、単位、ON/OFF、実際に使われている場所を確認してください。Inputsに項目があっても、コード内で使われていない場合や、コメントと実装が異なる場合があります。
注文処理
EAの既存コードでは、注文処理の場所を確認します。
OrderSend、OrderClose、OrderModifyなどがどこで呼ばれているか、どの条件で実行されるか、注文エラー時にログが出るかを確認してください。
決済処理
決済処理は、EAの挙動確認で重要です。
固定TP/SL、反対サイン、トレーリング、建値移動、時間決済、損益条件、手動決済との関係を整理してください。複数の決済条件がある場合は、優先順位も確認します。
ログ
既存コードを読む時は、ログがどこで出ているかも確認します。
ログが不足していると、条件が成立していないのか、注文で失敗しているのか、外部連携で止まっているのか判断しにくくなります。改修時には、必要なログを追加するかどうかも検討します。
コメントと実装の不一致
既存コードでは、コメントと実装が一致していない場合があります。
コメントには「1回だけ通知」と書かれていても、実装ではティックごとに通知している場合があります。コメントだけで判断せず、実際にどの条件で処理が動くかを確認してください。
| 読む場所 | 確認すること | 注意点 |
|---|---|---|
| Inputs | 設定名、初期値、使用箇所 | 表示だけで使われていない項目に注意 |
| 判定関数 | エントリー・決済条件 | コメントと実装の差を確認 |
| 注文処理 | OrderSend、OrderClose、OrderModify | エラー時ログの有無を確認 |
| ログ出力 | 初期化、判定、注文、決済 | 原因追跡に足りるか確認 |
| 外部連携 | WebRequest、通知、ファイル出力 | URLや認証情報の扱いに注意 |
MQL4とMQL5は何が違うのか
MT4向けとMT5向けの違い
MQL4は、主にMT4向けのEA、インジケーター、スクリプトを開発するために使われます。
MQL5は、主にMT5向けのEA、インジケーター、スクリプトを開発するために使われます。
どちらもMetaTrader系の言語ですが、対象となるプラットフォームが異なるため、実行ファイル、注文・ポジション管理、イベント処理、インジケーターの取得・描画などを同一仕様として扱うことはできません。
| 項目 | MQL4 | MQL5 |
|---|---|---|
| 主な対象 | MT4 | MT5 |
| ソースファイル | mq4 | mq5 |
| 実行ファイル | ex4 | ex5 |
| 主な用途 | MT4用EA・インジケーター・スクリプト | MT5用EA・インジケーター・スクリプト |
| EAFCの新規開発 | 新規開発は原則対象外 | 基本対象 |
| 既存製品の改修 | ソース・仕様確認後に判断 | ソース・仕様確認後に判断 |
| MT4→MT5移行 | 移行元として仕様を確認 | 再設計・再実装先として整理 |
似ている部分があっても別環境として確認する
MQL4とMQL5には、変数、条件分岐、関数、クラスなど、考え方や記述が似ている部分もあります。しかし、既存EAやインジケーターを実際に改修・移行する場合は、対象環境ごとに仕様を確認する必要があります。
特に、注文・決済を行うEA、複数ポジションを管理するEA、ナンピン・グリッドEA、コピーEA、複数ロジックEA、外部通知を持つツール、複数バッファを使うインジケーターでは、単純なコード置換では不足する可能性があります。
新規開発か既存改修かを最初に分ける
開発相談では、最初に「新しく作るもの」なのか「現在使っているものを直すのか」を分けてください。
新規開発の場合、EAFCではMT5 / MQL5を基本とします。既存MT4 / MQL4製品の場合は、現在のソースコード、仕様、ログ、変更内容を確認して、MT4のまま修正するか、MT5へ移行・再構築するかを判断します。
| 相談内容 | 基本方針 | 最初に確認するもの |
|---|---|---|
| 新規EA開発 | MT5 / MQL5を基本 | 仕様、Entry、Exit、表示、ログ、検証条件 |
| 新規インジケーター開発 | MT5 / MQL5を基本 | 計算条件、表示、バッファ、通知 |
| 既存MT4製品の修正 | MQL4ソースと改修範囲を確認 | mq4、mqh、set、ログ、現在仕様 |
| 既存MT5製品の修正 | MQL5ソースと改修範囲を確認 | mq5、mqh、set、ログ、現在仕様 |
| MT4からMT5へ移行 | MQL5向けに再構築範囲を確認 | mq4、仕様、画面、ログ、残す機能 |
EA開発でのMQL4とMQL5の違い
発注処理
EA開発では、条件判定だけでなく、発注前チェック、注文送信、結果確認、失敗時の処理までを一連の仕様として確認します。
MQL4とMQL5では注文・取引処理の扱いが異なるため、MQL4側の発注コードをそのままMQL5へ移すだけでは、同じ挙動を再現できない場合があります。
- 注文条件
- ロット計算
- スプレッド・取引時間等の発注前チェック
- 注文結果の確認
- SL / TP設定
- 注文失敗時のログ
- 必要な場合の再試行処理
Order・Position・Deal・Historyの考え方
MT4からMT5への移行では、注文や保有状態の管理方法を改めて整理する必要があります。
特にMT5側では、注文、約定、保有ポジション、履歴をどのように参照・管理するかを仕様として分けて確認します。MT4側の注文チケット中心の処理を、そのままMT5側のポジション管理へ置き換えられるとは限りません。
ナンピンEA、複数ロジックEA、コピーEA、半裁量EA、既存ポジションを管理するEAなどでは、この違いが移行時の重要な確認点になります。
MT5のポジション管理方式も確認する
MT5向けEAでは、対象口座でどのようにポジションを管理するのかも仕様確認が必要です。
既存MT4 EAが「同一銘柄で複数ポジションを個別管理する」ことを前提としている場合などは、MT5側の対象環境に合わせてポジション識別や決済対象の考え方を確認します。
マジックナンバー
マジックナンバーは、EAやロジックの注文・ポジションを識別するために利用されます。
移行時には、現在使用しているマジック、複数ロジックでの識別方法、手動注文の扱い、他EAとの重複、既存ポジションの扱いなどを整理してください。
決済・保護処理
決済では、対象ポジションの識別、TP / SL、条件決済、時間決済、トレーリング、建値移動、部分決済、一括決済などを個別に確認します。
MT4版と同じ画面上の結果だけを見るのではなく、「どのポジションを、どの条件で、どの順序で処理するか」まで仕様として確認することが重要です。
エラー処理とログ
移行後に「動かない理由」を確認できるようにするため、ログ設計も重要です。
初期化、設定値、条件未達、発注前チェック、注文結果、決済結果、外部連携結果、エラーなど、必要な状態を確認できるログを整理すると、不具合調査や検証を進めやすくなります。
| EA項目 | 確認内容 | MT4→MT5移行時のポイント |
|---|---|---|
| Entry | BUY / SELL条件、確定足、時間帯 | 判定タイミングを再確認 |
| Execution | 発注、ロット、SL / TP、注文結果 | 取引処理をMT5向けに確認 |
| Position | 管理対象、方向、マジック、既存ポジション | ポジション識別方法を再設計する場合がある |
| Exit | 条件決済、時間決済、トレーリング等 | 決済対象と優先順位を確認 |
| Recovery | 再起動後・既存状態の扱い | 復元対象と識別方法を整理 |
| Log | 判定、注文、決済、エラー | 移行後の比較に必要な情報を残す |
インジケーター開発でのMQL4とMQL5の違い
計算・表示バッファ
インジケーターでは、計算した値をチャートへ描画したり、EA等から取得したりするためにバッファを使用する場合があります。
MQL4とMQL5では、インジケーターの構成やバッファの扱いが異なる部分があるため、MT4インジケーターをMT5へ移行する場合は、計算式だけでなく、各バッファの役割や描画方法も確認します。
インジケーターハンドルと値の取得
既存MT4 EAが標準・カスタムインジケーターの値を参照している場合、MT5移行時には値の取得方法も確認対象になります。
「同じインジケーター名を使っているから同じコードでよい」とは限りません。どの値を、どのバーから、どのタイミングで取得するかを明確にします。
チャート描画
ライン、矢印、ラベル、パネル、サブウィンドウなどを表示するインジケーターでは、見た目だけでなく描画更新のタイミングも確認します。
MT4側の表示をMT5側で再現する場合は、表示位置、色、太さ、矢印、ラベル、サブウィンドウ、オブジェクト更新などを分けて整理してください。
確定足・リペイント・通知
サインインジケーターでは、現在足で値が変化するのか、確定足で固定するのか、過去表示が後から変わるのかを確認します。
通知を追加する場合は、表示条件と通知条件を分け、同じ条件で複数回通知しないための制御や、通知タイミングも整理します。
外部通知・外部連携
Discord通知、Webhook、Google Sheets、WebRequest、外部APIなどを含む場合は、MQLコード以外に外部連携仕様も確認します。
送信先、送信内容、認証方法、レスポンス、通信失敗時の処理、ログ、再試行の要否などを整理してください。
| インジケーター項目 | 確認する内容 | 移行時の注意点 |
|---|---|---|
| Calculation | 計算式、参照バー、初期化 | 同じ値になる条件を確認 |
| Buffer | バッファ数、用途、EA参照 | MQL5側の取得方法も確認 |
| Drawing | ライン、矢印、ヒストグラム、ラベル | 表示方法を再確認 |
| Subwindow | 表示範囲、最小・最大値 | 見た目と値の両方を確認 |
| Signal | サイン条件、確定足、リペイント | 通知・EA連携と同じ基準か確認 |
| Notification | アラート、外部通知、重複防止 | 送信タイミングと失敗時処理を整理 |
EX4だけの場合とMQ4ソースがある場合
MT4資産の移行で大きな分岐になるのが、EX4だけを持っているのか、MQ4ソースを持っているのかです。
EX4はMT4用の実行ファイルです。MQ4はMQL4のソースファイルです。MT5で作り直す場合、MQ4ソースがある方が仕様確認を進めやすくなります。
| ファイル | 役割 | MT5移行時の扱い | 確認ポイント |
|---|---|---|---|
| EX4 | MT4用の実行ファイル | MT5ではそのまま使えない | ロジック確認には制約がある |
| MQ4 | MT4用のソースファイル | MT5向け作り直しの資料になる | 注文処理、条件判定、インジ連携を確認できる |
| EX5 | MT5用の実行ファイル | MT5で動かす形式 | MQL5でコンパイルして生成する |
| MQ5 | MT5用のソースファイル | MT5向け開発・改修の本体 | MQL5構造に合わせて作成する |
EX4しかない場合
EX4しかない場合、内部ロジックを直接確認できないため、完全な移植や再現には制約があります。
ただし、チャート表示、入力パラメータ、動作ログ、スクリーンショット、バックテスト結果、利用時の挙動をもとに、MT5向けに似た仕様として作り直す相談は可能な場合があります。
この場合は、「元のコードを変換する」のではなく、「MT4版の見た目・挙動・設定を参考に、MT5版を新規設計する」考え方になります。
MQ4ソースがある場合
MQ4ソースがある場合は、注文条件、決済条件、フィルター、インジケーター連携、外部連携、ログ出力などを確認できます。
ただし、MQ4ソースがあるからといって、MQL5へ自動変換してそのまま動くとは限りません。
MQL5の注文管理、インジケーターハンドル、履歴取得、型、イベント構造に合わせて、必要な部分を作り直す必要があります。
ソース形式・依存ファイル・権利の確認
ファイル形式の違い
mq4 / ex4
mq4 はMQL4のソースファイルです。既存MT4 EAやインジケーターの修正、仕様確認、MT5への再構築を検討する場合、mq4の有無は重要な確認項目です。
ex4 はMT4で実行するコンパイル済みファイルです。ex4だけでは内部ロジックを直接確認・変更できないため、ソースコードがない場合は現在の動作や仕様資料をもとに別途再構築を検討します。
mq5 / ex5
mq5 はMQL5のソースファイルです。MT5向けEAやインジケーターの改修では、mq5と依存するmqh等が揃っているかを確認します。
ex5 はMT5で実行するコンパイル済みファイルです。ex5のみの場合も、内部ロジックを直接確認・修正することはできません。
mqh・ライブラリ・付属ファイル
EAやインジケーターによっては、本体ソース以外にmqh、ライブラリ、画像、CSV、テンプレート、外部設定ファイルなどへ依存している場合があります。
本体mq4やmq5だけではコンパイル・再現できないこともあるため、既存製品の改修・移行では依存ファイルも含めて確認します。
setファイル
setファイルは、EAやインジケーターのInputs設定を保存したファイルです。
ソースコードそのものではありませんが、現在どの設定で使用しているか、移行後にどの初期値や設定項目を再現したいかを確認する資料として重要です。
| ファイル・資料 | 対象 | 意味 | 改修・移行時の扱い |
|---|---|---|---|
| mq4 | MT4 | MQL4ソース | 既存MT4改修・MT5移行判断で重要 |
| ex4 | MT4 | コンパイル済みファイル | 内部ロジックの直接改修は不可 |
| mq5 | MT5 | MQL5ソース | MT5改修で重要 |
| ex5 | MT5 | コンパイル済みファイル | 内部ロジックの直接改修は不可 |
| mqh | MT4 / MT5 | 共通処理・include | 依存関係を確認 |
| set | MT4 / MT5 | Inputs設定 | 現在設定・検証条件確認に使用 |
| 仕様書・マニュアル | 共通 | 想定動作の資料 | 再構築時の仕様確認に有効 |
| スクリーンショット | 共通 | 表示・設定・症状 | UI・動作確認に有効 |
ソースコードと権利関係を確認する
既存EA・インジケーターの改修や移行では、ソースコードがあるだけでなく、そのソースを改変・移行できる権利があることも重要です。
自作コード、正式に改変権限を持つコード、依頼者が権利を保有するコードなどは、内容を確認して対応可否を判断できます。
一方、第三者が制作・販売・配布したEAやインジケーターについて、利用規約で改変が禁止されている場合や、権利関係が確認できない場合は対応できないことがあります。
EAFCでは、ex4 / ex5などからソースコードを復元するデコンパイル、第三者ファイルの無断解析、リバースエンジニアリングなど、権利侵害につながる作業は行いません。
| 状態 | 確認すること | 基本的な扱い |
|---|---|---|
| 自作ソース | mq4 / mq5、依存ファイル | 改修・移行可否を確認 |
| 制作依頼したソース | 契約・権利範囲 | 改変権限を確認 |
| 第三者販売製品 | 販売元規約、改変許可 | 権利確認後に判断 |
| ex4 / ex5のみ | 現在動作、仕様、資料 | 直接改修は行わない |
| 権利不明 | 入手経緯、利用条件 | 確認できない場合は対応不可 |
依頼前に整理するファイル
mq4
mq4 はMQL4のソースファイルです。
既存EAやインジケーターの改修では、mq4があるかどうかが重要です。mq4があれば、内部処理を確認しながら改修や移行を検討しやすくなります。
ex4
ex4 はMT4で実行するコンパイル済みファイルです。
ex4だけでは、内部ロジックを直接確認して改修することは基本的に難しくなります。ex4のみの場合は、現在の動作、画面、Inputs、希望仕様をもとに再作成を検討することがあります。
set
set ファイルは、EAやインジケーターのInputs設定を保存したファイルです。
相談時には、現在使っているsetファイル、変更前後のsetファイル、対象銘柄、時間足、用途を整理してください。ただし、Webhook URL、APIキー、認証トークンなどが含まれる場合は、そのまま送らないよう注意してください。
ログ
ExpertsログやJournalログは、EAやインジケーターの動作確認に役立ちます。
エラー、不具合、表示されない、通知が届かない、注文されないといった場合は、発生時刻前後のログを整理してください。
スクリーンショット
スクリーンショットは、表示状態、チャート右上、Inputs、ログ画面、通知設定などを確認するために役立ちます。
ただし、口座番号、Webhook URL、APIキー、GAS URL、認証トークンなどが映り込まないよう注意してください。
仕様メモ
仕様メモでは、作りたい機能、変更したい機能、不要な機能、現在困っている症状を整理します。
「利益が出るように」ではなく、「この条件でアラートを出したい」「この表示を追加したい」「このログを出したい」のように、機能仕様として記載してください。
| ファイル・資料 | 意味 | 相談時の使い方 |
|---|---|---|
| mq4 | MQL4ソースファイル | 改修・内容確認・移行検討に使う |
| ex4 | コンパイル済みファイル | 実行確認に使うが内部改修は難しい |
| set | Inputs設定ファイル | 現在設定や変更前後を確認する |
| ログ | Experts / Journalの記録 | 不具合や動作確認に使う |
| スクリーンショット | 表示状態や設定画面 | 見た目や症状の確認に使う |
| 仕様メモ | 作りたい内容の整理 | 開発範囲や確認事項を決める |
MQL4開発で注意したいこと
ex4のみの限界
ex4のみの場合、内部処理を直接確認して改修することは基本的に難しくなります。
そのため、ex4しかない場合は、現在の動作や表示をもとに、同等機能の再作成や仕様整理を検討する形になります。
利益保証ではない
MQL4でEAやインジケーターを作ることは、利益や勝率を保証することではありません。
開発で扱うのは、条件判定、表示、通知、注文処理、決済処理、ログ、集計、操作補助などのソフトウェア機能です。売買結果や将来の成績を保証するものではありません。
環境差
同じMQL4ツールでも、MT4環境、口座種別、銘柄名、時間足、スプレッド、VPS、自宅PC、通知設定によって動作確認の見え方が変わる場合があります。
不具合調査では、EAやインジケーターだけでなく、設置環境も整理してください。
バックテストとリアル差分
バックテストで確認できることと、リアル環境で確認することは異なります。
バックテストでは、過去データ上の条件判定や注文処理を確認できます。一方、リアル環境では、スプレッド、約定、通信、VPS、通知、取引時間などが関係します。
| 注意点 | 確認すること | 相談時の整理 |
|---|---|---|
| ex4のみ | ソースがないため内部確認が難しい | 再作成前提で仕様を整理する |
| 環境差 | 口座、銘柄、時間足、VPS | 動作環境を明記する |
| 外部通知 | Webhook、メール、通知設定 | URLや認証情報はマスクする |
| バックテスト差分 | テスト条件とリアル条件の違い | 検証条件を記録する |
EAを移行する時の確認ポイント
MT4 EAをMT5へ移行する場合、最初に確認するのは、EAがどの責務を持っているかです。
EAには、signal、execution、risk、exit、notification、external control、authなどの責務があります。すべてを一度に移行しようとすると、確認範囲が広くなります。
| 責務 | 確認する内容 | MT5作り直し時の注意 |
|---|---|---|
| signal | エントリー条件、インジ判定、時間条件 | 現在足か確定足かを確認する |
| execution | 注文、決済、SL/TP変更 | MqlTradeRequest、CTrade、retcode確認が必要 |
| risk | ロット、最大ポジション、損失制限、証拠金確認 | symbol仕様、volume step、margin modeを確認する |
| exit | 利確、損切り、トレール、時間決済 | Position / Deal / Historyの扱いを確認する |
| notification | メール、Push、Discord、外部通知 | WebRequestやWebhook情報の扱いに注意する |
| external control | 外部ファイル、シート、API、CSV設定 | 読み込み失敗時の挙動を仕様化する |
MT4版EAの動きが分かっている場合でも、MT5で同じ挙動にするには、注文管理と履歴管理の再設計が必要になることがあります。
インジケーターを移行する時の確認ポイント
MT4インジケーターをMT5へ移行する場合、表示の再現だけでなく、バッファ設計とEA連携の有無を確認します。
ラインや矢印を表示するだけなのか、EAからiCustom / CopyBufferで読みたいのかによって、作り直し方が変わります。
| 確認項目 | 内容 | MT5作り直し時の注意 |
|---|---|---|
| 表示形式 | 矢印、ライン、ヒストグラム、サブウィンドウ | 描画方式をMQL5向けに整理する |
| バッファ番号 | BUY、SELL、ライン、補助値 | EA連携する場合は固定管理する |
| サインなし値 | EMPTY_VALUE、0、その他 | CopyBuffer側の判定と合わせる |
| リペイント | 過去サインが変わるか | EA化前に必ず確認する |
| input | 期間、閾値、表示設定など | MT5版でも同じ意味で使うか見直す |
| EA連携 | EAから値を読むか | iCustom / CopyBuffer前提で設計する |
MQL5インジケーター開発とEA連携の詳細は、MQL5インジケーター開発・EA連携完全ガイドも確認してください。
MT4インジケーターの表示・判定・通知を移し替える
MT4インジをMT5へ移行する前に
そのまま入れられない場合がある
MT4インジケーターは、通常MT4用のフォルダへ配置して使います。MT5では、MT5用のインジケーターとして作られたファイルが必要です。
MT4用の ex4 や mq4 をMT5へ入れても、MT5インジケーターとしてそのまま動作しない場合があります。これは、MT4とMT5で開発言語、ファイル形式、インジケーター構造が異なるためです。
変換ではなく作り直しになるケース
MT4インジケーターをMT5へ移す場合、単純な変換ではなく、MT5用に作り直しになるケースがあります。
特に、サイン表示、矢印表示、サブウィンドウ、複数バッファ、マルチタイムフレーム、アラート、外部通知、独自ライブラリを含む場合は、表示や通知の仕様を確認しながら再設計が必要になることがあります。
まず確認する資料
移行相談の前に、現在のインジケーターのファイル、表示画面、Inputs設定、通知条件、ログを整理してください。
最も重要なのは、mq4 ソースがあるかどうかです。mq4 があれば内部仕様を確認しやすくなりますが、ex4 のみの場合は、現在の表示や動作をもとに再現作成を検討する形になる場合があります。
| 最初に確認すること | 見る場所 | 判断に使う内容 |
|---|---|---|
| mq4の有無 | 手元のファイル | 内部ロジックを確認できるか |
| ex4のみか | Indicatorsフォルダ | 再現作成前提になる可能性 |
| 現在の表示 | チャート画面 | MT5側で再現したい見た目 |
| Inputs | インジ設定画面 | 設定項目、通知ON/OFF、対象時間足 |
| ログ | Expertsログ | 初期化エラーや通知エラー |
ファイル形式の確認
mq4
mq4 は、MT4向けMQL4のソースファイルです。
MT4インジケーターをMT5へ作り直す場合、mq4があると、計算条件、バッファ、表示処理、通知処理を確認しやすくなります。ただし、mq4がある場合でも、そのままMQL5へ貼り替えるだけで動くとは限りません。
ex4
ex4 は、MT4で実行するコンパイル済みファイルです。
ex4のみの場合、内部ロジックを直接確認して改修・変換することは基本的に難しくなります。この場合は、現在の表示、スクリーンショット、Inputs、サイン条件、通知条件をもとに、MT5用として再現作成を検討する形になります。
mq5
mq5 は、MT5向けMQL5のソースファイルです。
MT5側に既存のmq5がある場合は、その内容を確認して改修できます。MT4版とMT5版の両方を運用したい場合は、mq4とmq5を別々に管理する必要があります。
ex5
ex5 は、MT5で実行するコンパイル済みファイルです。
ex5のみの場合も、内部ロジックを直接確認して改修することは基本的に難しくなります。MT5側で改修したい場合は、mq5ソースがあるかを確認してください。
set
set ファイルは、インジケーターのInputs設定を保存したファイルです。
MT4とMT5で同じ名前の設定項目があっても、内部処理が同じとは限りません。移行相談では、現在使っているsetファイルを保存し、どの設定をMT5側でも再現したいか整理してください。
テンプレート
インジケーターの表示状態は、テンプレートに保存されている場合があります。
チャート背景、色、ライン設定、複数インジケーターの組み合わせなどがある場合は、テンプレートやスクリーンショットも確認資料になります。ただし、テンプレートだけでは内部ロジックは分かりません。
| ファイル形式 | 対象環境 | 意味 | 移行相談での扱い |
|---|---|---|---|
| mq4 | MT4 | MQL4ソースファイル | 内部確認・再作成判断に重要 |
| ex4 | MT4 | MT4用実行ファイル | 実行確認は可能だが内部確認は難しい |
| mq5 | MT5 | MQL5ソースファイル | MT5側の改修確認に重要 |
| ex5 | MT5 | MT5用実行ファイル | 実行確認は可能だが内部確認は難しい |
| set | MT4/MT5 | Inputs設定ファイル | 設定項目の確認に使用 |
| テンプレート | MT4/MT5 | チャート表示設定 | 見た目の確認に有効 |
表示内容の確認
メインチャート
インジケーターがメインチャート上に表示されるのかを確認してください。
ローソク足上にライン、矢印、サイン、ラベル、価格帯、背景色などを表示する場合、MT5側でも同じ位置や色で再現したいのか、表示を整理したいのかを決めます。
サブウィンドウ
インジケーターによっては、メインチャートではなくサブウィンドウに表示されます。
RSIや独自オシレーターのようにサブウィンドウへ表示する場合、最小値、最大値、基準線、色、ライン数、ヒストグラム表示の有無を確認してください。
ライン
ライン表示では、色、太さ、スタイル、計算期間、表示範囲を確認します。
MT4では表示されていたラインが、MT5側で同じように出るとは限りません。計算条件と描画方式を分けて確認します。
矢印
矢印表示がある場合は、BUYサイン、SELLサイン、表示位置、矢印の種類、サイズ、色を整理してください。
ローソク足の上に出るのか、下に出るのか、確定足で出るのか、未確定足で出るのかも重要です。
サイン
サイン表示では、どの条件でサインが出るかを確認します。
単に「矢印が出る」だけではなく、どのインジケーター値、どのクロス、どの時間足、どの足で判定するのかを整理する必要があります。
文字表示
チャート上に文字、数値、状態表示、パネルを出すインジケーターでは、表示位置や更新タイミングを確認します。
文字表示は、画面サイズやチャート縮尺によって見え方が変わる場合があります。MT5側では、表示位置を再設計した方がよい場合もあります。
| 表示内容 | 確認する項目 | 相談時にあるとよい資料 |
|---|---|---|
| メインチャート表示 | ライン、矢印、ラベル、背景 | チャート全体のスクリーンショット |
| サブウィンドウ表示 | 最小値、最大値、基準線、ライン数 | サブウィンドウ部分の画像 |
| ライン | 色、太さ、計算期間、表示範囲 | Inputsと表示画面 |
| 矢印 | BUY/SELL、位置、色、サイズ | サインが出た場面の画像 |
| 文字表示 | 表示位置、内容、更新タイミング | 表示パネルやラベルの画像 |
判定条件の確認
サイン条件
サインインジケーターをMT5へ移行する場合は、サイン条件を文章で整理してください。
BUY条件とSELL条件を分け、どの値がどうなった時にサインを出すのかを確認します。条件が不明な場合、MT5側では見た目を参考にした再現作成になることがあります。
アラート条件
アラート付きインジケーターでは、表示条件と通知条件が同じかどうかを確認します。
矢印が出た時に通知するのか、足確定後だけ通知するのか、同じ足では1回だけ通知するのかを整理してください。
対象時間足
対象時間足は、移行時に必ず確認する項目です。
M1だけ、M5以上、M15とH1、全時間足対応など、対象時間足が決まっている場合は明記してください。時間足によってサインの出方が変わるインジケーターもあります。
複数時間足
複数時間足を参照するインジケーターでは、どの時間足の値を使うのかを整理します。
たとえば、M5チャート上でH1の条件を見る、下位足と上位足の方向が一致した時だけサインを出す、などの条件がある場合は、MT5側でも仕様を明確にする必要があります。
計算に使うデータ
インジケーターが計算に使うデータも確認してください。
終値、始値、高値、安値、出来高、スプレッド、他インジケーター値など、何を参照しているかによって移行内容が変わります。
| 判定項目 | 整理する内容 | 注意点 |
|---|---|---|
| BUYサイン | どの条件で表示するか | SELL条件と分ける |
| SELLサイン | どの条件で表示するか | BUYと完全反対か確認 |
| アラート | 表示時、足確定時、条件成立時 | 重複通知防止を確認 |
| 対象時間足 | 対象足、固定足、チャート足 | MT5側で再現する条件を明確にする |
| 計算データ | 価格、出来高、他インジ値 | 参照先が必要か確認する |
通知・外部連携の確認
アラート
MT4インジケーターにポップアップアラートがある場合、MT5側でも同じタイミングで通知するか確認してください。
サイン表示時に通知するのか、足確定時に通知するのか、初回だけ通知するのか、同じ足で複数回通知するのかを整理します。
メール
メール通知を使っている場合は、MT4本体側の設定とインジケーター側の設定を分けて確認します。
MT5側でもメール通知を使う場合、通知条件、通知文面、送信タイミングを再確認してください。
プッシュ通知
スマホ通知などのプッシュ通知を使う場合は、通知先、通知条件、通知文面、重複通知防止を整理します。
MT4とMT5では設定画面や通知処理が異なる場合があるため、移行時に確認が必要です。
Discord
Discord通知を使う場合は、Webhook URL、通知条件、通知文面、送信タイミングを整理してください。
Webhook URLは通知先へ接続できる情報です。公開ページや通常の問い合わせ文面へ、そのまま貼らないよう注意してください。
WebRequest
外部連携を使う場合、WebRequest設定が必要になることがあります。
MT5側で外部通知や外部連携を使う場合は、許可URL、送信処理、エラーログ、リトライの有無を確認します。ただし、APIキーや認証トークンなどの実値は共有前にマスクしてください。
| 通知・連携 | 確認する内容 | 注意点 |
|---|---|---|
| アラート | 通知条件、通知タイミング、文面 | 重複通知を確認 |
| メール通知 | MT側設定、送信条件、文面 | 本体設定とインジ設定を分ける |
| プッシュ通知 | 通知先、タイミング、内容 | 端末側設定も確認 |
| Discord通知 | Webhook、文面、送信条件 | URL実値をそのまま共有しない |
| WebRequest | 許可URL、送信ログ、エラー | 認証情報をマスクする |
移行ではなく作り直しになるケース
ソースなし
mq4ソースがなく、ex4のみの場合は、内部ロジックを直接確認できません。
この場合は、既存インジケーターを変換するのではなく、スクリーンショット、Inputs、サイン条件、表示条件、ログをもとに、MT5用として再現作成を検討する形になります。
古い仕様
長く使っているインジケーターでは、古い仕様や使っていない機能が残っている場合があります。
MT5化するタイミングで、不要な表示、不要な通知、使っていないInputs、確認しづらいログを整理する方がよい場合があります。
外部ライブラリ依存
外部ライブラリや共通ファイルに依存している場合、本体ファイルだけでは移行できないことがあります。
mqhファイル、DLL、画像、テンプレート、外部ファイル、認証処理などがある場合は、関連ファイルも確認してください。
MT5側で仕様変更したい場合
MT5化と同時に表示や通知を変更したい場合は、単なる移行ではなく、仕様変更を含む作り直しになります。
たとえば、サイン条件を変えたい、通知文を変えたい、パネル表示を追加したい、複数時間足対応にしたい場合は、移行前に仕様を整理してください。
| 状況 | 判断の目安 | 必要な資料 |
|---|---|---|
| mq4がある | 既存仕様を確認しやすい | mq4、set、表示画面、ログ |
| ex4のみ | 再現作成になる可能性が高い | 画像、Inputs、条件説明 |
| 外部ファイルあり | 依存関係の確認が必要 | mqh、DLL、テンプレート、関連ファイル |
| 通知あり | 通知仕様の再確認が必要 | 通知条件、文面、ログ |
| 仕様変更あり | 移行ではなく改修込み | 残す機能、削る機能、追加機能 |
OrderSelect型とPosition / Deal / History型の違い
MT4 EAの移行で特に注意が必要なのが、注文管理の考え方です。
MT4では、注文やポジションをOrderSelect中心に扱う設計が多くあります。MT5では、現在のポジション、注文、約定履歴、注文履歴を分けて扱う考え方になります。
| 管理対象 | MT4での考え方 | MT5での考え方 | 移行時の確認 |
|---|---|---|---|
| 新規注文 | OrderSend中心 | MqlTradeRequest、OrderSend、CTradeなど | retcode、order、deal、commentを確認する |
| 保有ポジション | OrderSelectで選択する設計が多い | PositionSelect、PositionGet系 | Netting / Hedgingの違いを確認する |
| 約定履歴 | 注文履歴として見る設計が多い | Dealとして確認する | 損益集計や決済判定の見直しが必要 |
| 注文履歴 | OrderHistory系の考え方 | HistorySelect、HistoryOrder、HistoryDeal | 期間指定とticket管理を確認する |
MT5で作り直す場合、単にOrderSelect相当を書き換えるだけではなく、EAが何を管理していたのかを分解して確認する必要があります。
MT4のOrderSendと注文条件を読み解く
OrderSendとは何か
MT4 EAで注文を送る処理
OrderSendは、MT4 EAから新規注文を送るために使われる注文処理です。
EAが条件判定を行い、注文条件を満たした時に、通貨ペア、注文種別、ロット、価格、スリッページ、SL/TP、コメント、MagicNumberなどを指定して注文を送ります。
ただし、OrderSendを書けば必ず注文が通るわけではありません。MT4側の自動売買設定、EA個別許可、口座状態、取引時間、証拠金、ロット制限、価格ずれ、SL/TP距離などによって注文が拒否される場合があります。
成行注文と予約注文
OrderSendでは、成行注文だけでなく、予約注文を扱う場合もあります。
成行注文では、現在のBidまたはAskに近い価格で注文を送ります。予約注文では、指定価格に到達した時に注文するための条件を設定します。
EAを確認する時は、そのEAが成行注文だけを使っているのか、Buy Stop、Sell Stop、Buy Limit、Sell Limitなどの予約注文も使っているのかを分けて確認してください。
EAの売買実行部分
OrderSendは、EAの中でも売買実行に近い重要部分です。
エントリー条件が正しくても、OrderSendに渡す値が不正であれば注文は失敗します。逆に、OrderSendの呼び出し条件が広すぎると、想定より多く注文する可能性があります。
そのため、EA開発や既存EA改修では、エントリー判定とOrderSend呼び出し部分を分けて確認することが重要です。
| 確認対象 | 主な内容 | 確認理由 |
|---|---|---|
| エントリー条件 | 注文する前の判定 | なぜ注文しようとしたか確認するため |
| OrderSend | 実際に注文を送る処理 | 注文値とエラーを確認するため |
| エラー処理 | 注文失敗時の確認 | 原因をログで追うため |
| MagicNumber | EA注文の識別番号 | 他EAや手動注文と分けるため |
OrderSendで確認する主な項目
通貨ペア
OrderSendでは、どの通貨ペアへ注文を送るかを確認します。
チャートの通貨ペアに注文するEAもあれば、コード内で固定された通貨ペアへ注文するEAもあります。口座によっては、通貨ペア名にサフィックスが付く場合があります。
注文が出ない場合は、EAが想定している通貨ペア名と、MT4上の実際の銘柄名が一致しているか確認してください。
注文種別
注文種別では、BUY、SELL、予約注文のどれを送るかを確認します。
BUY条件の時にBUYを送っているか、SELL条件の時にSELLを送っているか、反対方向を誤って指定していないかを確認します。
既存EA改修では、注文種別が固定値になっているのか、条件によって切り替えているのかも確認してください。
ロット
ロットは注文数量に関係する項目です。
この記事では特定のロットを推奨しません。確認するべきことは、EAがどの変数またはInputsからロットを取得しているか、最小ロットやロットステップに合っているか、複数EAを使う場合に合計ロットが想定外になっていないかです。
注文エラーが出る場合、ロットが口座仕様に合っていない、証拠金が不足している、ロットが0または不正値になっている可能性があります。
価格
OrderSendでは、注文価格も確認対象です。
成行BUYではAsk、成行SELLではBidを使うのが一般的な考え方です。価格の取得タイミングや桁数処理が不適切な場合、価格ずれや注文拒否につながる場合があります。
価格関連のエラーが出る場合は、Bid、Ask、Digits、Point、RefreshRatesの扱い、注文直前の価格更新を確認してください。
スリッページ
スリッページは、注文価格と実際の約定価格の許容差に関係する項目です。
スリッページの扱いは、EAの注文可否や注文失敗時の確認に関係します。ただし、スリッページの値を大きくすればよいという話ではありません。
確認するべきことは、EAがどの単位でスリッページを指定しているか、口座の桁数や銘柄仕様に合っているか、注文失敗時にどのエラーが出ているかです。
SL/TP
SL/TPは、注文時に設定する損切り・利確の価格です。
EAによっては、OrderSend時にSL/TPを同時に設定する場合もあれば、注文後にOrderModifyで設定する場合もあります。
SL/TPが近すぎる場合、ストップレベルや価格仕様により注文が拒否されることがあります。注文エラーが出る場合は、SL/TP距離、StopLevel、FreezeLevel、桁数、価格方向を確認してください。
コメント
注文コメントは、注文履歴やポジション確認で補助的に使われます。
EA名、ロジック名、方向、設定名などをコメントに入れる設計もあります。ただし、口座番号、Webhook URL、APIキー、認証トークンなどの重要情報をコメントに入れないよう注意してください。
MagicNumber
MagicNumberは、EA注文を識別するための番号です。
OrderSendで指定したMagicNumberは、その後のOrderSelect、OrderClose、OrderModify、履歴確認、ログ確認に関係します。
複数EAを同じ口座で使う場合は、MagicNumberの重複がないか、意図した管理対象になっているかを確認してください。
| OrderSendの確認項目 | 見る内容 | 起きやすい問題 |
|---|---|---|
| 通貨ペア | チャート銘柄か固定銘柄か | サフィックス違いで注文しない |
| 注文種別 | BUY / SELL / 予約注文 | 方向の取り違え |
| ロット | Inputs、計算値、最小ロット | 不正ロット、証拠金不足 |
| 価格 | Bid、Ask、桁数、価格更新 | 価格ずれ、注文拒否 |
| SL/TP | 価格方向、距離、StopLevel | ストップ距離不足 |
| MagicNumber | EA注文の識別番号 | 他EAの注文と混在 |
MagicNumberとの関係
EA注文の識別
MagicNumberは、EAが自分の注文を識別するために使う番号です。
OrderSendでMagicNumberを指定しておくと、後からその注文をEA側で探し、決済、変更、集計、通知などに使うことができます。
MagicNumberを使わない、または複数EAで同じ番号を使っている場合、どのEAの注文なのか判断しにくくなります。
複数EA運用
同じMT4口座で複数EAを使う場合、MagicNumberの設計が重要になります。
EAごと、通貨ペアごと、ロジックごとにMagicNumberを分けることで、注文管理や決済対象を分離しやすくなります。
既存EAを改修する場合は、OrderSendで指定しているMagicNumberと、決済処理側で参照しているMagicNumberが一致しているか確認してください。
決済対象の取り違え防止
MagicNumber確認で特に重要なのは、決済対象の取り違え防止です。
新規注文では正しくMagicNumberを指定していても、決済処理側でMagicNumberを見ていない場合、別EAや手動注文を対象にしてしまう可能性があります。
OrderSendだけでなく、OrderClose、OrderModify、OrderSelect周辺の条件も合わせて確認してください。
| 確認箇所 | 確認すること | 注意点 |
|---|---|---|
| OrderSend | MagicNumberを指定しているか | 注文識別の起点になる |
| OrderSelect | 対象注文を正しく選んでいるか | 通貨ペアとMagicNumberで絞る |
| OrderClose | 決済対象が正しいか | 別EAや手動注文を巻き込まない |
| ログ | MagicNumberが出ているか | 調査時に追跡しやすくする |
注文エラー時に確認すること
ロット制限
注文エラーが出た場合は、まずロットが口座仕様に合っているか確認してください。
最小ロット、最大ロット、ロットステップに合わない値をOrderSendへ渡していると、注文が拒否されることがあります。
ロットを計算しているEAでは、計算後の値が正規化されているか、0や負の値になっていないか、ログに出して確認すると原因を確認しやすくなります。
証拠金
証拠金不足でも注文は失敗します。
複数EAを同時に使っている場合や、複数ポジションを持つEAでは、EA単体の設定だけでなく、口座全体の保有状況も確認してください。
証拠金に関係するエラーが疑われる場合は、Journalログ、Expertsログ、口座残高、証拠金維持率、保有ポジションを合わせて確認します。
取引時間
取引時間外にOrderSendを実行しようとすると、注文が通らない場合があります。
EA側の稼働時間設定、MT4サーバー時間、銘柄の取引時間、週末、メンテナンス時間を確認してください。
取引時間条件があるEAでは、注文しない理由をログに出しておくと、注文エラーなのか、注文前にブロックしているのかを分けて確認できます。
価格ずれ
注文価格が現在価格からずれている場合、注文が拒否されることがあります。
価格取得からOrderSendまでの間に時間が空いている、RefreshRatesを行っていない、桁数処理が不適切、BidとAskを取り違えている場合などが確認対象です。
ストップレベル
SL/TPの距離が近すぎる場合、ストップレベルの制限により注文が拒否されることがあります。
OrderSend時にSL/TPを入れる場合は、価格方向、距離、StopLevel、FreezeLevel、銘柄の桁数を確認してください。
EAによっては、注文直後にOrderModifyでSL/TPを設定する設計の方が適している場合もあります。既存EAを改修する時は、現在の設計を確認してから判断します。
接続状態
MT4の接続状態や自動売買設定も確認対象です。
EAのコードが正しくても、MT4が未接続、自動売買OFF、EA個別許可OFF、口座ログイン不備、読み取り専用状態などでは注文できません。
| 注文エラーの確認項目 | 確認する内容 | 見る場所 |
|---|---|---|
| ロット | 最小ロット、ロットステップ、計算後の値 | Inputs、Expertsログ、銘柄仕様 |
| 証拠金 | 口座残高、保有ポジション、必要証拠金 | ターミナル、Journalログ |
| 取引時間 | サーバー時間、銘柄取引時間 | MT4、Expertsログ |
| 価格 | Bid、Ask、価格更新、桁数 | Expertsログ、チャート |
| SL/TP | 距離、方向、StopLevel | 銘柄仕様、ログ |
| 接続状態 | ログイン、自動売買、通信 | Journalログ、MT4画面 |
既存EA改修で見るポイント
OrderSendの呼び出し箇所
既存EAを改修する場合は、まずOrderSendがどこで呼ばれているか確認してください。
複数ロジックを持つEAでは、OrderSendが複数箇所にある場合があります。BUY用、SELL用、ナンピン用、再エントリー用、予約注文用など、用途ごとに分かれている可能性があります。
呼び出し箇所を確認せず一部だけ修正すると、別の注文処理が古いまま残る場合があります。
エラー処理
OrderSendの戻り値とエラー処理を確認してください。
注文に失敗した時に、エラー番号、通貨ペア、注文種別、ロット、価格、SL/TP、MagicNumber、発生時刻をログに出しているかが重要です。
エラー処理がないEAでは、注文が失敗しても理由が分からず、不具合調査が難しくなります。
リトライ
既存EAにリトライ処理がある場合は、回数、間隔、条件を確認してください。
リトライが多すぎると、同じ注文を何度も試す可能性があります。逆に、必要な確認なしに一度だけで終了すると、一時的な価格ずれや通信状態で注文機会を逃す場合があります。
リトライは、売買判断ではなく、注文処理の安定性確認として慎重に扱う必要があります。
ログ出力
OrderSend周辺では、注文前ログ、注文成功ログ、注文失敗ログを分けると確認しやすくなります。
注文前ログでは、注文しようとした理由と値を確認します。注文成功ログでは、チケット番号や注文内容を確認します。注文失敗ログでは、エラー番号と注文条件を確認します。
パラメータとの連動
OrderSendに渡している値が、Inputsやsetファイルと正しく連動しているか確認してください。
Inputsでロットを変更したつもりでも、コード内で固定ロットを使っている場合があります。MagicNumber、SL/TP、スリッページ、コメントなども、Inputsと実際の注文値が一致しているか確認します。
| 改修時の確認箇所 | 確認すること | 注意点 |
|---|---|---|
| 呼び出し箇所 | OrderSendが何箇所あるか | 一部だけ修正しても不十分な場合がある |
| 戻り値 | 注文成功・失敗を判定しているか | 失敗時の処理が必要 |
| エラー処理 | GetLastErrorなどで原因を残しているか | ログがないと調査しにくい |
| リトライ | 回数、間隔、条件 | 過剰な再送に注意 |
| Inputs連動 | setファイルの値が反映されるか | 固定値が残っていないか確認 |
コード例を扱う時の注意
売買ロジックの推奨ではない
OrderSendのコード例を確認する場合でも、それは売買方法の推奨ではありません。
コード例は、MQL4で注文処理を理解するための技術確認として扱います。どの条件で売買すべきか、どのロットがよいか、どの銘柄で使うべきかを示すものではありません。
環境により条件が異なる
同じOrderSend処理でも、口座、銘柄、桁数、最小ロット、スプレッド、取引時間、サーバー状態によって結果が変わる場合があります。
コードだけを見て判断せず、実際のMT4環境、銘柄仕様、setファイル、Expertsログ、Journalログを合わせて確認してください。
実運用前に検証が必要
OrderSendを含むEAは、注文処理を行うため、実運用前に検証が必要です。
バックテスト、デモ環境、少数条件での確認、ログ確認、注文失敗時の挙動確認、自動売買ON/OFFの確認、VPSでの再起動後確認などを行ってから判断してください。
この記事では、売買判断ではなく、注文処理を安全に確認するための技術項目を扱います。
Netting口座とHedging口座の確認
MT5では、口座のポジション管理方式によって、ポジションの扱いが変わる場合があります。
MT4の感覚で複数ポジションを扱っていたEAをMT5へ移行する場合、Hedging口座を前提にするのか、Netting口座にも対応するのかを確認します。
| 項目 | Hedging | Netting |
|---|---|---|
| 同一銘柄の複数ポジション | 複数保有できる設計 | 基本的に集約される設計 |
| MT4感覚との近さ | 近い場合がある | 考え方が異なる |
| EA移行時の注意 | Magic Numberやticket管理を確認する | ポジション集約を前提に仕様を見直す |
| 複数ロジックEA | ロジック別ポジション管理をしやすい | 同一銘柄での分離に注意が必要 |
MT4版のEAが複数ポジション、ナンピン、分割決済、ロジック別Magic Numberを使っている場合、MT5側の口座方式と管理仕様を必ず確認してください。
インジケーターバッファと描画方式の違い
MT4インジケーターをMT5へ移行する場合、見た目だけではなく、バッファの意味を整理する必要があります。
特にサインインジをEA化する場合、表示されている矢印ではなく、EAが取得するバッファ値が重要になります。
| 確認項目 | 内容 | MT5側の確認 |
|---|---|---|
| BUYバッファ | 買いサインに相当する値 | 何番のバッファでCopyBufferするか |
| SELLバッファ | 売りサインに相当する値 | BUYと混同しないようにする |
| ライン値 | 移動平均、バンド、基準線など | サインとラインを分ける |
| 補助値 | 内部判定用の値 | EAから読む必要があるか確認する |
| 描画形式 | 矢印、ライン、ヒストグラムなど | 表示と判定を混同しない |
MT5では、iCustomでハンドルを作成し、CopyBufferで値を取得する流れになります。MT4側のiCustom感覚と異なるため、EA連携時は注意が必要です。
外部連携・DLL・WebRequestの確認
MT4版EAやインジケーターに、外部ファイル、DLL、WebRequest、Webhook、Google Sheets、Discord通知、認証処理などがある場合、MT5移行時に確認が必要です。
| 外部要素 | 確認すること | 注意点 |
|---|---|---|
| 外部ファイル | Filesフォルダ、Commonフォルダ、CSV、設定ファイル | 保存先と文字コードを確認する |
| DLL | 使用有無、許可設定、代替方法 | 販売・配布時は特に説明が必要 |
| WebRequest | 許可URL、HTTP応答、timeout | Webhook URLやAPIキーを共有しない |
| Google Sheets | GAS URL、権限、送信形式 | GAS URLの実値を本文やログに出さない |
| Discord通知 | Webhook、payload、通知抑制 | Webhook URLをそのまま送らない |
| 認証処理 | 口座番号、token、外部照合 | 認証情報をログに出さない |
外部連携や通知の安全管理は、MT5外部連携・通知セキュリティガイドも参考にしてください。
setファイルとパラメータの扱い
MT4版のsetファイルを持っている場合でも、そのままMT5版へ読み込めるとは限りません。
MT5で作り直す場合は、input名、型、初期値、選択肢、表示順、コメント、セクション区切りを整理し直す必要があります。
| 確認項目 | 内容 | MT5作り直し時の注意 |
|---|---|---|
| input名 | パラメータ名 | MT4版と同じ意味か確認する |
| 型 | int、double、bool、string、enumなど | MQL5側で適切な型へ整理する |
| 初期値 | 標準設定 | MT4版の値をそのまま使うか見直す |
| 単位 | points、価格差、秒、分、pips感覚など | 銘柄仕様に合わせて明記する |
| 表示順 | Inputs欄の並び | 国内向けには分かりやすい日本語説明を付ける |
| 不要項目 | 使っていない設定 | MT5版では整理・非表示化を検討する |
setファイルを送る前の確認は、MT5でEAのsetファイルを送る前に確認することも参考になります。
バックテスト条件の再整理
MT4版とMT5版でバックテスト結果が同じになるとは限りません。
テスターの仕様、ヒストリカルデータ、spread、銘柄名、サーバー時間、約定条件、手数料、スワップ、計算方法が異なる場合があるためです。
| 確認項目 | MT4版 | MT5版 | 注意点 |
|---|---|---|---|
| 銘柄名 | MT4上のsymbol | MT5上のsymbol | サフィックス差に注意する |
| 時間足 | MT4テスター条件 | MT5テスター条件 | 参照時間足も確認する |
| 期間 | 開始日・終了日 | 開始日・終了日 | 同じ期間に揃える |
| spread | 固定または実データ | テスター設定や実データ | 条件差を記録する |
| ロット・証拠金 | MT4口座条件 | MT5口座条件 | 銘柄仕様と口座条件を確認する |
| ログ | MT4側ログ | MT5側ログ | 同じイベントを比較できるようにする |
バックテスト結果は将来の結果を保証するものではありません。移行時は、収益結果の比較ではなく、条件、判定、注文、決済、ログの整合性を確認することが重要です。
検証環境の整理は、MT5検証・運用環境ガイドも参考にしてください。
MT5で作り直す時に仕様化する項目
MT4資産をMT5で作り直す時は、元のEAやインジケーターをそのまま再現するのか、必要な機能だけ整理して作り直すのかを決めます。
特に古いEAやインジケーターでは、使っていないパラメータ、不要な表示、分かりにくいログ、曖昧な単位が残っている場合があります。
| 仕様化する項目 | 確認する内容 | MT5版で整理すること |
|---|---|---|
| 対象機能 | EA、インジ、通知、集計、補助ツール | 作り直す範囲を決める |
| 判定条件 | signalの条件 | 現在足か確定足かを決める |
| 注文処理 | executionの内容 | 新規、決済、変更を分ける |
| リスク制御 | ロット、最大数、停止条件 | 銘柄仕様と口座条件を確認する |
| 表示 | パネル、ラベル、ライン、矢印 | 表示系と判定系を分ける |
| ログ | Expertsログ、CSV、外部記録 | 検証しやすいログ項目を決める |
| 外部連携 | WebRequest、CSV、GAS、Discord | 認証情報やURLの扱いを安全にする |
仕様化の段階で、表示系と判定系、input初期値とruntime状態、推奨値と検証用値を混同しないことが重要です。
移行できるもの・作り直した方がよいもの
MT4からMT5への移行では、すべてをそのまま移すより、作り直した方が分かりやすい場合があります。
| 対象 | 移行しやすい場合 | 作り直した方がよい場合 |
|---|---|---|
| 単純な表示インジ | ロジックが明確でMQ4ソースがある | 表示と内部値が複雑、リペイントが不明 |
| サインインジ | BUY / SELLバッファが明確 | 矢印表示だけでバッファ仕様が不明 |
| 単純EA | 注文・決済条件が明確 | 古いコードで責務が混在している |
| ナンピン・複数ロジックEA | Magic、ロジック、ポジション管理が明確 | OrderSelect依存が強く履歴管理が複雑 |
| 外部連携EA | URLやpayload仕様が整理されている | 認証情報や外部仕様が不明 |
MT5版では、古いMT4版の構造を無理に残すより、MT5向けに責務分離して作り直す方が、検証・保守・販売後サポートがしやすくなる場合があります。
既存機能を維持するかMT5で再設計するか
以下のコード例は、個別の処理と確認項目を読むためのものです。複数の例をそのまま一つのEAへ連結する前提ではありません。初期化、値の取得、状態更新、終了処理をそれぞれの例で区別して確認してください。
MT4とMT5の違いを確認する前に
「どちらが良いか」ではなく、目的と現在の資産で判断する
MT4とMT5を比較する時は、「どちらが良いか」だけで判断するのではなく、現在持っているEA・インジケーター、ソースコード、今後必要になる機能、保守期間などを整理することが重要です。
すでにMT4用EAやMT4用インジケーターを使用している場合は、MT4をそのまま維持するのか、MT5へ移行するのかを確認します。一方、EAやインジケーターを新しく作る場合は、EAFCではMT5を基本として仕様を整理します。
| 確認したいこと | 基本的な考え方 | 主に確認するもの |
|---|---|---|
| 既存MT4 EAを使い続けたい | MT4のまま修正・保守できるか確認 | mq4、ex4、set、現在の挙動、ログ |
| 既存MT4インジを修正したい | MT4での修正可否を確認 | mq4、ex4、表示条件、通知、ログ |
| 新規開発したい | MT5向けの新規開発として整理 | 必要機能、仕様、表示、通知、検証条件 |
| MT4を大幅に拡張したい | MT5への移行・再構築も比較 | 既存仕様、追加機能、保守方針 |
| MT4からMT5へ移行したい | 単純変換ではなく再設計範囲を確認 | ソース、機能、表示、発注・決済、ログ |
| ex4しか持っていない | 直接改修は原則困難 | 現在動作、画面、Inputs、仕様資料 |
投資成果ではなくツール環境の違いとして確認する
MT4とMT5の違いは、利益や勝率の違いとして判断するものではありません。
EAやインジケーターの開発・改修では、どの環境で動かすのか、どのファイル形式なのか、どのように注文やポジションを識別するのか、どのログを確認できるのか、どの方法で検証するのかを整理します。
そのため、MT4/MT5の比較では、売買結果ではなく、既存資産、開発・改修可否、移行可否、保守性、検証方法を中心に確認してください。
既存EA・インジケーターを移行する前に確認すること
mq4 / mq5の有無
既存EAやインジケーターを改修・移行する場合、最初に確認するのはソースコードの有無です。
mq4やmq5がある場合は、内部ロジックや依存関係を確認できるため、改修または移行範囲を判断しやすくなります。mqhなどの依存ファイルがある場合は、それらも確認が必要です。
ex4 / ex5のみの場合
ex4やex5のみの場合、内部ロジックを直接確認して改修することは基本的にできません。
この場合は、現在の動作、画面、Inputs、setファイル、マニュアル、ログ、依頼者が把握している仕様などを整理し、必要に応じて再構築を検討します。
EAFCでは、第三者ファイルのデコンパイル、無断解析、リバースエンジニアリングなど、権利侵害につながる作業は行いません。
権利・利用条件の確認
第三者が制作・販売・配布したEAやインジケーターを改修する場合は、依頼者が改変を依頼できる権利を持っているか確認します。
購入元の規約で改変や再配布が禁止されている場合や、権利関係を確認できないコードについては、対応できない場合があります。
setファイル
改修や移行相談では、現在どの設定で使っているのかを確認する資料になります。ただし、Webhook URL、APIキー、認証トークンなどが含まれている場合は必ず削除またはマスクしてください。
動作ログ
動作ログは、現在のEAやインジケーターがどのように動いているかを確認するために役立ちます。
エントリーしない、決済しない、表示されない、通知が届かない、注文エラーが出るといった症状がある場合は、発生時刻前後のExpertsログやJournalログと再現手順を整理してください。
スクリーンショット・既存マニュアル
既存ツールの再構築や移行では、スクリーンショットや既存マニュアルも仕様確認に役立ちます。
チャート表示、矢印位置、ライン、パネル、Inputs、操作手順などを確認できる資料がある場合は、機密情報を伏せたうえで整理してください。
| 相談前に準備する情報 | 確認できること |
|---|---|
| 対象ツール名・バージョン | 対象製品を特定できる |
| MT4 / MT5 | 現在の対象環境を確認できる |
| mq4 / mq5 / mqh | 内部確認・改修・移行可否を判断しやすい |
| ex4 / ex5 | 実行ファイルしかないかを確認できる |
| setファイル | 現在の設定を確認できる |
| 仕様書・マニュアル | 想定動作を確認できる |
| スクリーンショット | 表示や操作状態を確認できる |
| Experts / Journalログ | 現在の動作・エラーを確認できる |
MT4を維持するかMT5へ移行するか
既存MT4をそのまま維持する場合
すでにMT4用EAやMT4用インジケーターを使用しており、小規模な不具合修正、表示変更、設定追加などが目的の場合は、MT4のまま改修できる場合があります。
この場合は、対象ソースコード、現在の挙動、修正箇所、ログ、検証条件を確認して対応可否を判断します。
MT5への移行を検討した方がよい場合
既存MT4製品へ大規模な機能追加を行う場合、外部連携を大きく拡張する場合、長期的に利用する場合、今後も継続して機能追加する予定がある場合は、MT5への移行・再構築を検討します。
その際は、MT4版をそのまま複製するだけではなく、現在必要な機能、不要になった機能、新たに追加する機能を整理してからMT5側の仕様を決める方が、保守しやすい構成にしやすくなります。
新規開発の場合
新しいEA、インジケーター、コピーEA、通知・補助ツール等を一から作成する場合は、EAFCではMT5向けの新規開発を基本としています。
既存MT4資産が参考として存在する場合でも、新規開発ではMT5側で必要な仕様を整理し、必要に応じて既存MT4の考え方や機能を参考にします。
通知・外部連携を含む場合
Discord通知、Google Sheets連携、CSV出力、Webhook、WebRequest、外部APIなどを新しく含める場合も、新規開発はMT5を基本としています。
既存MT4・MT5製品へ外部連携機能を追加する場合は、対象ソースコードと現在の構成を確認したうえで対応可否を判断します。
| 相談内容 | 基本方針 | 必要な情報 |
|---|---|---|
| 既存MT4を小規模修正 | MT4のまま対応可否を確認 | mq4、set、ログ、希望修正 |
| 既存MT4を大規模拡張 | MT5再構築も比較 | 既存仕様、追加機能、今後の計画 |
| MT4をMT5化 | MT5向けに再設計・再実装 | mq4、仕様、画面、set、ログ |
| MT5で新規作成 | MT5前提で仕様整理 | 機能、条件、表示、通知、検証条件 |
| 既存MT4/MT5へ機能追加 | 対象ソースを確認して個別判断 | ソース、現在仕様、追加内容、ログ |
MQL4からMQL5は「変換」ではなく仕様移行として考える
MQL4からMQL5へ移行する時は、「コードを何%流用できるか」だけで判断せず、元のEA・インジケーターが何をする製品なのかを機能単位で確認する方が重要です。
計算式の一部などを参考にできる場合はありますが、発注、ポジション管理、インジケーター取得、描画、イベント、外部連携などはMQL5向けに見直す必要があります。
| 分類 | 移行時に確認する内容 |
|---|---|
| Input | 入力項目、初期値、型、既存setとの対応 |
| Signal | BUY / SELL、インジ条件、確定足、時間足 |
| Execution | 発注、ロット、価格、SL / TP、注文結果 |
| Position | 管理対象、方向、マジック、複数ポジション |
| Exit | TP / SL、条件決済、時間決済、トレーリング |
| Indicator | 計算、バッファ、描画、サイン、リペイント |
| UI | パネル、ボタン、ライン、ラベル、操作 |
| Event | 初期化、Tick、Timer、Chart操作等 |
| External | WebRequest、API、CSV、外部設定 |
| Log | 状態、条件未達、注文、エラー、通知結果 |
| Validation | 銘柄、時間足、期間、set、期待動作 |
MT4を維持するか、MQL5へ再構築するか
すべての既存MT4製品をすぐにMT5へ移行する必要があるわけではありません。
小規模な不具合修正や既存機能の維持が目的で、mq4ソースが揃っている場合は、MQL4のまま修正できるケースがあります。一方、大規模な追加開発や長期間の保守を予定している場合は、MQL5への再構築も比較します。
| 状況 | 基本方針 | 確認事項 |
|---|---|---|
| 既存MT4の小規模修正 | MQL4のまま対応可否を確認 | mq4、mqh、現在仕様、変更箇所 |
| 既存MT4の不具合修正 | 再現確認後にMQL4で修正検討 | ログ、再現手順、set、ソース |
| 既存MT4へ大規模追加 | MQL5再構築と比較 | 追加機能、既存設計、将来計画 |
| 長期保守・継続拡張 | MT5 / MQL5移行を推奨 | 残す機能、廃止機能、新仕様 |
| ex4のみ | 直接改修は原則不可 | 画面、設定、仕様、ログから再構築検討 |
| 新規製品 | MT5 / MQL5で新規設計 | 要求仕様と検証条件を整理 |
自作と開発依頼の分岐
学習目的なら自作
MQL4を理解したい、コードの仕組みを学びたい、小さな表示やログ確認を試したい場合は、自作で進めると学習しやすくなります。
最初は、売買実行を伴わないスクリプトやインジケーターで、ログ出力、チャート情報取得、簡単な表示を確認すると、失敗しても影響範囲を限定しやすくなります。
運用補助に使うなら検証重視
実際の運用補助に使うツールを作る場合は、動くことだけでなく、検証しやすいことが重要です。
ログ、設定、setファイル、通知、エラー時の挙動、再起動後の状態、VPS上での動作確認まで含めて整理してください。
複雑なEAは仕様化して依頼
複雑なEA、複数ロジック、ナンピン、トレーリング、外部連携、認証、通知、パネル表示、コピーEA連携などを含む場合は、仕様化して依頼する方が確認しやすい場合があります。
依頼する場合でも、「どの条件で何をしたいか」「どのログで何を確認したいか」「既存ファイルがあるか」を整理しておくと、開発範囲と確認範囲が明確になります。
なぜ単純移植ではなく再設計が必要なのか
MT4とMT5は、どちらもMetaTrader系のプラットフォームですが、内部の考え方は同じではありません。
特にEA開発では、注文・ポジション・履歴の扱いが大きく異なります。MT4では注文を中心に考える実装が多い一方、MT5ではOrder、Position、Dealを分けて考える必要があります。
| 観点 | MT4的な考え方 | MT5で必要な考え方 |
|---|---|---|
| 注文管理 | OrderSelectで注文やポジションをまとめて扱うことが多い | Order、Position、Dealを分けて扱う |
| 発注処理 | OrderSend中心 | CTradeまたはMqlTradeRequest / MqlTradeResultで結果確認する |
| ポジション管理 | チケットやOrder情報中心 | PositionSelect、PositionGet、magic、symbol、ticketで整理する |
| 履歴管理 | OrderHistory系で確認する | HistorySelect、HistoryDealGet、HistoryOrderGetを分ける |
| インジ取得 | iCustomの戻り値を直接値として扱う実装が多い | handle作成後、CopyBufferで値を取得する |
| 標準ライブラリ | 自前関数中心になりやすい | CTradeなどの標準ライブラリ活用を検討する |
| 検証 | MT4のバックテスト条件に依存 | MT5のtick model、symbol仕様、サーバー条件で再検証する |
そのため、MT4コードをMT5コードへ機械的に置き換えるだけでは、ポジション管理や注文結果確認が不十分になる可能性があります。
MT4資産をMT5化する時に確認するもの
MT4資産をMT5へ作り直す前に、まず既存資産の内容を整理します。
| 確認対象 | 確認すること |
|---|---|
| EAかインジか | 自動売買、裁量補助、サイン表示、通知、集計のどれか |
| Entry条件 | どの条件でBUY / SELL候補を作っていたか |
| Exit条件 | TP、SL、Trail、建値、signal exit、手動決済補助の有無 |
| ナンピン・マーチン | 追加Entry、lot増加、basket管理、平均価格管理の有無 |
| Magic Number | 注文識別、ロジック別管理、手動ポジション除外の扱い |
| インジ参照 | iCustom、buffer、shift、リペイント、確定足の扱い |
| 外部連携 | WebRequest、DLL、Files、CSV、通知、認証の有無 |
| ログ | Print、ファイルログ、エラー確認、問い合わせ用情報の有無 |
| 運用前提 | 対象銘柄、時間足、ブローカー、口座タイプ、VPSの有無 |
移行前にこの整理をしないまま作業を始めると、見た目は似ていても、MT5版で動作意図が変わる可能性があります。
Order / Position / Dealを分けて考える
MT5では、Order、Position、Dealを分けて考えることが重要です。
これはMT4資産の再設計で最も重要な差分の1つです。
| 分類 | 意味 | 確認すること |
|---|---|---|
| Order | 注文リクエストや未約定注文 | 注文が出されたか、注文種別、価格、期限 |
| Position | 現在保有しているポジション | symbol、volume、price、profit、magic、ticket |
| Deal | 約定履歴 | いつ、どの価格で、どの注文が約定したか |
MT4的な感覚で「注文=ポジション=履歴」のように扱うと、MT5では原因調査が難しくなります。
MT5版では、発注した事実、現在保有している状態、過去に約定した履歴を別々に確認できる設計にすることが重要です。
CTradeを使うか、MqlTradeRequestを使うか
MT5の発注処理では、CTradeを使う設計と、MqlTradeRequest / MqlTradeResultを直接扱う設計があります。
どちらが常に正解というより、EAの目的やログ要件によって選びます。
| 方式 | 特徴 | 向いている場面 |
|---|---|---|
| CTrade | 標準ライブラリで注文処理を簡潔に書きやすい | 一般的な新規注文、決済、modifyを整理したい場合 |
| MqlTradeRequest / MqlTradeResult | requestとresultを細かく確認しやすい | 詳細ログ、特殊注文、retcode監査、発注調査を重視する場合 |
| ラッパー化 | 内部でCTradeやrequestを使い、外側は責務を統一する | signal / execution / riskを分けたい場合 |
MT4資産をMT5化する時は、単にOrderSendを書き換えるのではなく、execution層として、注文前確認、発注、結果確認、retcodeログを分けて設計します。
インジケーター参照はCopyBuffer前提で見直す
MT4のインジケーター参照では、iCustomから直接値を受け取る実装が多く見られます。
MT5では、インジケーターハンドルを作成し、CopyBufferで値を取得する流れになります。
| 確認項目 | MT5で見ること |
|---|---|
| handle作成 | INVALID_HANDLEになっていないか |
| buffer番号 | BUY / SELL / 補助値がどのbufferか |
| shift | 未確定足か確定足か |
| CopyBuffer結果 | 取得成功か、取得失敗か、値なしなのか |
| EMPTY_VALUE | サインなしの表現をどう扱うか |
| リペイント | 過去サインが変わるか |
| handle解放 | OnDeinitで必要に応じてIndicatorReleaseするか |
MT4版で「矢印が出たらEntry」だったとしても、MT5版では、どのbuffer、どのshift、どのbar timeの値を使うかを再設計する必要があります。
イベント構造をMT5向けに整理する
MT4資産をMT5へ作り直す時は、OnTickだけでなく、OnInit、OnDeinit、OnTimer、OnChartEventなどの役割も見直します。
| イベント | 役割 | MT5再設計で確認すること |
|---|---|---|
| OnInit | 初期化 | handle作成、Inputs検証、selfcheck、timer設定 |
| OnTick | 価格更新ごとの処理 | tickごとに必要な処理だけを残す |
| OnTimer | 定期処理 | 表示更新、summary、外部通信、軽い監査を分ける |
| OnChartEvent | ボタンやチャート操作 | 直接発注せずUI request化する |
| OnDeinit | 終了処理 | timer停止、handle解放、軽量cleanupに絞る |
MT4版でOnTickに多くの処理を詰め込んでいた場合、MT5版では責務ごとに分けることで安定性と調査性を高められます。
signal / execution / risk / exitを再設計する
MT4資産をMT5へ作り直す時は、既存ロジックをそのまま大きな関数へ詰め直すのではなく、責務分離を行います。
| 責務 | MT5再設計で確認すること |
|---|---|
| signal | Entry候補を作るだけにする |
| execution | 発注・決済・modifyと結果確認を担当する |
| risk | ロット、保有上限、spread、証拠金、日次停止を扱う |
| exit | 既存ポジションの決済、Trail、BE、保護決済を扱う |
| logging | どの層で止まったかをreason付きで出す |
| UI | 表示やクリック操作をruntime stateと分ける |
| external | 外部通信や通知を売買処理と分ける |
MT4版のコードが動いていたとしても、MT5版では、どこで判定し、どこで発注し、どこで止めたのかをログで追える構造に作り直す方が安全です。
実コード例1:MT4的な注文確認をそのまま持ち込まない
以下は、設計判断を理解するために一般化した比較用コード例です。完成EAのソース全文ではありません。
MT4資産をMT5へ作り直す時に起きやすいのが、「何か取引状態があるか」を1つの関数でまとめて確認してしまう設計です。
// 学習用の比較例です。
// MT4的な考え方をそのままMT5へ持ち込まないための説明用です。
// 実運用EAの完成ソースではありません。
bool HasAnyTradeLikeState_LegacyStyle()
{
// 旧設計で起きやすい考え方:
// ・注文、ポジション、履歴の責務が混ざる
// ・symbolやmagicの確認範囲が曖昧になる
// ・Entry判定と決済判定が同じ場所に集まりやすい
// ・「今保有している」のか「注文を出した」のか「過去に約定した」のかが分からない
bool hasSomething = false;
// 疑似的な確認処理です。
// 実際のMT5設計では、このようにまとめて判断しません。
bool hasOrderLikeData = false;
bool hasPositionLikeData = false;
bool hasHistoryLikeData = false;
if(hasOrderLikeData || hasPositionLikeData || hasHistoryLikeData)
hasSomething = true;
return hasSomething;
}このように、注文・ポジション・履歴をまとめて「何かある」と扱うと、MT5では原因調査が難しくなります。
たとえば、EAが新規Entryを止めた時に、未約定注文があるから止めたのか、保有ポジションがあるから止めたのか、過去履歴を見て止めたのかが分かりません。
MT5向けに作り直す場合は、Order、Position、Dealを分けて確認し、それぞれの結果をSnapshotとして整理します。
// 学習用に一般化したMT5向けの分離例です。
// 実運用EAの完成ソースではありません。
struct TradeStateSnapshot
{
int activePositionCount;
int pendingOrderCount;
int recentDealCount;
bool hasActivePosition;
bool hasPendingOrder;
string reason;
};
TradeStateSnapshot BuildTradeStateSnapshot()
{
TradeStateSnapshot snap;
snap.activePositionCount = 0;
snap.pendingOrderCount = 0;
snap.recentDealCount = 0;
snap.hasActivePosition = false;
snap.hasPendingOrder = false;
snap.reason = "INIT";
// Position:
// 現在保有しているポジションを確認する責務。
// symbol、magic、ticket、side、volumeなどを確認対象にする。
snap.activePositionCount = 0; // 実際はPositionSelect等で集計する
snap.hasActivePosition = (snap.activePositionCount > 0);
// Order:
// 未約定注文や注文リクエスト状態を確認する責務。
// 成行注文後の保有確認とは分けて考える。
snap.pendingOrderCount = 0; // 実際はOrdersTotal等から必要範囲を集計する
snap.hasPendingOrder = (snap.pendingOrderCount > 0);
// Deal:
// 過去に約定した履歴を確認する責務。
// 現在保有しているかどうかとは分けて扱う。
snap.recentDealCount = 0; // 実際はHistorySelect等で確認する
snap.reason = "TRADE_STATE_SNAPSHOT_OK";
return snap;
}このように分けると、EAが止まった理由をログで追いやすくなります。
| 確認対象 | 意味 | Entry判定への使い方 |
|---|---|---|
| Position | 現在保有しているポジション | 最大保有数、同方向保有、決済管理の確認に使う |
| Order | 未約定注文や注文状態 | 重複注文、未約定注文の有無を確認する |
| Deal | 過去の約定履歴 | 直近決済、連続損失、履歴確認に使う |
さらに、Entry前の判断では、TradeStateSnapshotをそのままOrderSendへ直結させず、GATEやriskへ渡します。
// 学習用に一般化したEntry前確認例です。
// 実運用EAの完成ソースではありません。
bool CanOpenNewEntryByTradeState(const TradeStateSnapshot &snap)
{
if(snap.hasPendingOrder)
{
Print("DIAG/GATE: event=BLOCK",
" reason=PENDING_ORDER_EXISTS");
return false;
}
if(snap.hasActivePosition)
{
Print("DIAG/GATE: event=BLOCK",
" reason=ACTIVE_POSITION_EXISTS");
return false;
}
Print("DIAG/GATE: event=PASS",
" reason=TRADE_STATE_OK");
return true;
}この例では、現在ポジションがある状態と、未約定注文がある状態を分けてGATE判定しています。
MT4資産の再設計では、「以前こう書いていたから同じように置き換える」のではなく、MT5で何を確認したいのかを責務ごとに分けます。特に、Order、Position、Dealを分けることで、Entry停止、決済対象、履歴確認、ログ調査の精度を上げやすくなります。
実コード例2:MT5向けにPosition Snapshotを作る
以下は、設計判断を理解するために一般化した学習用コード例です。完成EAのソース全文ではありません。
// 学習用に一般化したPosition Snapshot例です。
// 実運用EAの完成ソースではありません。
struct PositionSnapshot
{
int count;
int buyCount;
int sellCount;
double totalVolume;
double floatingProfit;
string reason;
};
PositionSnapshot BuildPositionSnapshot(long magic)
{
PositionSnapshot snap;
snap.count = 0;
snap.buyCount = 0;
snap.sellCount = 0;
snap.totalVolume = 0.0;
snap.floatingProfit = 0.0;
snap.reason = "INIT";
for(int i = PositionsTotal() - 1; i >= 0; i--)
{
ulong ticket = PositionGetTicket(i);
if(ticket == 0)
continue;
if(!PositionSelectByTicket(ticket))
continue;
if(PositionGetString(POSITION_SYMBOL) != _Symbol)
continue;
if((long)PositionGetInteger(POSITION_MAGIC) != magic)
continue;
long type = PositionGetInteger(POSITION_TYPE);
double volume = PositionGetDouble(POSITION_VOLUME);
double profit = PositionGetDouble(POSITION_PROFIT);
snap.count++;
snap.totalVolume += volume;
snap.floatingProfit += profit;
if(type == POSITION_TYPE_BUY)
snap.buyCount++;
if(type == POSITION_TYPE_SELL)
snap.sellCount++;
}
snap.reason = "POSITION_SNAPSHOT_OK";
return snap;
}MT5では、現在の保有状態をPosition Snapshotとして固定すると、Entry可否、risk、exit、ログ確認がしやすくなります。
特に、symbolとmagicを確認せずに全ポジションを扱う設計は避けるべきです。
実コード例3:signalとexecutionを分ける
以下は、設計判断を理解するために一般化した学習用コード例です。完成EAのソース全文ではありません。実Entry条件や実発注処理は含めていません。
// 学習用に一般化した責務分離例です。
// 実運用EAの完成ソースではありません。
enum SignalSide
{
SIGNAL_NONE = 0,
SIGNAL_BUY,
SIGNAL_SELL
};
struct SignalResult
{
bool ready;
SignalSide side;
string reason;
};
struct ExecutionCandidate
{
bool allowed;
SignalSide side;
string reason;
string route;
};
SignalResult EvaluateSignal()
{
SignalResult signal;
signal.ready = false;
signal.side = SIGNAL_NONE;
signal.reason = "NO_SIGNAL";
// ここでは中核Entry条件は扱いません。
// MT4資産から移行する場合も、signalは候補生成に留めます。
return signal;
}
ExecutionCandidate BuildExecutionCandidate(const SignalResult &signal)
{
ExecutionCandidate candidate;
candidate.allowed = false;
candidate.side = signal.side;
candidate.reason = signal.reason;
candidate.route = "MT5_REDESIGN_ROUTE";
if(!signal.ready)
return candidate;
// 実際のEAでは、この後にGATE / risk / duplicate controlを確認します。
candidate.allowed = true;
candidate.reason = "ENTRY_CANDIDATE_READY";
return candidate;
}MT4版でEntry判定とOrderSendが同じ場所にあった場合でも、MT5版ではsignalとexecutionを分ける方が安全です。
signalは候補を作り、executionは発注と結果確認を行います。
実コード例4:移行チェックログを残す
// 学習用に一般化したMT4→MT5再設計チェックログ例です。
// 実運用EAの完成ソースではありません。
void WriteMigrationCheck(string item,
string eventName,
string reason,
string detail)
{
Print("DIAG/MT4_TO_MT5: item=", item,
" event=", eventName,
" reason=", reason,
" detail=", detail);
}
void PrintMigrationChecklist()
{
WriteMigrationCheck("ORDER_POSITION_DEAL",
"CHECK",
"REVIEW_REQUIRED",
"Separate order, position, and deal handling.");
WriteMigrationCheck("INDICATOR_HANDLE",
"CHECK",
"COPYBUFFER_REQUIRED",
"Review iCustom handle and buffer access.");
WriteMigrationCheck("RESPONSIBILITY",
"CHECK",
"SEPARATE_LAYERS",
"Separate signal, execution, risk, and exit.");
WriteMigrationCheck("LOGGING",
"CHECK",
"ADD_REASON_LOG",
"Add event and reason logs for verification.");
}MT4資産をMT5へ作り直す時は、変換作業だけでなく、再設計チェックをログや仕様書に残すと確認しやすくなります。
MT4インジケーターをMT5化する時の注意
MT4インジケーターをMT5へ作り直す場合も、単純な関数置換では足りないことがあります。
| 確認項目 | MT5で確認すること |
|---|---|
| OnCalculate | 引数、rates_total、prev_calculated、配列方向を確認する |
| buffer設定 | SetIndexBuffer、PlotIndexSet、描画タイプを確認する |
| ArraySetAsSeries | 時系列配列の向きを確認する |
| iCustom連携 | EAからCopyBufferで読める構造にする |
| リペイント | 過去サインが変わるか確認する |
| 表示Object | Object表示とbuffer出力を混同しない |
MT4版でチャートに矢印が出ていたとしても、MT5版ではEAから読みやすいbuffer設計にするかどうかを検討する必要があります。
MT4 EAをMT5化する時の注意
MT4 EAをMT5へ作り直す場合は、注文・ポジション・履歴の設計を見直します。
| 確認項目 | MT5で確認すること |
|---|---|
| Entry条件 | signal層として候補生成に分ける |
| 発注処理 | CTradeまたはMqlTradeRequestでexecution層に分ける |
| 決済処理 | Position、ticket、magic、symbol、sideを確認する |
| 履歴確認 | Deal履歴とOrder履歴を分けて見る |
| Magic Number | ロジック別、EA別、手動除外の方針を決める |
| risk | ロット、証拠金、保有数、spreadを再確認する |
| ログ | NO_SIGNAL、GATE_BLOCK、ORDER_FAIL、EXIT_SKIPを分ける |
MT4版で動いていたEAでも、MT5版ではポジション管理と注文結果確認を明確にしないと、誤決済や原因不明の見送りにつながることがあります。
バックテスト条件はMT5で取り直す
MT4版のバックテスト結果がある場合でも、MT5版ではMT5のストラテジーテスターで再検証する必要があります。
MT4版とMT5版では、テスター条件、tick model、銘柄仕様、スプレッド、約定、履歴データの扱いが異なる可能性があります。
| 検証項目 | 確認すること |
|---|---|
| 銘柄仕様 | digits、point、tick value、contract size、volume step |
| 検証期間 | MT4版と同条件で比較できるか |
| 時間足 | 判定タイミングが同じか |
| spread | 固定条件とリアル条件の違い |
| tick model | 未確定足やインジ値への影響 |
| ログ | Entry理由、見送り理由、決済理由が追えるか |
| リアル差分 | BTとリアルでEntry位置や約定がずれないか |
MT4版の成績をそのままMT5版の期待値として扱うのは避けるべきです。MT5版は、MT5環境で再検証します。
単純変換で起きやすい失敗
MT4資産をMT5へ単純変換すると、次のような問題が起きやすくなります。
| 失敗例 | 内容 | 対策 |
|---|---|---|
| OrderSelect感覚のまま作る | Order、Position、Dealの区別が曖昧になる | MT5の注文・ポジション・履歴構造に分ける |
| iCustom値取得をそのまま置換する | handleとCopyBufferの考え方が抜ける | handle作成、buffer番号、shiftを整理する |
| OnTickに全部詰める | 重くなり、原因調査が難しくなる | OnTimer、OnChartEvent、OnDeinitを分ける |
| ログがMT4版のまま少ない | MT5版で止まった理由が分からない | event / reason / detailを追加する |
| Magic Number管理が曖昧 | 他EAや手動ポジションを巻き込む | symbol、magic、logic_id、ticketでscopeを分ける |
| 検証条件を流用する | MT5の銘柄仕様やBT条件と合わない | MT5で検証条件を取り直す |
単純変換は、短期的には早く見える場合があります。しかし、後から不具合調査や改修が難しくなりやすいため、再設計として進める方が安全です。
MT5再設計でログに残すべき情報
MT4資産をMT5へ作り直す時は、差分が分かるログを用意します。
| ログ区分 | 確認できること | 例 |
|---|---|---|
| MIGRATION_CHECK | MT4資産からMT5再設計した確認項目 | ORDER_POSITION_DEAL、COPYBUFFER_REQUIRED |
| RUNTIME | MT5版の起動状態 | RUNTIME_INIT_OK、HANDLE_OK |
| SIGNAL | MT5版でEntry候補が出たか | SIGNAL_OK、NO_SIGNAL |
| GATE | 発注前条件で止まったか | SPREAD_BLOCK、POSITION_BLOCK |
| ORDER | 注文結果 | ORDER_SEND_OK、ORDER_SEND_FAIL、retcode |
| POSITION_SNAPSHOT | 現在保有状態 | count、buy、sell、volume、profit |
| EXIT | 決済理由 | TRAIL、BE、SIGNAL_EXIT、EXIT_SKIP |
MT4版とMT5版の比較では、損益だけでなく、Entry理由、見送り理由、決済理由、注文結果を比較できるログが重要です。
MT4版と同じ見た目にするか、MT5向けに改善するか
MT4資産をMT5へ作り直す時、見た目や操作感をどこまで維持するかも確認します。
| 方針 | メリット | 注意点 |
|---|---|---|
| MT4版に近い見た目にする | 利用者が違和感なく使いやすい | MT5設計に合わないUIを無理に再現しない |
| MT5向けにUIを整理する | 表示、ログ、操作導線を改善できる | MT4版と操作感が変わる可能性がある |
| 内部構造だけ再設計する | 利用者の見た目を大きく変えず安全性を高める | 変更点をmanualで説明する必要がある |
| 機能追加も同時に行う | ログ、HELP、Snapshot、通知などを強化できる | 単純移行より検証範囲が広がる |
移行時は、見た目を変えないことが常に正解ではありません。MT5向けに安全性、ログ、サポート性を高める再設計も検討します。
EA利用者向けの確認ポイント
EA利用者がMT4からMT5への移行を相談する場合、MQL4やMQL5の詳細を理解していなくても、必要な情報を整理できます。
- MT4版のEA名・インジケーター名
- EX4だけか、MQ4ソースがあるか
- 使用していたsetファイル
- チャート画像や表示例
- どの機能をMT5でも使いたいか
- 通知や外部連携があるか
- バックテスト結果や検証条件
- エラーや不具合が出ている場合のログ
「MT4版と同じようにしたい」という依頼でも、同じの意味を整理する必要があります。表示を同じにしたいのか、注文条件を同じにしたいのか、通知やログも同じにしたいのかを分けてください。
MQL5開発者向けの確認ポイント
MQL5開発者は、MQL4コードを見た時に、単純な構文変換ではなく、MT5構造へ置き換える箇所を確認します。
| 確認対象 | MQL4側で見ること | MQL5側で設計すること |
|---|---|---|
| 注文処理 | OrderSend、OrderClose、OrderModify | CTradeまたはMqlTradeRequest構造へ整理 |
| ポジション探索 | OrderSelectループ、Magic Number | PositionSelect、ticket、symbol、magicで管理 |
| 履歴参照 | OrderHistory系の参照 | HistorySelect、Deal、Order履歴へ整理 |
| インジ連携 | iCustomの使い方 | handle作成、CopyBuffer、IndicatorRelease |
| ファイル操作 | Files、CSV、外部設定 | MQL5のFiles / Common運用へ整理 |
| ログ | Print中心のログ | 検証用ログ、エラーコード、retcodeを整理 |
MQL5関数の役割は、MQL5関数辞書も参考になります。
検証担当者向けの確認ポイント
検証担当者は、MT4版とMT5版の結果だけを比較するのではなく、条件とログを比較する必要があります。
- 同じ銘柄名か
- 同じ時間足か
- 同じ期間か
- 同じset相当の条件か
- 現在足・確定足の扱いが同じか
- スプレッド条件が同じか
- Magic Numberやポジション管理が一致しているか
- 注文・決済ログが追えるか
- MT4版で出ていたサインとMT5版で出るサインが同じ条件か
- バックテストとリアル確認を分けているか
MT5側で価格や時系列データを確認する場合は、MQL5時系列データ・価格取得完全ガイドも参考にしてください。
よくある誤解
| 誤解 | 実際の確認 | 注意点 |
|---|---|---|
| MQ4があれば自動でMQ5に変換できる | 構造差があるため手作業の確認が必要 | 注文管理やインジ連携は作り直しになりやすい |
| EX4をMT5へ入れれば動く | EX4はMT4用実行ファイル | MT5ではEX5が必要 |
| バックテスト結果は同じになる | テスター条件やデータ差で変わる可能性がある | 結果ではなく条件とログを比較する |
| 見た目が同じならEA化できる | EAから読める値が必要 | バッファ番号とCopyBuffer取得値を確認する |
| MT5版では全部高機能にすべき | 目的に応じて必要機能を整理する | 不要機能を増やすと検証が難しくなる |
関連ログ・関連エラー
MT4からMT5へ作り直した後は、コンパイルエラー、注文エラー、インジケーター読み込みエラー、CopyBuffer失敗、WebRequest失敗などを確認することがあります。
| 確認対象 | 関連する問題 | 確認するログ |
|---|---|---|
| コンパイル | 未定義識別子、型不一致、include不足 | MetaEditorのエラー欄 |
| 注文処理 | ロット不正、取引不可、retcodeエラー | Expertsログ、Journalログ |
| ポジション管理 | 対象ポジションなし、Magic不一致 | Expertsログ、取引タブ、履歴 |
| インジ連携 | INVALID_HANDLE、CopyBuffer失敗 | Expertsログ、GetLastError |
| 外部連携 | WebRequest未許可、HTTPエラー | Expertsログ、Journalログ、外部側ログ |
エラーコードの整理は、MQL5エラーコード辞典も確認してください。
開発依頼前に送る情報
MT4からMT5への移行や作り直しを相談する場合は、次の情報を整理してください。
| 情報 | 必要性 | 注意点 |
|---|---|---|
| 対象ファイル | EA・インジの特定 | EX4だけかMQ4ソースがあるか明記する |
| MT4版setファイル | 入力条件の確認 | 認証情報やURLがないか確認する |
| チャート画像 | 表示やサインの確認 | 口座番号や個人情報を隠す |
| 動作説明 | 何を再現したいか確認 | 表示、判定、注文、通知を分ける |
| バックテスト条件 | 比較条件の確認 | 結果保証ではなく条件確認として扱う |
| Expertsログ | エラーや処理状況の確認 | 発生前後を含める |
| Journalログ | 端末側状態の確認 | 接続、注文、テスター関連を含める |
開発依頼前の資料整理は、MT5開発依頼前に用意する資料まとめも参考にしてください。
移行する対象ごとに確認資料をそろえる
開発・改修・移行相談前チェックリスト
相談前に以下を整理しておくと、現在の状態、対応可否、追加確認事項を原因を確認しやすくなります。
| 分類 | 確認すること |
|---|---|
| 依頼種別 | MT5新規開発 / MT4・MT5既存改修 / MT4→MT5移行 / 不具合調査 |
| 対象 | EA / インジケーター / コピーEA / 補助ツール / 通知・外部連携 |
| 現在環境 | MT4またはMT5、PC/VPS、対象銘柄、時間足 |
| ファイル | mq4 / mq5 / mqh / ex4 / ex5 / setの有無 |
| 現在仕様 | 現在どのように動いているか |
| 希望仕様 | 何を追加・修正・廃止したいか |
| 表示 | パネル、ライン、矢印、ラベル等 |
| 売買処理 | Entry / Exit / ロット / ポジション管理等 |
| 通知・外部連携 | Discord / CSV / Sheets / WebRequest / API等 |
| 検証条件 | 銘柄、時間足、期間、set、期待する動作 |
| ログ | Experts / Journal / 通知・通信ログ |
| 権利関係 | 改修・移行を依頼できる権利があるか |
送る情報・送らない方がよい情報
相談時には、技術確認に必要な情報と、機密情報を分けてください。
| 送ると確認しやすい情報 | 理由 |
|---|---|
| MT4 / MT5の別 | 対象環境を確認するため |
| EA・インジ名とバージョン | 対象を特定するため |
| mq4 / mq5 / mqh | 内部仕様・依存関係を確認するため |
| setファイル | 現在のInputsを確認するため |
| 仕様書・マニュアル | 想定動作を確認するため |
| スクリーンショット | 表示・設定・エラー状態を確認するため |
| Experts / Journalログ | 動作・エラー・再現状態を確認するため |
| 希望仕様メモ | 修正・移行後の状態を整理するため |
| そのまま送らない情報 | 注意点 |
|---|---|
| MT4/MT5ログイン情報 | パスワード等は送信しない |
| VPSログイン情報 | リモート接続情報は送信しない |
| 口座番号 | ログや画像では必要に応じて伏せる |
| Webhook URL | 通知先へ接続できる情報のため伏せる |
| GAS URL | 外部サービス接続先のため伏せる |
| APIキー | 認証情報のため送信しない |
| 認証トークン | 利用権限に関係するため送信しない |
よくあるトラブルと確認順
MT4/MT5の違いが関係する相談では、「ファイルを入れたが表示されない」「EAが動かない」「MT5へ移行したが想定どおり動かない」といった問題があります。
| 症状 | 主な原因候補 | 確認順 |
|---|---|---|
| MT4用EAがMT5に表示されない | ファイル形式・対象環境が違う | mq4/ex4か、mq5/ex5か確認する |
| インジケーターが表示されない | 対象環境、配置場所、初期化エラー等 | MT4/MT5、配置場所、Expertsログを確認 |
| 既存製品を改修できるか不明 | ソースがない、権利が不明 | mq4/mq5の有無と権利関係を確認 |
| MT5化したが同じ動きにならない | 発注、ポジション、判定、表示等の仕様差 | 機能単位でMT4版とMT5版を照合 |
| バックテスト結果が大きく違う | 検証条件が異なる | 銘柄、時間足、期間、set、スプレッド等を比較 |
| 通知・外部連携が動かない | WebRequest、送信先、認証、設定不足 | 設定、Expertsログ、通信結果を確認 |
開発・改修・MT5移行を相談する前に
新規MT5開発、既存MT4/MT5製品の修正、MT4からMT5への移行を検討している場合は、現在の状態と希望する変更内容を分けて整理してください。
| 確認したい内容 | 確認ページ |
|---|---|
| 現在の開発受付方針・対応範囲 | 開発依頼・作成代行 |
| 見積前に必要な情報 | 見積依頼前の確認事項 |
| 開発前の仕様整理 | 開発依頼前の仕様整理 |
| 既存EA・インジ改修前の確認 | 既存EA・インジケーター改修を依頼する前に整理すること |
| 不具合報告 | 不具合報告の方法 |
| 免責・リスク | 免責事項・リスク説明 |
MQL4開発依頼でよくある相談
既存EA改修
既存EAの改修では、まずmq4ソースがあるかを確認します。
mq4がある場合は、内部処理を確認しながら改修を検討できます。ex4のみの場合は、内部ロジックを直接改修することは基本的に難しく、仕様をもとに再作成を検討する形になります。
インジ改修
既存インジケーターの改修では、表示条件、色、サイン条件、通知条件、対象時間足、リペイントの扱いを整理します。
表示画面のスクリーンショット、Inputs、setファイル、Expertsログがあると確認しやすくなります。
アラート追加
既存インジケーターやEAにアラートを追加したい場合は、どの条件で通知するのかを明確にしてください。
同じ足で何度も通知しないようにするのか、足確定時だけ通知するのか、BUY/SELLで通知内容を分けるのかなど、通知ルールを整理する必要があります。
MT5化
MT4用のEAやインジケーターをMT5で使いたい場合、MQL5用に作り直しが必要になることがあります。
MT5化を相談する場合は、現在のmq4ソース、表示画面、Inputs、必要機能、不要機能、現在のログを整理してください。
ログ追加
EAやインジケーターの動作確認をしやすくするために、ログ追加を相談することがあります。
ログ追加では、どの判定、どの入力値、どのエラー、どの状態変化を出したいのかを整理します。ログが多すぎると確認しづらくなるため、必要な範囲を決めることも重要です。
バックテスト補助
EAのバックテストやインジケーター検証をしやすくするために、確認用ログ、表示、CSV出力などを追加することがあります。
バックテスト補助は、検証条件や動作確認を整理するためのものです。将来の結果を保証するものではありません。
| 相談内容 | 必要な情報 | 確認すること |
|---|---|---|
| 既存EA改修 | mq4、set、ログ、希望変更 | 改修範囲と影響範囲 |
| インジ改修 | mq4、表示画像、Inputs、条件 | 表示・通知・対象時間足 |
| アラート追加 | 通知条件、タイミング、文面 | 重複通知防止とログ |
| MT5化 | 既存ファイル、表示画面、仕様 | 作り直し範囲と不要機能 |
| ログ追加 | 見たい判定、エラー、状態 | ログ量と確認しやすさ |
相談時に送る情報・送らない方がよい情報
送ると確認しやすい情報
MQL4開発や改修の相談では、対象ファイル、現在の動作、変更したい内容、ログ、設定を整理すると確認が進めやすくなります。
| 送ると確認しやすい情報 | 理由 |
|---|---|
| mq4ファイル | 内部処理や改修可否を確認するため |
| ex4ファイル | 実行確認や現在の動作確認に使うため |
| setファイル | Inputs設定を確認するため |
| Expertsログ | EAやインジ側のエラーを確認するため |
| Journalログ | 端末側や注文側の状態を確認するため |
| スクリーンショット | 表示状態や設定画面を確認するため |
| 仕様メモ | 作りたい機能や変更点を整理するため |
そのまま送らない方がよい情報
setファイル、スクリーンショット、ログには、通知先URLや認証情報、口座番号が含まれる場合があります。
相談時には、確認に必要な情報と、そのまま送らない方がよい情報を分けてください。
| そのまま送らない方がよい情報 | 注意点 |
|---|---|
| Webhook URL | 通知先へ接続できる情報のため注意する |
| GAS URL | 外部シート連携に関係するため共有範囲に注意する |
| APIキー | 外部サービス認証に関係するためそのまま送らない |
| 認証トークン | 利用権限に関係するためマスクして扱う |
| 口座番号 | スクリーンショットやログへの映り込みに注意する |
よくあるトラブルと確認順
MQL4関連の相談では、ファイル形式、設置場所、ソース有無、ログ、通知設定の確認が重要です。
| 症状 | 主な原因候補 | 確認順 |
|---|---|---|
| EAが動かない | 自動売買OFF、設定不備、条件未成立 | 自動売買、Inputs、Expertsログを確認 |
| インジが表示されない | 配置場所違い、色、時間足、データ不足 | Indicatorsフォルダ、表示設定、ログを確認 |
| 改修できるか分からない | mq4がなくex4のみ | ソース有無と再作成可否を確認 |
| 通知が届かない | 通知OFF、メール設定、外部URL設定 | 通知設定、外部連携、Expertsログを確認 |
| MT5で使えない | MQL4はMT4向け | MQL5用の作り直し範囲を整理 |
移行・改修相談前に準備するもの
MQL4からMQL5への移行や、既存EA・インジケーターの改修を相談する場合は、現在の状態と希望する状態を分けて整理してください。
| 準備する情報 | 確認する内容 |
|---|---|
| 対象製品 | EA / インジケーター / 補助ツール、名称、バージョン |
| 現在環境 | MT4 / MT5、PC / VPS、対象銘柄、時間足 |
| ソース | mq4 / mq5 / mqhの有無 |
| 実行ファイル | ex4 / ex5の有無 |
| set | 現在使用しているInputs |
| 現在仕様 | 現在どの条件で何をするか |
| 希望仕様 | 残す機能、変更する機能、追加・廃止する機能 |
| 画面 | パネル、ライン、矢印、Inputs等 |
| ログ | Experts、Journal、エラー、通知結果 |
| 検証条件 | 銘柄、時間足、期間、set、期待動作 |
| 権利 | 改修・移行を依頼できる権利の有無 |
送る情報・送らない方がよい情報
技術確認に必要な情報は共有できますが、認証情報や口座情報などは原則として送信しないでください。
| 送ると確認しやすい情報 | 理由 |
|---|---|
| mq4 / mq5 / mqh | 内部仕様・依存関係を確認するため |
| setファイル | 現在の設定を確認するため |
| 仕様書・マニュアル | 想定動作を確認するため |
| スクリーンショット | 画面・設定・症状を確認するため |
| Experts / Journalログ | エラー・動作状態を確認するため |
| 現在仕様メモ | 現状を整理するため |
| 希望仕様メモ | 移行・改修後の状態を整理するため |
| そのまま送らない情報 | 理由 |
|---|---|
| MT4 / MT5ログインパスワード | 技術確認に不要な認証情報のため |
| VPSログイン情報 | リモート接続情報のため |
| 口座番号 | 個別口座情報のため、必要に応じて伏せる |
| Webhook URL | 第三者が通知送信できる可能性があるため |
| GAS URL | 外部サービス接続先に関係するため |
| APIキー | 外部サービス認証情報のため |
| 認証トークン | 利用権限に関係するため |
| ライセンスキー実値 | 利用権限に関係する情報のため |
よくあるトラブルと確認順
MQL4 / MQL5の違いが関係する問題では、最初からコードだけを見るのではなく、対象環境、ファイル、仕様、ログを順番に確認すると原因を確認しやすくなります。
| 症状 | 主な原因候補 | 確認順 |
|---|---|---|
| MT4用EAがMT5で動かない | 対象環境・ファイル形式が違う | mq4 / ex4か、mq5 / ex5か確認 |
| MT4インジがMT5で表示されない | 計算・描画・バッファ仕様が違う | ソース、表示条件、ログを確認 |
| MT5へ移行したが注文しない | Entry・Execution・Position仕様差 | 条件、管理対象、注文結果ログを確認 |
| 決済対象がおかしい | ポジション識別仕様が違う | マジック、銘柄、方向、管理範囲を確認 |
| サインが一致しない | 参照バー、確定足、バッファ等の差 | 計算条件・取得値・タイミングを比較 |
| 通知が動かない | 通知条件、WebRequest、送信設定 | 条件、設定、Expertsログを確認 |
| 改修できるか分からない | ソースまたは権利が不足 | mq4 / mq5と権利関係を確認 |
相談前に整理する情報
現行画面
現在のMT4インジケーターの画面をスクリーンショットで保存してください。
サインが出ている場面、ラインが表示されている場面、サブウィンドウ、アラート表示、Inputs画面があると、MT5側で再現したい内容を確認しやすくなります。
期待動作
MT5側でどのように動いてほしいかを整理してください。
完全に同じ表示にしたいのか、表示を簡略化したいのか、通知を追加したいのか、不要な機能を削除したいのかを分けてください。
ファイル
mq4、ex4、set、テンプレート、関連ファイルがあるか確認してください。
mq4がある場合は、内部仕様の確認に役立ちます。ex4のみの場合は、再現作成に必要な資料を多めに整理する必要があります。
ログ
表示されない、通知が届かない、エラーが出る場合は、Expertsログを確認してください。
相談時には、発生時刻前後のログ、インジケーター名、エラー行を整理してください。
条件説明
サイン条件や通知条件は、できるだけ文章で整理してください。
「このような場面で矢印が出る」だけでなく、どのインジケーター値、どの価格条件、どの時間足、どのタイミングで出るのかを説明できると、確認が進めやすくなります。
不要機能
MT5化のタイミングで不要な機能を整理しておくと、作り直し範囲を明確にできます。
使っていない通知、古い表示、不要な色設定、不要な外部連携などがあれば、残す機能と削る機能を分けてください。
| 送ると確認しやすい情報 | 理由 |
|---|---|
| mq4ファイル | 内部仕様を確認しやすくなるため |
| ex4ファイル | 現在の実行確認に使えるため |
| setファイル | Inputs設定を確認するため |
| スクリーンショット | 表示内容やサイン位置を確認するため |
| 条件説明 | MT5側で再現する判定を整理するため |
| Expertsログ | 初期化エラーや通知エラーを確認するため |
| 残す機能・不要機能 | 作り直し範囲を明確にするため |
送らない方がよい情報
インジケーター移行や作り直し相談では、setファイル、ログ、スクリーンショットに認証情報や外部URLが含まれる場合があります。
| そのまま送らない方がよい情報 | 注意点 |
|---|---|
| 口座番号 | スクリーンショットやログへの映り込みに注意 |
| Webhook URL | 通知先へ接続できる情報のため注意 |
| GAS URL | 外部シート連携先に関係するため注意 |
| APIキー | 外部サービス認証に関係するため注意 |
| 認証トークン | 利用権限に関係するため注意 |
よくあるトラブルと確認順
MT4インジケーターをMT5へ移行・作り直しする場合は、ファイル形式、表示仕様、判定条件、通知、ログを順番に確認します。
| 状況 | 主な原因候補 | 確認順 |
|---|---|---|
| MT5に入れても表示されない | MT4用ファイルを入れている | mq4/ex4か、mq5/ex5か確認する |
| 同じ見た目にならない | 描画方式や表示設定が違う | スクリーンショット、色、位置、表示形式を確認 |
| サイン位置が違う | 判定条件、時間足、足確定の違い | サイン条件と対象時間足を確認 |
| 通知が届かない | 通知条件、WebRequest、外部URLの設定差 | 通知設定、送信ログ、外部連携を確認 |
| ex4しかなく移行できるか不明 | 内部ロジックを確認できない | 画面、Inputs、条件説明をもとに再現可否を確認 |
相談前に整理すること
作りたいもの
相談前には、作りたいものがEA、インジケーター、スクリプト、補助ツールのどれかを整理してください。
表示だけなのか、通知が必要なのか、注文や決済まで行うのかを分けると、必要な開発範囲を確認しやすくなります。
現状の理解度
現在どこまで理解しているかも整理してください。
コードは読めるが修正が不安、コンパイルエラーで止まっている、注文処理だけ分からない、既存EAの改修範囲を確認したい、などの状態を伝えると、確認順を決めやすくなります。
参考インジやEA
参考にしたいインジケーターやEAがある場合は、ファイル名、スクリーンショット、setファイル、ログ、希望する機能を整理してください。
ただし、ex4だけの場合は内部仕様を直接確認できない場合があります。mq4ソースの有無も確認してください。
希望する機能
希望する機能は、できるだけ具体的に整理してください。
「矢印を出したい」「通知したい」「指定条件で注文したい」「決済条件を追加したい」「ログを分かりやすくしたい」など、機能単位で分けると確認しやすくなります。
ログ
相談時には、Expertsログ、Journalログ、MetaEditorのコンパイル結果を整理してください。
エラーが出ている場合は、ファイル名、行番号、エラー内容、発生時刻、変更した箇所を記録します。スクリーンショットに口座番号や認証情報が映り込まないよう注意してください。
送らない方がよい情報
MQL4学習や開発相談では、setファイル、ログ、スクリーンショットに重要情報が含まれる場合があります。
| そのまま送らない方がよい情報 | 注意点 |
|---|---|
| 口座番号 | スクリーンショットやログへの映り込みに注意 |
| ログインパスワード | 確認に不要なため送らない |
| Webhook URL | 通知先へ接続できる情報のため注意 |
| GAS URL | 外部シート連携先に関係するため注意 |
| APIキー | 外部サービス認証に関係するため注意 |
| 認証トークン | 利用権限に関係するためマスクする |
| VPSログイン情報 | サーバー操作権限に関係するため送らない |
よくあるトラブルと確認順
MQL4学習では、コードそのものだけでなく、ファイル配置、コンパイル、ログ、MT4側設定、チャート適用状態を順番に確認することが重要です。
| 症状 | 主な原因候補 | 確認順 |
|---|---|---|
| コンパイルできない | 文法エラー、括弧不足、型不一致、関連ファイル不足 | MetaEditorのエラー行と最初のエラーを確認 |
| チャートに表示されない | フォルダ違い、拡張子違い、未更新 | MQL4 / ExpertsまたはIndicators、再起動を確認 |
| サインが想定と違う | 参照足、配列、リペイント、条件式の違い | ログで値と足番号を確認 |
| 注文が通らない | ロット、証拠金、取引時間、自動売買OFF、エラー処理不足 | ExpertsログとJournalログを確認 |
| どこを直せばよいか分からない | 関数分離不足、ログ不足、仕様未整理 | 目的、Inputs、処理順、ログを整理 |
相談前に整理しておきたい情報
- 作りたいものがEA、インジケーター、スクリプト、補助ツールのどれか
- 売買実行が必要か、表示・通知だけか
- 対象ファイル名、EA名またはインジケーター名
- mq4 / ex4の有無
- MT4のバージョン、口座種別、通貨ペア、時間足
- setファイル、Inputs設定、スクリーンショット
- MetaEditorのコンパイル結果
- Expertsログ、Journalログ、発生時刻
- 変更前後の状態が分かるメモ
- 自作で進めたい範囲と依頼したい範囲
相談前に送る情報
エラー番号
注文エラーの相談では、エラー番号を整理してください。
OrderSendが失敗した時に、EAがエラー番号をログに出している場合があります。エラー番号だけでなく、どの注文条件で発生したかも合わせて確認します。
Expertsログ
Expertsログは、EA側の注文処理、注文前条件、注文成功、注文失敗、エラー番号を確認するために重要です。
相談時には、注文しようとした時刻前後のExpertsログを整理してください。ログが多い場合は、発生時刻、EA名、MagicNumber、通貨ペアで絞ると確認しやすくなります。
該当箇所
mq4ソースがある場合は、OrderSendの該当箇所を確認してください。
ただし、コード全体の一部だけを見ると、前後の条件や関数呼び出しが分からない場合があります。OrderSendの前にどの条件を満たしているか、失敗時にどの処理へ進むかも確認対象です。
注文条件
注文条件を整理してください。
BUYなのかSELLなのか、どの通貨ペアなのか、どの時間足なのか、ロットはいくつか、SL/TPは指定しているか、MagicNumberは何か、注文前にどのフィルターを通っているかを確認します。
setファイル
setファイルは、EAのInputs設定を確認するために重要です。
ロット、MagicNumber、SL/TP、スリッページ、稼働時間、最大ポジション、通知設定、ログ設定などがsetファイルに含まれる場合があります。
setファイルを共有する場合は、Webhook URL、APIキー、GAS URL、認証トークンなどの実値が含まれていないか確認してください。
送らない方がよい情報
OrderSendや注文エラーの相談では、setファイル、ログ、スクリーンショットに重要情報が含まれる場合があります。
よくあるトラブルと確認順
OrderSend関連のトラブルでは、エントリー条件、注文値、MT4設定、口座状態、ログを分けて確認することが重要です。
| 症状 | 主な原因候補 | 確認順 |
|---|---|---|
| 条件成立しているのに注文しない | OrderSend前のブロック、取引時間外、自動売買OFF | 条件ログ、稼働時間、自動売買状態を確認 |
| OrderSendが失敗する | ロット、価格、SL/TP、証拠金、接続状態 | エラー番号、Expertsログ、Journalログを確認 |
| 想定外のロットで注文する | Inputs未反映、固定値、計算ミス | setファイル、ロット計算ログを確認 |
| 別EAの注文を決済しているように見える | MagicNumber重複、決済条件の絞り込み不足 | OrderSendとOrderClose周辺のMagicNumberを確認 |
| 注文エラーの理由が分からない | エラー処理・ログ不足 | OrderSend戻り値、GetLastError、ログ出力を確認 |
相談前に整理しておきたい情報
- 対象EA名、ファイル名、バージョン
- mq4 / ex4の有無
- OrderSendの呼び出し箇所
- 注文種別、通貨ペア、時間足
- ロット、価格、SL/TP、スリッページ、MagicNumber
- setファイル、Inputs設定、スクリーンショット
- 注文失敗時のエラー番号
- Expertsログ、Journalログ、発生時刻
- 変更前後の状態が分かるメモ
- 複数EA運用や手動注文との関係
移行前・開発依頼前に整理する情報
MT4資産をMT5へ作り直す相談をする場合、次の情報を整理しておくと確認がスムーズになります。
- 対象がEAかインジケーターか
- MT4版のファイル形式
- ソースコードの有無
- 既存setファイルの有無
- Entry条件の説明
- Exit条件の説明
- ナンピン、マーチン、複数ポジション管理の有無
- Magic Numberの使い方
- 手動ポジションを管理対象にするか
- 対象銘柄と時間足
- MT4版で使っていたインジケーター
- iCustomや外部ファイル参照の有無
- 通知、CSV、WebRequest、DLLの有無
- MT4版バックテスト結果
- MT5版で残したい挙動
- MT5化に合わせて改善したい点
ソースコードがない場合、完全な再現が難しいことがあります。その場合は、仕様書、画面、ログ、挙動説明、バックテスト結果、setファイルから再設計方針を検討します。
送ってはいけない情報
MT4資産やMT5移行の相談では、ファイルやログを送る場面があります。ただし、次の情報はそのまま送らないでください。
- 口座番号の全桁
- 投資家パスワード
- マスターパスワード
- Webhook URLの実値
- GAS URLの実値
- APIキー
- 認証トークン
- 外部サービスの秘密情報
- 個人情報
- 第三者の個人情報が入ったログ
MT4からMT5への技術移行チェック表
- □ EX4だけか、MQ4ソースがあるか確認した
- □ EAなのか、インジケーターなのか、スクリプトなのか確認した
- □ MT5で再現したい機能を整理した
- □ 表示系と判定系を分けた
- □ signal、execution、risk、exit、notificationを分けて確認した
- □ OrderSelect依存の処理を確認した
- □ Position / Deal / Historyへ置き換える箇所を確認した
- □ インジケーターバッファとサイン値を確認した
- □ iCustom / CopyBufferで読む必要があるか確認した
- □ 外部連携やDLLの有無を確認した
- □ MT4版setファイルを保存した
- □ MT5版で必要なinputを整理した
- □ バックテスト条件を整理した
- □ ExpertsログとJournalログを保存した
- □ 口座番号や認証情報をマスクした
よくある質問
EX4しかなくてもMT5へ移行できますか?
EX4だけでは内部ロジックを直接確認できないため、完全な変換や移植には制約があります。ただし、表示、設定、スクリーンショット、ログ、動作説明をもとに、MT5向けに似た仕様として作り直す相談は可能な場合があります。
MQ4ソースがあれば自動変換できますか?
MQ4ソースがあっても、MQL5へ自動変換してそのまま動くとは限りません。注文管理、ポジション管理、履歴取得、インジケーター連携などは、MQL5向けに作り直す必要がある場合があります。
MT4 EAをそのままMT5で使えますか?
使えません。MT4用のEX4はMT5ではそのまま動きません。MT5で使うには、MQL5向けのEAとして作り直し、EX5としてコンパイルする必要があります。
MT4インジケーターはMT5で表示できますか?
MT4用のインジケーターをそのままMT5へ入れて表示することはできません。MT5向けにインジケーターを作り直し、バッファや描画方式をMQL5に合わせる必要があります。
MT5で作り直す時に仕様書は必要ですか?
仕様書や整理メモがあると確認しやすくなります。特に、エントリー条件、決済条件、インジケーター値、通知、外部連携、input、ログ、対象銘柄、時間足を整理しておくと、作り直し範囲が明確になります。
バックテスト結果はMT4とMT5で同じになりますか?
同じになるとは限りません。テスター、ヒストリカルデータ、spread、銘柄名、サーバー時間、約定条件、手数料などが異なる場合があります。結果そのものより、条件とログを比較してください。
MT4版setファイルはMT5版で使えますか?
そのまま使えるとは限りません。MT5版でinput名、型、単位、初期値、表示順を整理し直す必要があります。MT4版setは、設定内容を確認する資料として扱うのが安全です。
サインインジをMT5 EAから読みたい場合は何を確認しますか?
BUY / SELLのバッファ番号、サインなしの値、shift 0 / shift 1、リペイントの有無、iCustom / CopyBufferで取得できるかを確認します。
MT4版と同じ見た目にすれば同じ動作になりますか?
見た目が同じでも、内部のバッファ値、判定タイミング、注文管理、履歴管理が違えば動作は変わる場合があります。表示系と判定系を分けて確認してください。
移行相談では何を送ればよいですか?
対象ファイル、MQ4ソースの有無、EX4、setファイル、チャート画像、動作説明、バックテスト条件、Expertsログ、Journalログを整理してください。口座番号や認証情報はマスクしてください。
MT4とMT5で同じEAを使えますか?
基本的には別の実行環境として確認する必要があります。MT4用EAとMT5用EAではファイル形式や実装が異なるため、MT4用のex4をMT5へ入れてそのまま利用することはできません。
MT4のEAをMT5用にできますか?
検討できます。ソースコードの有無、機能、発注・決済、ポジション管理、表示、通知、外部連携などを確認し、MT5向けに必要な再設計・再実装範囲を判断します。
MT4インジケーターをMT5で使えますか?
MT4用のmq4/ex4をMT5へそのまま配置して使うことは基本的にできません。mq4ソースがある場合は、計算、バッファ、描画、通知等を確認してMT5向けの再構築を検討します。
新規開発ならMT4とMT5のどちらですか?
EAFCでは、新規のEA・インジケーター・補助ツール等の開発はMT5を基本としています。MT4は、現在利用している既存製品の修正・不具合対応などを中心に確認します。
既存MT4は必ずMT5へ移行する必要がありますか?
必ずしも移行が必要なわけではありません。既存MT4製品の小規模な修正や保守であれば、MT4のまま対応できる場合があります。大規模な機能追加、長期利用、継続的な拡張を予定している場合はMT5への移行・再構築を検討します。
ex4やex5だけでも改修できますか?
ex4やex5はコンパイル済みファイルのため、内部ロジックを直接確認・変更することは基本的にできません。ソースコードがない場合は、現在の動作や仕様資料を確認して再構築を検討する場合があります。デコンパイルや無断解析には対応しません。
MT4からMT5への移行は単純変換ですか?
単純変換とは限りません。MQL4とMQL5では、発注・決済、ポジション管理、イベント処理、インジケーターバッファなどに違いがあるため、既存仕様を確認したうえでMT5向けに再設計・再実装する場合があります。
MT4/MT5の違いで利益は変わりますか?
この記事では利益や売買成績の比較は扱っていません。EAやインジケーターの開発、改修、移行、導入確認に必要な技術的な違いを整理しています。
相談前に何を準備すればよいですか?
新規開発か既存改修か、現在MT4/MT5のどちらを使っているか、対象ファイル、setファイル、現在の動作、希望する変更、スクリーンショット、Expertsログ、Journalログなどを整理してください。Webhook URL、APIキー、認証情報などは送信しないでください。
新規開発、既存改修、MT4→MT5移行のどれかを整理し、mq4 / mq5 / mqh、setファイル、現在仕様、希望仕様、スクリーンショット、Expertsログ、Journalログなどを準備してください。口座情報や認証情報は伏せてください。
MQL4とは何ですか?
MQL4は、MT4でEA、インジケーター、スクリプトなどを作るための開発言語です。MT4向けの自動売買、表示、通知、集計、操作補助などに使われます。
mq4とex4の違いは何ですか?
mq4はソースコード、ex4はコンパイル済みファイルです。改修や内容確認には、原則としてmq4の有無が重要です。
MQL4でMT5用のEAを作れますか?
MQL4はMT4向けです。MT5向けのEAやインジケーターは、MQL5での作成または作り直しが必要になる場合があります。
MQL4の知識がなくても依頼できますか?
可能です。ただし、作りたい機能、対象環境、mq4/ex4の有無、setファイル、ログ、スクリーンショットを整理しておくと相談が進めやすくなります。
ex4だけでも改修できますか?
ex4はコンパイル済みファイルのため、内部ロジックを直接確認して改修することは基本的に難しくなります。mq4がない場合は、現在の動作や画面をもとに再作成を検討する形になります。
MQL4でアラートや通知を追加できますか?
仕様によります。通知条件、通知タイミング、通知先、重複防止、ログ出力を整理することで、アラートや通知機能の追加可否を確認しやすくなります。
MQL4で作れば利益は保証されますか?
いいえ。MQL4で作るEAやインジケーターはソフトウェアであり、利益、勝率、損失回避を保証するものではありません。
MQL4とMQL5は互換性がありますか?
完全な互換性があるわけではありません。似た記述を使える部分はありますが、EA・インジケーターの機能によってはMQL5向けの再設計・再実装が必要です。
MQL4のEAをMQL5へ自動変換できますか?
自動変換だけで完成するとは限りません。発注・決済、ポジション管理、インジケーター取得、イベント処理、外部連携、ログなどを機能単位で確認する必要があります。
新規MQL4開発を依頼できますか?
EAFCでは、新規のEA・インジケーター・補助ツール等はMT5 / MQL5での開発を基本としているため、新規MQL4製品の開発は原則として受け付けていません。既存MT4 / MQL4製品の修正・不具合対応は個別に確認します。
既存MT4 EAは必ずMQL5へ移行する必要がありますか?
必ずしも移行する必要はありません。小規模な修正や現在のMT4環境を維持するための改修であれば、MQL4のまま対応できる場合があります。大規模な機能追加、長期利用、継続的な拡張を予定している場合はMT5 / MQL5への移行を検討します。
ex4しかない場合でもMT5用にできますか?
ex4から内部ソースを取り出して変換する対応は行いません。現在の動作、Inputs、画面、マニュアル、ログなどから仕様を整理し、必要であればMT5 / MQL5で再構築する方法を検討します。
MQL4インジケーターをMQL5へ移行できますか?
検討できます。mq4ソースの有無、計算条件、バッファ、描画、確定足、リペイント、通知、EA連携などを確認して、MQL5側で必要な再実装範囲を判断します。
MT4からMT5へ移行すると同じバックテスト結果になりますか?
同一結果を保証するものではありません。プラットフォームやテスト条件、データ、スプレッド、銘柄仕様、実装差などによって結果が変わる可能性があります。移行確認では、売買成績ではなく、仕様どおりに条件判定・発注・決済・管理が行われているかを確認します。
MT4インジケーターはMT5でそのまま使えますか?
そのまま使えない場合があります。MQL4とMQL5の違い、ファイル形式、表示方式、通知処理を確認する必要があります。
ex4しかない場合でもMT5化できますか?
仕様を確認して、MT5用として再現作成になる可能性があります。ソースコードであるmq4の有無が重要です。
表示だけなら簡単に移行できますか?
表示内容や計算条件、使っているバッファ、オブジェクト、サブウィンドウ、時間足条件によって判断が変わります。
通知機能も移行できますか?
仕様によります。アラート、メール、プッシュ通知、Discord通知、WebRequestなど、必要な通知方式と条件を整理したうえで確認します。
MT5化で売買結果は改善しますか?
この記事では売買結果ではなく、表示、通知、確認機能の移行可否を扱います。MT5化は利益や勝率を保証するものではありません。
相談前に何を送ればよいですか?
mq4/ex4、setファイル、現在の表示画面、サイン条件、通知条件、Expertsログ、残したい機能、不要な機能を整理してください。
ソースがない場合は依頼できませんか?
依頼相談自体は可能です。ただし、ex4のみの場合は内部ロジックを確認できないため、現在の画面や仕様説明をもとに再現作成を検討する形になります。
MQL4は初心者でも学べますか?
学習は可能です。ただし、EAでは注文、決済、エラー処理、ログ確認まで扱うため、まずは小さな表示系やログ確認から始めると整理しやすくなります。
EAとインジケーターのどちらから学ぶべきですか?
売買実行を伴わないインジケーターやスクリプトから始める方が、確認範囲を分けやすいです。EAは注文処理やポジション管理が加わるため、後から段階的に学ぶと整理しやすくなります。
MQL4で作ったものはMT5でも使えますか?
基本的にはそのまま使えません。MT5ではMQL5向けに作り直しや移行対応が必要です。ファイル形式や注文管理の構造も異なります。
自作と開発依頼はどう分ければよいですか?
学習目的なら自作、実運用補助や複雑な管理機能が必要な場合は仕様を整理して依頼する方が確認しやすい場合があります。
MQL4を学べば良いEAを作れますか?
MQL4は開発言語であり、利益、勝率、損失回避、運用結果を保証するものではありません。この記事では、開発・確認・検証のための技術整理を扱います。
既存EAを少しだけ直す場合もMQL4の知識は必要ですか?
はい。小さな修正でも、Inputs、注文処理、決済処理、MagicNumber、ログ、外部連携に影響する場合があります。変更前のファイルを保存し、影響範囲を確認してください。
コンパイルエラーが出た場合は何を送ればよいですか?
エラーが出たファイル名、行番号、エラー文、変更した箇所、関連ファイル、MetaEditorのスクリーンショットを整理してください。
MQL4のOrderSendとは何ですか?
MT4 EAから注文を送るために使われる代表的な注文処理です。通貨ペア、注文種別、ロット、価格、SL/TP、コメント、MagicNumberなどを指定して注文します。
OrderSendを見ると何が分かりますか?
注文種別、ロット、価格、SL/TP、MagicNumber、コメント、エラー処理などを確認できます。EAがどの条件でどの注文を送ろうとしているかを調べる時に重要です。
OrderSendのエラーはどこで確認しますか?
Expertsログ、Journalログ、エラー番号、注文条件、ロット制限、取引時間、証拠金、価格、SL/TP距離などを確認します。
OrderSendを変更すればEAの動きは変わりますか?
変わる可能性があります。OrderSendは注文処理の重要部分なので、変更前に呼び出し箇所、注文条件、MagicNumber、エラー処理、決済処理への影響を確認してください。
OrderSendの記事は売買方法の推奨ですか?
いいえ。この記事はMQL4の注文処理を理解するための技術解説であり、売買判断、利益、勝率、損失回避を保証するものではありません。
MagicNumberはOrderSendで必ず確認すべきですか?
複数EAを使う場合や、EA注文と手動注文を分けたい場合は重要です。OrderSendで指定したMagicNumberと、決済処理側の絞り込み条件が一致しているか確認してください。
OrderSendが成功したかどうかはどう確認しますか?
戻り値、チケット番号、Expertsログ、Journalログ、ターミナル上の注文状態を確認します。失敗時はエラー番号と注文条件を合わせて確認してください。
MT4のEAをそのままMT5で使えますか?
基本的にはそのままでは使えません。MT4とMT5では、言語仕様、注文管理、ポジション管理、インジケーター取得、テスター環境が異なるため、MT5向けに作り直す必要があります。
自動変換ツールで変換すれば十分ですか?
十分でない場合があります。関数名が置き換わっても、Order / Position / Deal、CopyBuffer、CTrade、ログ設計、risk管理がMT5向けに整理されていないと、不具合調査や運用で問題が出やすくなります。
MT4版と完全に同じ挙動になりますか?
完全一致を前提にしない方が安全です。銘柄仕様、tick、スプレッド、約定、インジケーター計算、バックテスト条件が異なるため、MT5版として再検証が必要です。
MT4版のソースコードがなくてもMT5化できますか?
可能な場合もありますが、完全再現は難しくなります。仕様書、setファイル、画面、ログ、バックテスト結果、動作説明、インジケーター情報から再設計する必要があります。
MT4インジケーターをMT5 EAから使えますか?
MT4用インジケーターをそのままMT5 EAから使うことはできません。MT5用に作り直し、iCustomのhandle、CopyBuffer、buffer番号、shift、リペイントを確認する必要があります。
OrderSendの書き換えだけでMT5化できますか?
避けた方が安全です。発注処理だけでなく、ポジション確認、履歴確認、決済対象、risk、ログ、エラー確認をMT5向けに設計する必要があります。
CTradeを使えばMT5化は簡単になりますか?
CTradeは便利ですが、使えば自動的に安全になるわけではありません。発注前確認、retcode確認、Position Snapshot、Close Scope、ログ設計は別途必要です。
MT4版のバックテスト結果をMT5版の根拠にできますか?
参考にはできますが、そのまま根拠にはしない方が安全です。MT5版は、MT5のストラテジーテスター、銘柄仕様、tick model、スプレッド条件で再検証します。
関連する確認ページ
確認したい内容に応じて、次のページを参照してください。本文中ですでに案内したページは、ここでは重ねて掲載していません。
あわせて確認したいページ
今回の確認内容に関連する補足ページです。必要な項目だけ確認してください。
| 確認目的 | 関連ページ |
|---|---|
| 「MT4 MT5 技術移行 再設計」の読後に「MQL4とは」を補足確認 | MQL4とは |
| 「MT4 MT5 技術移行 再設計」の読後に「MQL4のOrderSendとは」を補足確認 | MQL4のOrderSendとは |
まとめ
MT4からMT5への移行は、単純なファイル変換ではなく、MQL4資産をMT5 / MQL5向けに再設計する作業です。
EX4しかない場合は内部ロジックを直接確認できないため、表示や動作説明をもとにMT5版を新規設計する考え方になります。MQ4ソースがある場合でも、MQL5の注文管理、ポジション管理、インジケーターバッファ、履歴取得、外部連携に合わせて作り直す必要があります。
EA移行では、signal、execution、risk、exit、notification、external controlを分けて確認してください。インジケーター移行では、表示形式、バッファ番号、サインなし値、リペイント、EA連携の有無を整理することが重要です。
バックテスト結果はMT4版とMT5版で同じになるとは限りません。比較する場合は、銘柄名、時間足、期間、spread、setファイル、ログ、サーバー時間を整理してください。
移行や作り直しを相談する場合は、対象ファイル、MQ4ソースの有無、setファイル、チャート画像、ログ、発生条件を整理し、口座番号や認証情報は必ずマスクしてください。
利用条件・相談窓口
お問い合わせはEAFC公式LINEへ
EAFCサイト内の記事、商品、導入前確認、設定確認、ログ確認、開発依頼前のご相談など、各種お問い合わせはEAFC公式LINEより受け付けています。
※投資助言、売買指示、利益保証、推奨ロット、推奨銘柄の案内は行っておりません。
口座番号、認証情報、Webhook URL、GAS URL、APIキーなどの機密情報は送信しないでください。
