ObjectName

Devuelve el nombre del objeto correspondiente en el gráfico especificado (subventana del gráfico especificada) del tipo especificado.

string  ObjectName(
   long  chart_id,           // identificador del gráfico
   int   pos,                // número en la lista de objetos
   int   sub_window=-1,      // número de ventana
   int   type=-1             // tipo de objeto
   );

Parámetros

chart_id

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

pos

[in]  Número ordinal del objeto de acuerdo con el filtro especificado según el número de subventana y tipo.

nwin=-1

[in]  Número de subventana del gráfico. 0 significa la ventana principal, -1 significa todas las subventanas del gráfico, incluyendo la ventana principal.

type=-1

[in]  Tipo del objeto. Su valor puede ser uno de los valores de la enumeración ENUM_OBJECT. -1 significa todos los tipos.

Valor devuelto

Nombre del objeto en caso del éxito.

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.

Al renombrar un objeto gráfico, se generan al mismo tiempo dos eventos que pueden ser procesados en el Asesor Experto o el indicador usando la función OnChartEvent():

  • evento de eliminación del objeto con el nombre anterior;
  • evento de creación del objeto gráfico con el nombre nuevo.

 

Ejemplo:

#property copyright "Copyright 2025, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- identificador del gráfico
   long chart_id=ChartID();
   
//--- obtenemos el número de subventanas del gráfico junto con la ventana principal
   long wnd=0;
   ResetLastError();
   if(!ChartGetInteger(chart_idCHART_WINDOWS_TOTAL0wnd))
     {
      Print("ChartGetInteger() failed. Error "GetLastError());
      return;
     }
   
//--- en un ciclo por el número de subventanas del gráfico, incluida la ventana principal
   for(int sub_wnd=0sub_wnd<(int)wndsub_wnd++)
     {
      //--- mostramos en el diario el encabezado del gráfico
      string wnd_name=(sub_wnd==0 ? "Main window:" : StringFormat("Subwindow %d:"sub_wnd));
      Print(wnd_name);
      
      //--- obtenemos el número de objetos gráficos en la subventana actual
      //--- y en un ciclo que itera todos los objetos de la subventana, imprimimos el nombre de cada uno
      int objects=ObjectsTotal(chart_idsub_wnd);
      for(int obj_index=0obj_index<objectsobj_index++)
        {
         //--- nombre del objeto actual en el ciclo
         string obj_name=ObjectName(chart_idobj_indexsub_wnd);
         
         //--- si se trata de una etiqueta de transacción (comercio automático), el nombre de este objeto no se mostrará en el diario
         if(sub_wnd==0 && StringFind(obj_name"autotrade")==0)
            continue;
         
         PrintFormat("  [%d] Graphic object name: \"%s\""obj_indexobj_name);
        }
     }
   /*
   resultado para la ventana principal con dos subventanas,
   donde la ventana principal contiene dos objetos gráficos y etiquetas de transacciones (omitibles),
   y cada subventana del gráfico contiene dos objetos gráficos:
   Main window:
     [0Graphic object name"M30 Fibo 29182"
     [1Graphic object name"M30 Vertical Line 13600"
   Subwindow 1:
     [0Graphic object name"M30 Cycle Lines 63004"
     [1Graphic object name"M30 Trendline 40731"
   Subwindow 2:
     [0Graphic object name"M30 Equidistant Channel 58930"
     [1Graphic object name"M30 Rectangle 5636"
   */
  }