
MT4 MT4 実行時エラー
4202
- 定数名
ERR_OBJECT_DOES_NOT_EXIST- メッセージ
object does not exist- 意味
- オブジェクトが存在しない
MT4エラー4202とは
ObjectSet()・ObjectGet()・ObjectDelete() などで、チャート上にない名前のオブジェクトを操作しようとしたときのエラーです。
ログの表示例
ObjectSet error 4202
「エキスパート」タブまたは「操作履歴」タブに表示されます。数値や表記の細部は、ビルド・ブローカー・EAの作りによって異なります。
MT4エラー4202の主な原因
- オブジェクト名のつづりが違う
- ユーザーが手動でオブジェクトを削除した
- ObjectCreate() が失敗していたのに、その後の処理を続けた
- 別のサブウィンドウやチャートにあるオブジェクトを指定した
MT4エラー4202の対処法
- 操作の前に ObjectFind(名前) >= 0 で存在を確認する
- ObjectCreate() の戻り値を確認する
- 存在しなければ作り直す処理を入れる
コード例(MQL4)
// オブジェクトは「なければ作る、あれば動かす」(エラー4200・4202 対策)(MQL4)
#define OBJ_PREFIX "MyEA_"
void DrawLevel(string name, double price, color clr)
{
string obj = OBJ_PREFIX + name;
if(ObjectFind(0, obj) < 0)
{
if(!ObjectCreate(0, obj, OBJ_HLINE, 0, 0, price))
{
Print("ObjectCreate error ", GetLastError());
return;
}
}
ObjectSetDouble(0, obj, OBJPROP_PRICE, price);
ObjectSetInteger(0, obj, OBJPROP_COLOR, clr);
}
void OnDeinit(const int reason)
{
ObjectsDeleteAll(0, OBJ_PREFIX); // 自分が作ったオブジェクトだけ消す
}MetaEditor(MT4)でコンパイルできることを確認済みです。自分のEAに組み込むときは、変数名や設定値を合わせてください。












