ObjectName

La funzione restituisce il nome dell'oggetto corrispondente nel grafico specificato, nella sottofinestra specificata, del tipo specificato.

string  ObjectName(
   long  chart_id,           // identificatore del grafico
   int   pos,                // numero in lista, degli oggetti
   int   sub_window=-1,      // indice finestra
   int   type=-1             // tipo di oggetto
   );

Parametri

chart_id

[in] Identificatore del Grafico. 0 significa il grafico corrente.

pos

[in] numero ordinale dell'oggetto in base al filtro specificato dal numero e dal tipo della finestra secondaria.

sub_window=-1

[in] Numero di sottofinestra grafico. 0 significa la finestra grafico principale, -1 significa tutte le sotto-finestre del grafico, compresa la finestra principale.

type=-1

[in] Tipo dell' oggetto. Il valore può essere uno dei valori dell'enumerazione ENUM_OBJECT. -1 means all types.

Valore restituito

Il nome dell'oggetto viene restituito in caso di successo.

Nota

La funzione utilizza una chiamata sincrona, il che significa che la funzione attende l'esecuzione di tutti i comandi che sono stati accodati per questo chart prima della sua chiamata, per cui questa funzione può richiedere molto tempo. Questa funzione deve essere presa in considerazione quando si lavora con un gran numero di oggetti su un chart.

Quando un oggetto viene rinominato, due eventi si formano simultaneamente. Questi eventi possono essere gestiti in un Expert Advisor o indicatore della funzione OnChartEvent():

  • un evento di eliminazione di un oggetto con il vecchio nome;
  • un evento di creazione di un oggetto con un nuovo nome.

 

Esempio:

#property copyright "Copyright 2025, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- ID del grafico
   long chart_id=ChartID();
   
//--- ottenere il numero di sottofinestre del grafico insieme alla finestra principale
   long wnd=0;
   ResetLastError();
   if(!ChartGetInteger(chart_idCHART_WINDOWS_TOTAL0wnd))
     {
      Print("ChartGetInteger() failed. Error "GetLastError());
      return;
     }
   
//--- in un ciclo in base al numero di sottofinestre del grafico, inclusa la finestra principale
   for(int sub_wnd=0sub_wnd<(int)wndsub_wnd++)
     {
      //--- visualizzare l'intestazione del grafico nel diario
      string wnd_name=(sub_wnd==0 ? "Main window:" : StringFormat("Subwindow %d:"sub_wnd));
      Print(wnd_name);
      
      //--- ottenere il numero di oggetti grafici nella sottofinestra corrente
      //--- e restituisci il nome di ciascuno di essi in un ciclo attraverso tutti gli oggetti della sottofinestra
      int objects=ObjectsTotal(chart_idsub_wnd);
      for(int obj_index=0obj_index<objectsobj_index++)
        {
         //--- nome dell'oggetto corrente in un ciclo
         string obj_name=ObjectName(chart_idobj_indexsub_wnd);
         
         //--- se si tratta di un'etichetta di transazione (trading automatico), il nome di questo oggetto non viene visualizzato nel diario
         if(sub_wnd==0 && StringFind(obj_name"autotrade")==0)
            continue;
         
         PrintFormat("  [%d] Graphic object name: \"%s\""obj_indexobj_name);
        }
     }
   /*
   risultato per la finestra principale con due sottofinestre,
   dove la finestra principale contiene due oggetti grafici ed etichette delle operazioni (saltate),
   e in ogni sottofinestra del grafico vengono costruiti due oggetti grafici:
   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"
   */
  }