ObjectGetInteger

Возвращает значение соответствующего свойства объекта. Свойство объекта должно быть типов datetime, int, color, bool или char. Существует 2 варианта функции.

1. Непосредственно возвращает значение свойства.

long  ObjectGetInteger(
   long                             chart_id,           // идентификатор графика
   string                           name,               // имя объекта
   ENUM_OBJECT_PROPERTY_INTEGER     prop_id,            // идентификатор свойства
   int                              prop_modifier=0     // модификатор свойства, если требуется
   );

2. Возвращает true или false в зависимости от успешности выполнения функции.  В случае успеха значение свойства помещается в приемную переменную, передаваемую по ссылке последним параметром.

bool  ObjectGetInteger(
   long                             chart_id,           // идентификатор графика
   string                           name,               // имя объекта
   ENUM_OBJECT_PROPERTY_INTEGER     prop_id,            // идентификатор свойства
   int                              prop_modifier,      // модификатор свойства
   long&                            long_var            // сюда примем значение свойства
   );

Параметры

chart_id

[in]  Идентификатор графика. 0 означает текущий график.

name

[in]  Имя объекта.

prop_id

[in]  Идентификатор свойства объекта. Значение может быть одним из значений перечисления ENUM_OBJECT_PROPERTY_INTEGER.

prop_modifier

[in]  Модификатор указанного свойства. Для первого варианта по умолчанию значение модификатора равно 0. Большинство свойств не требуют модификатора. Означает номер уровня в инструментах Фибоначчи и в графическом объекте Вилы Эндрюса. Нумерация уровней начинается с нуля.

long_var

[out]  Переменная типа long, принимающая  значение запрашиваемого свойства.

Возвращаемое значение

Значение типа long для первого варианта вызова.

Для второго варианта вызова возвращает true, если данное свойство поддерживается и значение было помещено в переменную long_var, иначе возвращает false. Чтобы получить дополнительную информацию об ошибке, необходимо вызвать функцию GetLastError().

Примечание

Функция использует синхронный вызов – это означает, что функция дожидается выполнения всех команд, которые были помещены в очередь графика перед её вызовом, и поэтому данная функция может быть затратной по времени. Нужно иметь это обстоятельство в виду, если ведется работа с большим количеством объектов на графике.

Пример:

#property copyright "Copyright 2025, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
 
#define   OBJ_NAME   "TestObjectGetInteger"  // Имя объекта
 
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- идентификатор текущего графика
   long chart_id=ChartID();
 
//--- создаём графический объект "Вертикальная Линия" на текущем известном времени сервера
   if(!ObjectCreate(chart_idOBJ_NAMEOBJ_VLINE0TimeCurrent(), 0))
     {
      Print("ObjectCreate() failed. Error "GetLastError());
      return;
     }
//--- обновляем график для немедленного отображения изменений
   ChartRedraw(chart_id);
   
//--- получаем время создания объекта
   long long_var=0;
   if(!ObjectGetInteger(chart_idOBJ_NAMEOBJPROP_CREATETIME0long_var))
     {
      Print("ObjectGetInteger() failed. Error "GetLastError());
      return;
     }
//--- строковое представление времени создания объекта
   string create_time=TimeToString((datetime)long_varTIME_DATE|TIME_MINUTES|TIME_SECONDS);
   
//--- получаем время, записанное в объекте
   if(!ObjectGetInteger(chart_idOBJ_NAMEOBJPROP_TIME0long_var))
     {
      Print("ObjectGetInteger() failed. Error "GetLastError());
      return;
     }
//--- строковое представление времени расположения объекта
   string obj_time=TimeToString((datetime)long_varTIME_DATE|TIME_MINUTES|TIME_SECONDS);
   
//--- получаем тип объекта
   ENUM_OBJECT object_type=(ENUM_OBJECT)ObjectGetInteger(chart_idOBJ_NAMEOBJPROP_TYPE);
   
//--- выводим в журнал тип объекта, время его создания и время на графике, на котором расположен графический объект
   PrintFormat("%s object created at %s at chart point with time %s",EnumToString(object_type), create_timeobj_time);
   
//--- подождём две секунды и удалим созданный объект
   Sleep(2000);
   ObjectDelete(chart_idOBJ_NAME);
   ChartRedraw(chart_id);
   /*
   результат:
   OBJ_VLINE object created at 2025.02.01 12:15:37 at chart point with time 2025.01.31 23:54:59
   */
  }