
MT4・MT5 実行中のログメッセージ
cannot load custom indicator
- 意味
- iCustom で指定したインジケーターを読み込めない
「cannot load custom indicator」とは
EA が iCustom() で呼び出すインジケーターのファイルが見つからないときに出るメッセージです。MT4 では「cannot open file '…\indicators\xxx.ex4' [2]」、MT5 では「cannot load custom indicator 'xxx' [4802]」のように表示されます。
ログの表示例
MT4: cannot open file 'C:\...\MQL4\indicators\MyIndicator.ex4' [2] MT5: cannot load custom indicator 'MyIndicator' [4802]
「エキスパート」タブまたは「操作履歴」タブに表示されます。数値や表記の細部は、ビルド・ブローカー・EAの作りによって異なります。
「cannot load custom indicator」の主な原因
- iCustom() のインジケーター名とファイル名が一致していない
- インジケーターを Indicators フォルダ以外(Experts など)に置いている
- サブフォルダ内のインジケーターを、フォルダ名なしで指定している
- .ex4 / .ex5 がない(ソースだけで、コンパイルしていない)
- バックテスト時に、インジケーターがテスト用エージェントに渡されていない(MT5)
「cannot load custom indicator」の対処法
- インジケーターを MQL4(MQL5)\Indicators に置き、ナビゲーターに表示される名前を拡張子なしで指定する
- サブフォルダなら "フォルダ名\\インジケーター名" と書く
- MetaEditor でコンパイルして .ex4 / .ex5 を作る
- MT5 のEAでは #property tester_indicator "インジケーター名" を書くと、テスト時に確実に読み込まれる
コード例(MQL5)
// バックテストでもインジケーターを確実に読み込ませる(cannot load custom indicator 対策)(MQL5)
#property tester_indicator "MyArrow" // MQL5\Indicators\MyArrow.ex5
int hArrow = INVALID_HANDLE;
int OnInit()
{
hArrow = iCustom(_Symbol, _Period, "MyArrow");
if(hArrow == INVALID_HANDLE)
{
Print("MyArrow を読み込めません error=", GetLastError());
return INIT_FAILED;
}
return INIT_SUCCEEDED;
}MetaEditor(MT5)でコンパイルできることを確認済みです。自分のEAに組み込むときは、変数名や設定値を合わせてください。












