![【MQL4】OBJ_EVENTオブジェクトでMT4がフリーズ!](https://celebpanda.com/wp/wp-content/uploads/2021/05/セレブパンダブログ用.jpg)
Yahooニュースで、あなたへのおすすめニュースに「竹内&三吉、松嶋&反町、トシちゃん・・・芸能人「高級車デート」現場が出てくることに、全く共感できないセレブパンダだお。(芸能人に興味ないのでニュースはほぼみないのですが・・・)
今日は、かなり長い間、解決できずに困ったことについて説明します。
MQL4のオブジェクトにOBJ_EVENT(イベント)というオブジェクトがあります。
![](https://i.gyazo.com/cefc051c3f65abae85a7e4d2a96b4037.png)
何が困ったかというと、このオブジェクトを表示状態にするとMT4が固まりました。
再現性は100%です。
この解決方法を書きます。
こんな方におすすめ
- MT4が固まる原因を探している人(ひょっとして同じ現象かも)
MT4がフリーズコード
int OnInit() {
string event = "test" + TimeToStr(iTime(NULL,0,3), TIME_DATE | TIME_MINUTES);
ObjectCreate(0, event, OBJ_EVENT, 0, iTime(NULL,0,3), 0);
ObjectSetInteger(0, event, OBJPROP_COLOR, clrAqua);
ObjectSetInteger(0, event, OBJPROP_BACK, true);
ObjectSetInteger(0, event, OBJPROP_SELECTED, true);
return(0);
}
即時にMT4がフリーズはしません。数時間経過すると、フリーズします。
ログにも残らないので、本当にやっかいです。
チャートが動いている時でないとフリーズしません。土日でチャートが動いていない時間帯は、発生しません。
MT4がフリーズしないコード
int OnInit() {
string event = "test" + TimeToStr(iTime(NULL,0,3), TIME_DATE | TIME_MINUTES);
ObjectCreate(0, event, OBJ_EVENT, 0, iTime(NULL,0,3), 0);
ObjectSetInteger(0, event, OBJPROP_COLOR, clrAqua);
ObjectSetInteger(0, event, OBJPROP_BACK, true);
return(0);
}
原因は、選択状態にするプロパティ「OBJPROP_SELECTED」をTrueに設定したのが原因でした。
何故かは、いまだに不明ですが、これをやると固まります。
OBJ_EVENT(イベント) を消すもしくは、非表示にすれば発生しません。
もう、謎すぎます。
推測では、MQL4のバグかなと。
メジャーなオブジェクトではないので、バグ報告もあがらないし、開発者も気づいていない可能性がありますね。
当然、MT4は最新を使っております。
![](https://i.gyazo.com/86509e2c1c618f0be5d248d76c744bb4.png)
まとめ
- OBJ_EVENTオブジェクトでは、「OBJPROP_SELECTED」プロパティを設定しない方が安全。
では、まただお。