Русский

Справочник MQL4 Константы, перечисления и структуры Константы объектов Видимость объектов

Видимость объектов

Сочетание флагов видимости объекта определяет таймфреймы графика, на которых объект отображаем.

Для установки/получения значения свойства OBJPROP_TIMEFRAMES можно использовать функции ObjectSet()/ObjectGet() или функции ObjectSetInteger()/ObjectGetInteger().

Константа

Значение

Описание

OBJ_NO_PERIODS, EMPTY

-1

Объект не показывается ни на одном таймфрейме

OBJ_PERIOD_M1

0x0001

Объект рисуется только на 1-минутных графиках

OBJ_PERIOD_M5

0x0002

Объект рисуется только на 5-минутных графиках

OBJ_PERIOD_M15

0x0004

Объект рисуется только на 15-минутных графиках

OBJ_PERIOD_M30

0x0008

Объект рисуется только на 30-минутных графиках

OBJ_PERIOD_H1

0x0010

Объект рисуется только на 1-часовых графиках

OBJ_PERIOD_H4

0x0020

Объект рисуется только на 4-часовых графиках

OBJ_PERIOD_D1

0x0040

Объект рисуется только на дневных графиках

OBJ_PERIOD_W1

0x0080

Объект рисуется только на недельных графиках

OBJ_PERIOD_MN1

0x0100

Объект рисуется только на месячных графиках

OBJ_ALL_PERIODS

0x01ff

Объект рисуется на всех таймфреймах

Флаги видимости можно комбинировать с помощью символа "|", например, комбинация флагов OBJ_PERIOD_M15|OBJ_PERIOD_H1 означает, что объект будет видим на 15-минутном и часовом таймфреймах.

Пример:

void OnStart()
  {
//---
   string highlevel="PreviousDayHigh";
   string lowlevel="PreviousDayLow";
   double prevHigh;           // High предыдущего дня
   double prevLow;            // Low предыдущего дня
   double highs[],lows[];     // массивы для получения High и Low
 
//--- сбросим значение последней ошибки
   ResetLastError();
//--- получим 2 последних значения High на дневном таймфрейме
   int highsgot=CopyHigh(Symbol(),PERIOD_D1,0,2,highs);
   if(highsgot>0) // если копирование прошло успешно
     {
      Print("Цены High за последние 2 дня получены успешно");
      prevHigh=highs[0]; // High предыдущего дня
      Print("prevHigh = ",prevHigh);
      if(ObjectFind(0,highlevel)<0) // объект с именем highlevel не найден
        {
         ObjectCreate(0,highlevel,OBJ_HLINE,0,0,0); // создадим объект гор. линия
        }
      //--- зададим ценовой уровень для линии highlevel
      ObjectSetDouble(0,highlevel,OBJPROP_PRICE,0,prevHigh);
      //--- установим видимость только для  PERIOD_M15 и PERIOD_H1
      ObjectSetInteger(0,highlevel,OBJPROP_TIMEFRAMES,OBJ_PERIOD_M15|OBJ_PERIOD_H1);
     }
   else
     {
      Print("Не удалось получить цены High за последние 2 дня, Error = ",GetLastError());
     }
 
//--- сбросим значение последней ошибки
   ResetLastError();
//--- получим 2 последних значения Low на дневном таймфрейме
   int lowsgot=CopyLow(Symbol(),PERIOD_D1,0,2,lows);
   if(lowsgot>0) // если копирование прошло успешно
     {
      Print("Цены Low за последние 2 дня получены успешно");
      prevLow=lows[0]; // Low предыдущего дня
      Print("prevLow = ",prevLow);
      if(ObjectFind(0,lowlevel)<0) // объект с именем lowlevel не найден
        {
         ObjectCreate(0,lowlevel,OBJ_HLINE,0,0,0); // создадим объект гор. линия
        }
      //--- зададим ценовой уровень для линии lowlevel
      ObjectSetDouble(0,lowlevel,OBJPROP_PRICE,0,prevLow);
      //--- установим видимость только для  PERIOD_M15 и PERIOD_H1
      ObjectSetInteger(0,lowlevel,OBJPROP_TIMEFRAMES,OBJ_PERIOD_M15|OBJ_PERIOD_H1);
     }
   else Print("Не удалось получить цены Low за последние 2 дня, Error = ",GetLastError());
 
   ChartRedraw(0); // перерисуем график принудительно
  }

Смотри также

PeriodSeconds, Period, Периоды графиков, Дата и время