MQL5のコンパイルエラー修正を依頼する前に確認すること|エラー行・include・BOM
MQL5のEAやインジケーターをMetaEditorでコンパイルした時に、エラーが出て先へ進めないことがあります。
コンパイルエラーは、ソースコード本体の文法ミスだけでなく、includeファイル不足、ファイル名や保存場所の違い、文字コード、BOM、MQL4とMQL5の混在、古い書き方、関数の引数違いなど、複数の原因で発生します。
修正依頼をする場合は、「コンパイルできません」だけでは原因を判断しにくいため、MetaEditorに表示されたエラー行、エラーメッセージ、対象ファイル、関連するmqhファイル、コンパイル環境を整理しておくことが重要です。
特に、MQL5ではEA本体のmq5ファイルだけでなく、includeしているmqhファイルや外部ライブラリが不足していると、別の環境では同じようにコンパイルできない場合があります。
この記事では、MQL5のコンパイルエラー修正を依頼する前に確認したい、エラー行、include、BOM、MetaEditorの表示、提出資料、再現条件、修正範囲の整理方法を解説します。
なお、この記事はMQL5の開発依頼・修正依頼前の確認を目的とした内容です。特定の売買手法、推奨ロット、推奨エントリー、利益保証を行うものではありません。
この記事で確認すること
| 確認項目 | 内容 | 依頼前の確認ポイント |
|---|---|---|
| エラー行 | MetaEditorが示すファイル名と行番号です。 | エラー一覧をスクリーンショットまたはテキストで保存します。 |
| エラーメッセージ | undeclared identifier、wrong parameters count などの表示です。 | 省略せず全文を確認します。 |
| include | mqhファイルや共通ライブラリの読み込みです。 | 関連ファイルが不足していないか確認します。 |
| BOM | ファイル先頭の不可視文字が原因になる場合があります。 | unknown symbol 0xFEFF などの表示を確認します。 |
| コンパイル環境 | MetaEditor、MT5ビルド、保存場所などです。 | 依頼時に環境情報を添えると確認しやすくなります。 |
コンパイルエラーとは
コンパイルエラーとは、MetaEditorがMQL5のソースコードを実行ファイルへ変換できない状態です。
MQL5のEAやインジケーターでは、mq5ファイルやmqhファイルに文法ミス、未定義の変数、関数の引数違い、include不足などがあると、コンパイルエラーになります。
| 状態 | 意味 | 確認する場所 |
|---|---|---|
| エラー | コンパイルを完了できない問題です。 | MetaEditor下部のErrorsタブを確認します。 |
| 警告 | コンパイルは通るが注意が必要な表示です。 | Warnings欄を確認します。 |
| ファイル不足 | include先やライブラリが見つからない状態です。 | ファイル構成と保存場所を確認します。 |
| 文字コード問題 | BOMや不可視文字でエラーになる場合があります。 | unknown symbolなどの表示を確認します。 |
| 環境差 | MT5ビルドや依存ファイルの違いで結果が変わる場合があります。 | MetaEditorとMT5のバージョンを確認します。 |
依頼前には、エラーが1件だけなのか、複数件出ているのか、最初のエラーがどのファイルで発生しているのかを確認します。
依頼前に最初に整理する内容
コンパイルエラー修正を相談する時は、まず「何をコンパイルしようとしているのか」を整理します。
EA、インジケーター、スクリプト、ライブラリでは、必要なファイルや確認する項目が変わります。また、mq5ファイルだけでなく、includeしているmqhファイルも必要になる場合があります。
| 確認項目 | 内容 | 依頼時に伝えること |
|---|---|---|
| 対象ファイル | コンパイルしたいmq5ファイルです。 | EA名、インジ名、ファイル名を伝えます。 |
| ファイル種別 | EA、インジケーター、スクリプトなどです。 | どの種類のMQL5ファイルかを整理します。 |
| 関連ファイル | mqh、ライブラリ、画像、設定ファイルなどです。 | include先を含めて一式で確認します。 |
| エラー一覧 | MetaEditorに表示されるエラーです。 | 全文をコピーするか、スクリーンショットで保存します。 |
| 変更履歴 | いつからエラーになったかです。 | 直前に変更した箇所があれば伝えます。 |
| 目的 | コンパイルだけ直したいのか、機能追加もしたいのかです。 | 修正範囲を分けて伝えます。 |
MetaEditorで確認する項目
MQL5のコンパイルエラーでは、MetaEditorのErrorsタブに表示される内容が重要です。
エラー文だけでなく、ファイル名、行番号、列番号、エラー件数、警告件数を確認してください。
| MetaEditorの項目 | 確認内容 | 注意点 |
|---|---|---|
| File | エラーが出ているファイル名です。 | mq5本体ではなくmqh側の場合があります。 |
| Line | エラー行です。 | 実際の原因は前後の行にある場合があります。 |
| Column | 列番号です。 | 括弧や記号の位置確認に使います。 |
| Description | エラー内容です。 | 全文を省略せず保存します。 |
| Errors | エラー件数です。 | 最初のエラーを直すと後続が消える場合があります。 |
| Warnings | 警告件数です。 | 警告でも実運用前には確認が必要な場合があります。 |
エラー件数が多い場合でも、最初の1件が原因で連鎖的に大量のエラーが出ていることがあります。依頼時には、全件一覧とあわせて、最初のエラー行が分かる情報を用意してください。
よくあるMQL5のコンパイルエラー例
MQL5のコンパイルエラーには、いくつかよく出る種類があります。
ただし、同じエラーメッセージでも原因が同じとは限りません。エラー文だけで判断せず、ファイル構成、前後のコード、include、ビルド環境をあわせて確認します。
| エラー例 | よくある意味 | 確認すること |
|---|---|---|
| undeclared identifier | 変数、関数、定数が未定義の可能性があります。 | 宣言漏れ、include不足、名前のタイプミスを確認します。 |
| wrong parameters count | 関数の引数の数が合っていない可能性があります。 | 関数定義、呼び出し側、MQL4/MQL5差を確認します。 |
| cannot open include file | includeファイルが見つからない可能性があります。 | mqhの保存場所、ファイル名、階層を確認します。 |
| unexpected token | 想定外の記号や構文がある可能性があります。 | 括弧、セミコロン、全角記号、前後行を確認します。 |
| unbalanced parentheses | 括弧の対応が崩れている可能性があります。 | ()、{}、[] の対応を確認します。 |
| unknown symbol | 不可視文字や文字コードが原因の場合があります。 | BOM、全角スペース、コピー時の混入文字を確認します。 |
| version must be xxx.yyy | version表記がMQL5の形式に合っていない可能性があります。 | #property version の書式を確認します。 |
エラー修正では、1行だけを直せば済む場合もありますが、ファイル構成や設計全体の確認が必要になる場合もあります。
includeファイルで確認すること
MQL5では、EA本体のmq5ファイルから、別のmqhファイルをincludeしていることがあります。
そのため、mq5ファイルだけを渡しても、include先のmqhファイルが不足していると、別環境ではコンパイルできない場合があります。
| 確認項目 | 内容 | 注意点 |
|---|---|---|
| include先 | #includeで読み込んでいるファイルです。 | mqhファイルが一式揃っているか確認します。 |
| 保存場所 | Includeフォルダや同一フォルダなどです。 | 相対パスと階層の違いでエラーになる場合があります。 |
| ファイル名 | 大文字小文字、拡張子、全角文字の有無です。 | ファイル名の表記ゆれを確認します。 |
| 共通ライブラリ | 複数EAで使う関数群です。 | 古い版と新しい版が混在していないか確認します。 |
| 依存関係 | mqhがさらに別のmqhを読み込む構成です。 | 階層全体を一式で渡す必要があります。 |
依頼時は、mq5ファイル単体ではなく、対象フォルダの構成、includeフォルダ、関連mqhファイルをまとめて確認できる状態にしておくとスムーズです。
BOMや文字コードで確認すること
MQL5のコンパイルエラーでは、BOMや不可視文字が原因になることがあります。
BOMとは、ファイル先頭に付く文字コード情報のようなもので、環境や保存形式によっては、MQL5上で unknown symbol などのエラーとして見える場合があります。
| 確認項目 | 内容 | 注意点 |
|---|---|---|
| BOM | ファイル先頭の不可視情報です。 | unknown symbol 0xFEFF などが出る場合があります。 |
| 全角スペース | 見えにくい空白文字です。 | 識別子や記号の近くに混入するとエラーになる場合があります。 |
| 全角記号 | 全角の括弧、引用符、セミコロンなどです。 | コピー貼り付け時に混入する場合があります。 |
| 文字化け | 日本語コメントや記号が崩れる状態です。 | 保存形式やエディタの違いを確認します。 |
| コピペ混入 | WebページやPDFからコピーした文字です。 | 不可視文字や特殊記号が混ざる場合があります。 |
BOMや文字コードの問題は、見た目では分かりにくいことがあります。エラー行がファイル先頭付近に集中している場合や、unknown symbol が出る場合は、文字コードや不可視文字も確認します。
MQL4とMQL5の混在に注意する
MQL4用のコードをMQL5へそのまま移した場合、コンパイルエラーになることがあります。
MT4とMT5では、注文処理、ポジション管理、イベント関数、インジケーターバッファ、取引関数などの扱いが異なります。そのため、MQL4の書き方がMQL5ではそのまま使えない場合があります。
| 確認項目 | よくある違い | 依頼前の確認 |
|---|---|---|
| 注文処理 | MQL4のOrderSendとMQL5の取引構造は異なります。 | MT4用コードかMT5用コードか確認します。 |
| ポジション管理 | チケット、ポジション、注文、約定の扱いが異なります。 | MT5のポジション仕様に合わせる必要があります。 |
| イベント関数 | OnInit、OnTick、OnCalculateなどの使い方が異なります。 | EAかインジかを分けて確認します。 |
| インジバッファ | SetIndexBufferやPlotIndexSet系の扱いが異なります。 | インジケーターでは特に確認が必要です。 |
| 定数や関数名 | MQL4で使えた定数や関数がMQL5で未定義になる場合があります。 | undeclared identifierの原因になる場合があります。 |
依頼前には、そのコードが最初からMQL5用なのか、MQL4から移植したものなのかを確認してください。
修正依頼で提出するとよい資料
コンパイルエラー修正を依頼する場合は、エラーが再現できる資料を揃えることが重要です。
| 資料 | 内容 | 注意点 |
|---|---|---|
| mq5ファイル | コンパイルしたい本体ソースです。 | 最新版を提出します。 |
| mqhファイル | includeしている関連ファイルです。 | 不足すると再現できない場合があります。 |
| フォルダ構成 | Experts、Indicators、Includeなどの配置です。 | スクリーンショットでも確認できます。 |
| エラー一覧 | MetaEditorのErrorsタブの内容です。 | 全文コピーまたは画面キャプチャを用意します。 |
| MetaEditor情報 | MT5ビルドやMetaEditor環境です。 | 環境差の切り分けに使います。 |
| 直前の変更内容 | どこを変更してからエラーになったかです。 | 原因候補を絞るために重要です。 |
| 希望する修正範囲 | コンパイルだけか、機能修正も含むかです。 | 見積や確認範囲が変わります。 |
| ログ | コンパイル後の動作確認で必要になる場合があります。 | ExpertsログとJournalログを分けて確認します。 |
ソースコード内に口座番号、トークン、Webhook URL、APIキーなどが含まれる場合は、依頼前に扱い方を確認してください。公開場所や第三者に見える場所へ貼り付けることは避けます。
コンパイル修正と動作修正は別に考える
コンパイルエラーがなくなっても、EAやインジケーターが意図どおりに動くとは限りません。
コンパイル修正は、まずMetaEditor上でエラーなく実行ファイルを作れる状態にする作業です。一方で、注文しない、決済しない、通知しない、表示が崩れるなどの問題は、コンパイル後の動作確認で別途確認します。
| 確認段階 | 内容 | 必要な資料 |
|---|---|---|
| コンパイル修正 | MetaEditorでエラーなくコンパイルできる状態にします。 | mq5、mqh、エラー一覧が必要です。 |
| 初期化確認 | EAやインジがチャートに正常に読み込まれるか確認します。 | Expertsログ、設定画面を確認します。 |
| 表示確認 | パネル、ライン、矢印、バッファ表示などを確認します。 | チャート画像や表示条件を確認します。 |
| 注文確認 | EAが注文できるか、注文条件で止まるかを確認します。 | Journalログ、Expertsログ、取引履歴を確認します。 |
| 仕様確認 | 希望した動作と一致しているか確認します。 | 仕様書、setファイル、検証条件を確認します。 |
依頼時には、「コンパイルエラーだけを直したい」のか、「動作確認やロジック修正まで含めたい」のかを分けて整理してください。
エラー行だけでは判断できないケース
MetaEditorのエラー行は重要ですが、表示された行だけが原因とは限りません。
たとえば、前の行のセミコロン抜け、括弧の閉じ忘れ、include側の定義不足、別ファイルの変更が原因で、別の行にエラーが表示されることがあります。
| 見えるエラー | 実際に確認すること |
|---|---|
| 特定行でunexpected tokenが出る | 前後の括弧、セミコロン、全角記号を確認します。 |
| 大量にundeclared identifierが出る | include不足や共通定義ファイルの欠落を確認します。 |
| 関数呼び出しがすべてエラーになる | 関数定義の変更、引数仕様、MQL4/MQL5差を確認します。 |
| ファイル先頭でunknown symbolが出る | BOMや文字コード、不可視文字を確認します。 |
| 同じソースなのに別PCでエラーになる | 関連ファイル不足、保存場所、MT5ビルド差を確認します。 |
依頼前には、エラー行だけでなく、関連ファイル一式と直前の変更内容を一緒に整理してください。
依頼前チェック表
| チェック項目 | 確認内容 |
|---|---|
| 対象ファイル名を確認した | EA、インジ、スクリプトのファイル名と種類を確認します。 |
| mq5ファイルを用意した | コンパイル対象の本体ソースを用意します。 |
| mqhファイルを用意した | includeしている関連ファイルを一式で確認します。 |
| エラー一覧を保存した | MetaEditorのErrorsタブを全文コピーまたはスクリーンショットで保存します。 |
| 最初のエラー行を確認した | 大量エラーの場合でも、最初のエラーを確認します。 |
| 直前の変更内容を整理した | どこを変更してからエラーになったかを記録します。 |
| include構成を確認した | 不足しているmqh、保存場所、階層を確認します。 |
| BOMや不可視文字の可能性を確認した | unknown symbolや0xFEFFが出ていないか確認します。 |
| MQL4とMQL5の混在を確認した | MT4用コードをMT5へ移植していないか確認します。 |
| MetaEditorとMT5の環境を確認した | MT5ビルド、MetaEditor、PC環境を記録します。 |
| 修正範囲を分けた | コンパイル修正のみか、動作確認・仕様変更も含むかを整理します。 |
| 機密情報を確認した | Webhook URL、APIキー、口座情報などを公開場所に貼らないよう注意します。 |
FAQ
MQL5のコンパイルエラー修正を依頼する時は何を渡せばよいですか?
コンパイル対象のmq5ファイル、includeしているmqhファイル、MetaEditorのエラー一覧、エラー行、フォルダ構成、MT5ビルド、直前の変更内容を整理すると確認しやすくなります。
エラー行だけを送れば修正できますか?
エラー行だけでは判断できない場合があります。前後のコード、includeファイル、関連mqh、直前の変更内容が必要になることがあります。
includeファイルが不足しているとどうなりますか?
cannot open include file や undeclared identifier などのエラーが出る場合があります。mq5本体だけでなく、関連するmqhファイルも一式で確認してください。
BOMが原因でコンパイルエラーになることはありますか?
あります。ファイル先頭にBOMや不可視文字が混入している場合、unknown symbol 0xFEFF などのエラーが出ることがあります。
コンパイルできればEAは正常に動きますか?
必ずしも正常に動くとは限りません。コンパイル修正と、注文、決済、表示、通知、ログなどの動作確認は別に行う必要があります。
MQL4のコードをMQL5に貼り付けても使えますか?
そのまま使えない場合があります。注文処理、ポジション管理、イベント関数、インジケーターバッファなどが異なるため、MQL5向けの修正が必要になることがあります。
関連ページ
MQL5のコンパイルエラー修正では、エラー行だけでなく、ソースコードの有無、ログ出力、外部連携の有無、見積依頼前の資料整理もあわせて確認すると原因を切り分けやすくなります。
| 関連ページ | 確認ポイント |
|---|---|
| EA開発の見積依頼前に整理すること|仕様書・ログ・setファイル・検証条件 | コンパイル修正を含むEA開発・改修依頼前に、必要資料を整理する時に確認します。 |
| ex5ファイルしかないEAは改修できる?開発依頼前に確認すること | ex5、mq5、mqhの違いや、ソースコードの有無による改修可否を確認する時に使います。 |
| EAのログ出力を増やしたい時に整理すること|Experts・Journal・CSV・通知 | コンパイル後の動作確認や、実行時ログの出力を強化したい場合に確認します。 |
| EAに外部シート連携を追加したい時に整理すること|Google Sheets・CSV・WebRequest | WebRequest、CSV、Google Sheetsなどの外部連携追加時に、includeや外部通信まわりを確認します。 |
まとめ
MQL5のコンパイルエラー修正を依頼する場合は、エラー文だけでなく、エラー行、対象ファイル、include構成、BOM、文字コード、MetaEditor環境、直前の変更内容を整理することが重要です。
mq5ファイルだけでなく、関連するmqhファイルやフォルダ構成が不足していると、別環境では同じエラーを再現できない場合があります。
また、コンパイルエラーがなくなっても、EAやインジケーターが意図どおりに動くとは限りません。コンパイル修正、初期化確認、表示確認、注文確認、仕様確認は分けて考える必要があります。
依頼前には、MetaEditorのエラー一覧、最初のエラー行、関連ファイル一式、直前の変更内容、MT5ビルド、修正したい範囲を整理しておくと、確認が進めやすくなります。
