【MQL4定数】オブジェクト可視の定数(時間足)

【辞書】MQLリファレンス

オブジェクト可視の定数(時間足)

オブジェクト可視の定数は、オブジェクト可視を設定するときに使われます。

「5分足では表示する、1時間足では表示しない」というような設定をするための定数です。

主に、ObjectSetInteger関数、ObjectGetInteger関数で使われます。

簡単に関数の説明です。

  • ObjectSetInteger関数:オブジェクトの状態を設定する
  • ObjectGetInteger関数:オブジェクトの状態を取得する

 

それぞれ、OBJPROP_TIMEFRAMESの設定値として、オブジェクト可視の定数が使われます。

 

オブジェクト可視の定数(時間足)

定数説明
EMPTY全ての時間軸チャートに表示しない
OBJ_NO_PERIODS全ての時間軸チャートに表示しない
OBJ_PERIOD_M11分チャートに表示する
OBJ_PERIOD_M55分チャートに表示する
OBJ_PERIOD_M1515分チャートに表示する
OBJ_PERIOD_M3030分チャートに表示する
OBJ_PERIOD_H11時間チャートに表示する
OBJ_PERIOD_H44時間チャートに表示する
OBJ_PERIOD_D11日チャートに表示する
OBJ_PERIOD_W11週間チャートに表示する
OBJ_PERIOD_MN11ヶ月チャートに表示する
OBJ_ALL_PERIODS全てのチャートに表示する

 

オブジェクト可視の定数(時間足)の使い方

主に、ObjectSetInteger関数、ObjectGetInteger関数で使用されます。

それぞれ、OBJPROP_TIMEFRAMESの設定値として、オブジェクト可視の定数が使われます。

上記の定数を入力しましょう。

すると、その定数に対応した時間足が設定されます。

例えば、以下のように使用します。

  //ObjectSetInteger関数
  //オブジェクトの可視を全ての時間足に設定する
   bool objectSetInteger = ObjectSetInteger(ChartID(), "自動売買を作ろう!", OBJPROP_TIMEFRAMES, OBJ_ALL_PERIODS);
 
  //ObjectGetInteger関数
  //オブジェクトの可視設定を取得する
  long objectGetInteger = ObjectGetInteger(ChartID(), "自動売買を作ろう!", OBJPROP_TIMEFRAMES);

 

プログラム例

以下は、水平線オブジェクトを作成し、オブジェクト可視の定数を使って特定の時間足にのみ表示する設定を行うプログラム例です。

//+------------------------------------------------------------------+
//| スクリプトプログラム開始関数                                      |
//+------------------------------------------------------------------+
void OnStart()
{
   string objName = "VisibilityTestLine";
   double price   = Ask;

   //--- 水平線オブジェクトを作成する
   if(!ObjectCreate(0, objName, OBJ_HLINE, 0, 0, price))
   {
      Print("オブジェクト作成失敗: ", GetLastError());
      return;
   }

   //--- オブジェクトの色を設定する
   ObjectSetInteger(0, objName, OBJPROP_COLOR, clrRed);

   //--- オブジェクトの可視設定を行う
   //--- 1時間足と4時間足にのみ表示する(ビット演算で複数指定)
   ObjectSetInteger(0, objName, OBJPROP_TIMEFRAMES, OBJ_PERIOD_H1 | OBJ_PERIOD_H4);

   Print("水平線を作成しました(1時間足・4時間足のみ表示)");

   //--- 現在の可視設定を取得して確認する
   long visibility = ObjectGetInteger(0, objName, OBJPROP_TIMEFRAMES);
   Print("可視設定値: ", visibility);

   //--- 各時間足への表示状態を確認する
   if((visibility & OBJ_PERIOD_M1)  != 0) Print("1分足: 表示");
   if((visibility & OBJ_PERIOD_M5)  != 0) Print("5分足: 表示");
   if((visibility & OBJ_PERIOD_M15) != 0) Print("15分足: 表示");
   if((visibility & OBJ_PERIOD_M30) != 0) Print("30分足: 表示");
   if((visibility & OBJ_PERIOD_H1)  != 0) Print("1時間足: 表示");
   if((visibility & OBJ_PERIOD_H4)  != 0) Print("4時間足: 表示");
   if((visibility & OBJ_PERIOD_D1)  != 0) Print("日足: 表示");
   if((visibility & OBJ_PERIOD_W1)  != 0) Print("週足: 表示");
   if((visibility & OBJ_PERIOD_MN1) != 0) Print("月足: 表示");

   //--- 全ての時間足に表示を変更する
   ObjectSetInteger(0, objName, OBJPROP_TIMEFRAMES, OBJ_ALL_PERIODS);
   Print("全ての時間足に表示するよう変更しました");
}

 

上記のプログラムでは、まず水平線オブジェクトを作成し、OBJ_PERIOD_H1とOBJ_PERIOD_H4をビット演算子「|」で組み合わせて、1時間足と4時間足にのみ表示する設定を行っています。

複数の時間足を指定したい場合は、このようにビット演算子「|」を使って定数を組み合わせます。