【MQL4】OBJ_EVENTオブジェクトでMT4がフリーズ!

Yahooニュースで、あなたへのおすすめニュースに「竹内&三吉、松嶋&反町、トシちゃん・・・芸能人「高級車デート」現場が出てくることに、全く共感できないセレブパンダだお。(芸能人に興味ないのでニュースはほぼみないのですが・・・)

今日は、かなり長い間、解決できずに困ったことについて説明します。

MQL4のオブジェクトにOBJ_EVENT(イベント)というオブジェクトがあります。

何が困ったかというと、このオブジェクトを表示状態にすると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は最新を使っております。

まとめ
  • OBJ_EVENTオブジェクトでは、「OBJPROP_SELECTED」プロパティを設定しない方が安全。

では、まただお。

Twitterでフォローしよう

おすすめの記事