水平線の表示・非表示をするには!

サンドイッチマンが聖火リレーに出れるなら、自分も出れるはずと、オファーを心待ちにしているセレブパンダだお。(サンドイッチマンさんのこと尊敬してます。好きです)

セレブのパレットインジで引いた水平線を一時的に非表示にしたいと思ってます。

今回は、水平線を削除するのではなく、一時的に非表示にする方法を説明します。

こんな方におすすめ
  • オブジェクトの非表示の方法を知りたい。
  • MQLの使い方を知りたい。

サンプルはボタンを押した際に、水平線を表示・非表示にするサンプルです。

OnChartEventに記述すると、ボタンを押したかどうかは判断できるます。

サンプル

void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
{

    string btnHline = "hlineBtn";
    string objHline = "hline01";
    if(sparam == btnHline) {

        bool selected = ObjectGetInteger(0,btnHline,OBJPROP_STATE);
        if (selected){
            int total = ObjectsTotal(OBJ_HLINE);
            for(int i = total-1; i >= 0; i--){
                string name = ObjectName(0,i,0,OBJ_HLINE);
                if(StringFind(name, objHline, 0) != -1 ){
                    ObjectSetInteger(0,name,OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
                }
            }
        } else {
            int total = ObjectsTotal(OBJ_HLINE);
            for(int i = total-1; i >= 0; i--){
                string name = ObjectName(0,i,0,OBJ_HLINE);
                if(StringFind(name, objHline, 0) != -1 ){
                    ObjectSetInteger(0,name,OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS);
                }
            }                
        }
    }
}

ポイントはObjectSetIntegerを使い、表示する時間足を指定しているところです。

ObjectSetInteger(0,name,OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);

OBJ_ALL_PERIODSは全足に対して表示する指定です。

ObjectSetInteger(0,name,OBJPROP_TIMEFRAMES,OBJ_NO_PERIODS);

OBJ_NO_PERIODSは全足に対して表示しない指定です。

たった、これだけで、表示・非表示ができてしまいます。

では、まただお。

Twitterでフォローしよう

おすすめの記事