【MQL4】オブジェクトは削除せずに非表示にできる

オブジェクトの状態を維持しておきたい時に活躍

何らかの情報をチャートに表示するためにはオブジェクトを使います。

オブジェクトは物体の意味ですね。

水平線とか四角形とかラベルとかがオブジェクトです。

チャートに何かをペタっと貼り付けられるものは全部オブジェクトと思って良いでしょう。

さて、そんなオブジェクトですが、実は時間足ごとに表示、非表示を切り替えられることをご存知でしょうか?

水平線を右クリックしてプロパティを選択し、表示選択タブを開いてみてください。

オブジェクトの表示設定

これが各時間足でのオブジェクトの表示、非表示の切替え画面です。

チェックした時間足のみに表示させられるんですね。

デフォルトは全ての時間足です。

さて、ここで問題です。

「すべての時間足に表示」のチェックを外し、さらに各時間足のチェックもしなければ、そのオブジェクトはどの時間足でも見えなくなるでしょうか?

正解はNOです。

無チェックの場合、「すべての時間足に表示」にチェックが入っているとみなされてしまいます。

「な~んだ。いずれかの時間足には表示しなきゃいけないのか。使えね~。」

いえいえ。そうではありません。

確かに画面操作ではすべての時間足で”非表示”にすることはできませんが、プログラミングでならそれが可能です。

以下のコードをご覧ください。

string objectName = "Test";
ObjectCreate(0, objectName, OBJ_HLINE, 0, 0, Bid); // 水平線作成
ObjectSetInteger(0, objectName, OBJPROP_TIMEFRAMES, OBJ_NO_PERIODS); // OBJ_NO_PERIODSで全ての時間足で非表示

ObjectSetInteger関数でOBJPROP_TIMEFRAMESプロパティにOBJ_NO_PERIODSを設定しているところがポイントです。

こうすることで、そのオブジェクトを全ての時間足で非表示にすることが可能です。

「非表示にする必要なんてある?要らないなら削除すればいいじゃん?」という声が聞こえてきそうですが、非表示にしたいケースはあります。

例えば、手動でオブジェクトを移動させたり見た目を変えたりしてその状態は保持しておきたいけど一時的に消したい場合です。

「それってどんな時よ?」

「通常は5分足でトレードするけど環境認識のために一時的に上位足に切り替えた。5分足のオブジェクトがあるとごちゃごちゃして邪魔。」みたいな時です。心当たりありませんか?

こういうシーンに上記のコードは活躍してくれます!

ちなみに、特定の時間足(5分足と15分足と30分足)にだけ表示させたい場合はこう書きます。

string objectName = "Test";
ObjectCreate(0, objectName, OBJ_HLINE, 0, 0, Bid);
ObjectSetInteger(0, objectName, OBJPROP_TIMEFRAMES, OBJ_PERIOD_M5 | OBJ_PERIOD_M15 | OBJ_PERIOD_M30);

「|」を足していけば、表示させたい時間足を増やせます。

良かったらご活用ください。

MT4の無料プログラミング講座

LINE公式アカウントを友だち追加して、MT4のプログラミング講座を無料で受けちゃおう!

超豪華プレゼントも盛りだくさん♪

MT4プログラミングを習得すると、オリジナルEA運用、作成代行、商品販売等、複数の収入源を手に入れられるよ。副業に最適だね!

↓↓↓ 詳細はこちら ↓↓↓

アイキャッチ

>

エターナル・パートナーPRO ~MT4裁量トレード支援ツール~ 「MT4は裁量トレーダーに優しくない」そう思ったことありませんか?もっと快適にトレードするための強力な売買ツールが必要だと考え、開発したのが「エターナル・パートナーPRO」です。元々は自分自身のために開発したツールですので、手抜き無しのガチものです。既に200名近い方に手に取っていただき、喜びの声が続々と届いております。ぜひご覧ください!

CTR IMG