Скачать MetaTrader 5

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

Комбинация флагов видимости объекта определяет таймфреймы графика, на которых объект отображаем. Для установки/получения значения свойства OBJPROP_TIMEFRAMES можно использовать функции ObjectSetInteger()/ObjectGetInteger().

Константа

Значение

Описание

OBJ_NO_PERIODS

0

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

OBJ_PERIOD_M1

0x00000001

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

OBJ_PERIOD_M2

0x00000002

Объект рисуется на 2-минутных графиках

OBJ_PERIOD_M3

0x00000004

Объект рисуется на 3-минутных графиках

OBJ_PERIOD_M4

0x00000008

Объект рисуется на 4-минутных графиках

OBJ_PERIOD_M5

0x00000010

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

OBJ_PERIOD_M6

0x00000020

Объект рисуется на 6-минутных графиках

OBJ_PERIOD_M10

0x00000040

Объект рисуется на 10-минутных графиках

OBJ_PERIOD_M12

0x00000080

Объект рисуется на 12-минутных графиках

OBJ_PERIOD_M15

0x00000100

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

OBJ_PERIOD_M20

0x00000200

Объект рисуется на 20-минутных графиках

OBJ_PERIOD_M30

0x00000400

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

OBJ_PERIOD_H1

0x00000800

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

OBJ_PERIOD_H2

0x00001000

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

OBJ_PERIOD_H3

0x00002000

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

OBJ_PERIOD_H4

0x00004000

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

OBJ_PERIOD_H6

0x00008000

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

OBJ_PERIOD_H8

0x00010000

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

OBJ_PERIOD_H12

0x00020000

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

OBJ_PERIOD_D1

0x00040000

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

OBJ_PERIOD_W1

0x00080000

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

OBJ_PERIOD_MN1

0x00100000

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

OBJ_ALL_PERIODS

0x001fffff

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

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

Пример:

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_M10 и PERIOD_H4
      ObjectSetInteger(0,highlevel,OBJPROP_TIMEFRAMES,OBJ_PERIOD_M10|OBJ_PERIOD_H4);
     }
   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_M10 и PERIOD_H4
      ObjectSetInteger(0,lowlevel,OBJPROP_TIMEFRAMES,OBJ_PERIOD_M10|OBJ_PERIOD_H4);
     }
   else Print("Не удалось получить цены Low за последние 2 дня, Error = ",GetLastError());
 
   ChartRedraw(0); // перерисуем график принудительно
  }

Смотри также

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


Обновлено: 2015.12.03