MQL5の基本コードで「undeclared identifier」が連発します

 

MetaTrader 5(MT5)のEA(Expert Advisor)開発で、Python連携用のシンプルなブリッジEAを作成しようとしていますが、
MQL5の基本文法(ローカル変数の宣言や for ループ)の箇所で「undeclared identifier(未宣言の識別子)」エラーが解消せず、コンパイルできません。

  • 使用環境: MetaQuotes公式サイトからダウンロードした最新のMT5クライアント(MetaEditor)。

  • 試行済みの対策: MT5の再インストール、MetaEditorのキャッシュクリア、別のPC環境(ネットカフェ)でのコンパイルも試みましたが、エラーが全く同じ行で再現します。

  • 原因の推定: コードの論理的な誤りではなく、**コンパイラのバグ(特殊文字の混入や型推論の破損)**が原因であると見ています。

発生しているエラーの具体的な内容

以下のコード(最終的にエラー箇所を最小化したテストコード)で、コンパイル時に8個のエラーが発生しています。

エラー内容 行数(最終版コード) 変数名 発生原因の推定
undeclared identifier 84, 122行目 i for(i=...) のループ変数が認識されない。
undeclared identifier 65, 66行目 target_pos_type ENUM 型のローカル変数が認識されない。
undeclared identifier 18, 116行目など g_last_check_time など グローバル変数まで認識されない。

試した主な回避策

  1. 型キャスト: FileReadString の結果を (string) で強制キャスト 失敗

  2. グローバル変数への退避: エラーが出る変数を全てグローバルに定義 → 失敗

  3. モノリシック構造: 全てのロジックと変数を OnTick() 関数に統合し、グローバル変数をコードの最上部に配置 → 失敗(現在の状態)

  4. 文字コードの洗浄: コードをメモ帳で浄化 → 失敗

  5. 手入力: エラー行をキーボードで半角モードで手入力 → 失敗

  6. MQL4スタイル: for(int i = ...) ではなく、 int i; for(i = ...) に変更 → 失敗

質問

  1. 同種のエラー経験: MetaEditorで、正常なMQL5コードにもかかわらず「undeclared identifier」や「implicit conversion from 'unknown' to 'string'」が多発した経験はありますか?

  2. 有効な対処法: このようにコンパイラの機能自体が破損していると疑われる場合、MT5の再インストール以外で、MetaEditorの環境をリセットする確実な方法があれば教えてください。

  3. 代替コンパイラ: 別のブローカーのMT5クライアントや、 mql.exe のCLIツールなどでコンパイルを試みるのが最善でしょうか?


長文となり恐縮ですが、この問題を解決できる知見をお持ちの方、ご協力をお願いいたします。

 

使っているのはデモ口座ですか?

デモ口座にはベータ版のアップデートも送られてきますので、バグがある場合もあります。

ただ、私が今使っているMT5はデモ口座ですが特に何も問題は起こっていません。

質問のエラーがバグによるものなのかどうかは分かりません。

 
Shino Unada #:

使っているのはデモ口座ですか?

デモ口座にはベータ版のアップデートも送られてきますので、バグがある場合もあります。

ただ、私が今使っているMT5はデモ口座ですが特に何も問題は起こっていません。

質問のエラーがバグによるものなのかどうかは分かりません。

はい、デモ口座です。

数日間この状態から抜け出せず、自宅PC2台とネットカフェの計3台

すべて同じ状態で進まない状態です。