ObjectGetInteger

Devuelve el valor de la correspondiente propiedad del objeto. La propiedad del objeto debe ser de los tipos datetime, int, color, bool o char. Existen 2 variantes de la función.

1 Devuelve el valor de la propiedad directamente.

long  ObjectGetInteger(
   long                             chart_id,          // identificador del gráfico
   string                           name,              // nombre del objeto
   ENUM_OBJECT_PROPERTY_INTEGER     prop_id,           // identificador de la propiedad
   int                              prop_modifier=0    // modificador de la propiedad, si hace falta
   );

2. Devuelve true o false dependiendo del éxito de ejecución de la función. En caso de éxito el valor de la propiedad se coloca en una variable receptora que se pasa por referencia por el último parámetro.

bool  ObjectGetInteger(
   long                             chart_id,          // identificador del gráfico
   string                           name,              // nombre del objeto
   ENUM_OBJECT_PROPERTY_INTEGER     prop_id,           // identificador de la propiedad
   int                              prop_modifier,     // modificador de la propiedad
   long&                            long_var           // aquí recibimos el valor de la propiedad
   );

Parámetros

chart_id

[in]  Identificador del gráfico. 0 significa el gráfico actual.

name

[in]  Nombre del objeto.

prop_id

[in]  Identificador de la propiedad del objeto. Su valor puede ser uno de los valores de la enumeración ENUM_OBJECT_PROPERTY_INTEGER.

prop_modifier

[in]  Modificador de la propiedad especificada. Para la primera opción el valor del modificador es igual a 0 por defecto. La mayoría de las propiedades no requiere el modificador. Significa el número del nivel en las herramientas de Fibonacci y en el objeto gráfico Tridente de Andrews. La numeración se empieza desde cero.

long_var

[out]  Variable del tipo long que recibe el valor de la propiedad requerida.

Valor devuelto

Valor del tipo long para la primera opción de la llamada.

Para la segunda variante devuelve true, si dicha propiedad se mantiene y su valor ha sido colocado en la variable long_var, de lo contrario devuelve false. Para la información más detallada sobre el error hay que llamar a la función GetLastError().

Nota

La función usa una llamada sincrónica, esto significa que la función espera a la ejecución de todos los comandos que han sido ubicados en la cola del gráfico antes de su llamada, y por eso puede consumir un tiempo considerable. Hay que tener esta circunstancia en cuenta al trabajar con multitud de objetos en el gráfico.

 

Ejemplo:

#property copyright "Copyright 2025, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
 
#define   OBJ_NAME   "TestObjectGetInteger"  // Nombre del objeto
 
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- identificador del gráfico actual
   long chart_id=ChartID();
 
//--- creamos un objeto gráfico "Línea Vertical" en la hora actual conocida del servidor
   if(!ObjectCreate(chart_idOBJ_NAMEOBJ_VLINE0TimeCurrent(), 0))
     {
      Print("ObjectCreate() failed. Error "GetLastError());
      return;
     }
//--- actualizamos el gráfico para reflejar directamente los cambios
   ChartRedraw(chart_id);
   
//--- obtenemos la hora de creación del objeto
   long long_var=0;
   if(!ObjectGetInteger(chart_idOBJ_NAMEOBJPROP_CREATETIME0long_var))
     {
      Print("ObjectGetInteger() failed. Error "GetLastError());
      return;
     }
//--- representación de cadena de la hora de creación del objeto
   string create_time=TimeToString((datetime)long_varTIME_DATE|TIME_MINUTES|TIME_SECONDS);
   
//--- obtenemos la hora anotada en el objeto
   if(!ObjectGetInteger(chart_idOBJ_NAMEOBJPROP_TIME0long_var))
     {
      Print("ObjectGetInteger() failed. Error "GetLastError());
      return;
     }
//--- representación de cadena de la hora de colocación del objeto
   string obj_time=TimeToString((datetime)long_varTIME_DATE|TIME_MINUTES|TIME_SECONDS);
   
//--- obtenemos el tipo del objeto
   ENUM_OBJECT object_type=(ENUM_OBJECT)ObjectGetInteger(chart_idOBJ_NAMEOBJPROP_TYPE);
   
//--- imprimimos en el diario el tipo de objeto, su hora de creación y la hora en el gráfico en el que se encuentra el objeto gráfico
   PrintFormat("%s object created at %s at chart point with time %s",EnumToString(object_type), create_timeobj_time);
   
//--- esperamos dos segundos y eliminamos el objeto creado
   Sleep(2000);
   ObjectDelete(chart_idOBJ_NAME);
   ChartRedraw(chart_id);
   /*
  resultado:
   OBJ_VLINE object created at 2025.02.01 12:15:37 at chart point with time 2025.01.31 23:54:59
   */
  }