ObjectName

A função retorna o nome do objeto correspondente no gráfico determinado, na sub-janela específica, de tipo específico.

string  ObjectName(
   long  chart_id,           // identificador gráfico
   int   pos,                // número da lista de objetos
   int   sub_window=-1,      // índice janela
   int   type=-1             // tipo objeto
   );

Parâmetros

chart_id

[in]  Identificador do gráfico. Significa o gráfico atual.

pos

[in]  Número ordinal do objeto de acordo com o filtro específico pelo número e tipo de sub-janela.

sub_window=-1

[in]  Número de sub-janela do gráfico. 0 significa janela do gráfico principal, -1 significa todas sub-janelas do gráfico, incluindo a janela principal.

type=-1

[in]  Tipo de objeto. O valor pode ser um dos valores do enumerador ENUM_OBJECT. -1 significa todos os tipos.

Valor do Retorno

Nome do objeto é retornado em caso de sucesso.

Observação

A função utiliza uma chamada síncrona, isso significa que a função espera a execução de todos os comandos que foram colocados na fila do gráfico antes de sua chamada, e por isso este recurso pode consumir muito tempo. Deve ter isso em mente, se você estiver trabalhando com um grande número de objetos no gráfico.

Quando um objeto é renomeado, dois eventos são formados simultaneamente. Estes eventos podem ser manipulados em um Expert Advisor ou o indicador pela função OnChartEvent():

  • um evento de exclusão de um objeto com o nome antigo;
  • um evento de criação de um objeto com um novo nome.

 

Exemplo:

#property copyright "Copyright 2025, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- identificador do gráfico
   long chart_id=ChartID();
   
//--- obtém o número de subjanelas do gráfico juntamente com a janela principal
   long wnd=0;
   ResetLastError();
   if(!ChartGetInteger(chart_idCHART_WINDOWS_TOTAL0wnd))
     {
      Print("ChartGetInteger() failed. Error "GetLastError());
      return;
     }
   
//--- em laço pelo número de subjanelas do gráfico, incluindo a janela principal
   for(int sub_wnd=0sub_wnd<(int)wndsub_wnd++)
     {
      //--- exibe no log o título do gráfico
      string wnd_name=(sub_wnd==0 ? "Main window:" : StringFormat("Subwindow %d:"sub_wnd));
      Print(wnd_name);
      
      //--- obtém a quantidade de objetos gráficos na subjanela atual
      //--- e em laço por todos os objetos da subjanela imprime o nome de cada um deles
      int objects=ObjectsTotal(chart_idsub_wnd);
      for(int obj_index=0obj_index<objectsobj_index++)
        {
         //--- nome do objeto atual no laço
         string obj_name=ObjectName(chart_idobj_indexsub_wnd);
         
         //--- se for uma marca de trade (autotrade), o nome desse objeto não é exibido no log
         if(sub_wnd==0 && StringFind(obj_name"autotrade")==0)
            continue;
         
         PrintFormat("  [%d] Graphic object name: \"%s\""obj_indexobj_name);
        }
     }
   /*
   resultado para a janela principal com duas subjanelas,
   onde na janela principal há dois objetos gráficos e marcas de trade (que são ignoradas),
   e em cada subjanela do gráfico foram construídos dois 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"
   */
  }