
MT5 MT5 実行時エラー
4014
- 定数名
ERR_FUNCTION_NOT_ALLOWED- 意味
- この場面では使えない関数を呼んだ
MT5エラー4014とは
呼び出したプログラムの種類や状況では使えない関数を実行したときのエラーです。インジケーターから注文関数や Sleep() を呼んだ場合や、WebRequest() の URL が許可されていない場合などに起こります。
ログの表示例
WebRequest failed, error 4014
「エキスパート」タブまたは「操作履歴」タブに表示されます。数値や表記の細部は、ビルド・ブローカー・EAの作りによって異なります。
MT5エラー4014の主な原因
- WebRequest() の接続先 URL が「ツール」→「オプション」→「エキスパートアドバイザ」の許可リストにない
- インジケーターから OrderSend() や Sleep() を呼んだ(インジケーターでは使えない)
- ストラテジーテスターで使えない関数(WebRequest など)をテスト中に呼んだ
- DLL の使用が許可されていない状態で DLL 関数を呼んだ
MT5エラー4014の対処法
- WebRequest() を使うときは、許可するURLリストに https://example.com のようにドメインを追加する
- 注文や待機処理はEA・スクリプトで行い、インジケーターでは行わない
- テスト中は MQLInfoInteger(MQL_TESTER) で判定して処理を分ける
コード例(MQL5)
// WebRequest で JSON を POST する(4014・5203 対策)(MQL5)
// 事前に ツール → オプション → エキスパートアドバイザ → 許可するURLリスト に URL を追加する
bool PostJson(const string url, const string json, string &response)
{
char data[], result[];
string resHeaders;
int len = StringToCharArray(json, data, 0, WHOLE_ARRAY, CP_UTF8);
ArrayResize(data, len - 1); // 末尾の 0 を送らない
string headers = "Content-Type: application/json\r\n";
ResetLastError();
int status = WebRequest("POST", url, headers, 5000, data, result, resHeaders);
if(status == -1)
{
int err = GetLastError();
Print("WebRequest error ", err, (err == 4014 ? ":URL が許可リストにありません" : ""));
return false;
}
response = CharArrayToString(result, 0, WHOLE_ARRAY, CP_UTF8);
return status == 200;
}MetaEditor(MT5)でコンパイルできることを確認済みです。自分のEAに組み込むときは、変数名や設定値を合わせてください。












