ObjectName

Gibt den Namen des entsprechenden Objekts im angegebenen Chart, angegebenen Subfenster des angegebenen Chart des angegebenen  Typs zurück.

string  ObjectName(
   long  chart_id,           // Identifikator des Charts 
   int   pos,                // Nummer in der Liste der Objekte 
   int   sub_window=-1,      // Nummer des Fensters
   int   type=-1             // Typ des Objekts
   );

Parameter

chart_id

[in]  Identifikator des Charts. 0 bedeutet den laufenden Chart.

pos

[in]  Ordnungsnummer des Objekts laut dem angegebenen Filter nach Nummer des Subfensters und Typ.

sub_window=-1

[in]  Nummer des Subfensters des Charts, -1 bedeutet alle Subfenster des Charts einschliesslich Hauptfenster.

type=-1

[in]  Typ des Objekts. Wert kann einer der Enumerationswerte ENUM_OBJECT sein. -1 bedeutet alle Typen.

Rückgabewert

Name des Objekts im Erfolgsfall.

Hinweis

Die Funktion verwendet einen synchronen Aufruf, d.h. dass die Funktion auf die Ausführung aller Befehle wartet, die vor deren Aufruf zur Warteschlange des Charts hinzugefügt wurden, deswegen kann die Funktion viel Zeit in Anspruch nehmen. Dies muss man beachten, wenn man mit vielen Objekten im Chart arbeitet.

Bei Umbenennung des graphischen Objekts werden gleichzeitig zwei Ereignisse gebildet, die im Expert oder im Anzeiger durch die Funktion OnChartEvent() verarbeitet werden können:

  • Ereigniss der Entfernung des Objekts mit dem alten Namen;
  • Ereignis der Erzeugung des graphischen Objekts mit dem neuen Namen.

 

Beispiel:

#property copyright "Copyright 2025, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Skript Programm Start Funktion                                   |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- Chart-ID
   long chart_id=ChartID();
   
//--- Anzahl der Chart-Unterfenster zusammen mit dem Hauptfenster abrufen
   long wnd=0;
   ResetLastError();
   if(!ChartGetInteger(chart_idCHART_WINDOWS_TOTAL0wnd))
     {
      Print("ChartGetInteger() failed. Error "GetLastError());
      return;
     }
   
//--- in einer Schleife durch die Anzahl der Chart-Unterfenster, einschließlich des Hauptfensters
   for(int sub_wnd=0sub_wnd<(int)wndsub_wnd++)
     {
      //--- Anzeige der Chart-Kopf im Journal
      string wnd_name=(sub_wnd==0 ? "Main window:" : StringFormat("Subwindow %d:"sub_wnd));
      Print(wnd_name);
      
      //--- Anzahl der grafischen Objekte im aktuellen Unterfenster abrufen
      //--- und Namen jedes Objekts in einer Schleife durch alle Unterfensterobjekte ausgeben
      int objects=ObjectsTotal(chart_idsub_wnd);
      for(int obj_index=0obj_index<objectsobj_index++)
        {
         //--- aktueller Objektname in einer Schleife
         string obj_name=ObjectName(chart_idobj_indexsub_wnd);
         
         //--- wenn es sich um ein Deal-Kennzeichen (Auto-Trading) handelt, wird der Name dieses Objekts nicht im Journal angezeigt
         if(sub_wnd==0 && StringFind(obj_name"autotrade")==0)
            continue;
         
         PrintFormat("  [%d] Graphic object name: \"%s\""obj_indexobj_name);
        }
     }
   /*
   Ergebnis für das Hauptfenster mit zwei Unterfenstern,
   wobei das Hauptfenster zwei grafische Objekte und Deal-Labels (übersprungen) enthält
   und in jedem Chart-Unterfenster zwei grafische Objekte konstruiert werden:
   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"
   */
  }