ObjectName

Rend le nom de l'objet correspondant au chart indiqué, dans la sous-fenêtre indiquée de chart indiqué, du type indiqué.

string  ObjectName(
   long  chart_id,           // identificateur du graphique
   int   pos,                // numéro dans la liste des objets
   int   sub_window=-1,      // numéro de la fenêtre
   int   type=-1             // type de l'objet
   );

Paramètres

chart_id

[in]  L'identificateur du graphique. 0 signifie le graphique courant.

pos

[in]  Le numéro consécutif de l'objet selon le filtre indiqué selon le numéro de la sous-fenêtre et du type.

sub_window=-1

[in]  Le numéro de la sous-fenêtre du graphique. 0 signifie une fenêtre principale du graphique, -1 signifie tous les sous-fenêtres du graphique, y compris une fenêtre principale.

type=-1

[in]  Le type de l'objet. La valeur peut être une des valeurs de l'énumération ENUM_OBJECT. -1 signifie tous les types.

Valeur de Retour

Le nom de l'objet en cas de succès.

Note

La fonction utilise un appel synchrone, ce qui signifie que la fonction attend la fin de l'exécution de toutes les commandes présentes dans la queue de ce graphique avant cet appel. C'est pourquoi cette fonction peut être consommatrice en terme de temps. Cette caractéristique doit être prise en compte lors de l'utilisation d'un grand nombre d'objets sur un graphique.

Lors du changement de nom d'un objet graphique, deux événements sont générés, qui peuvent être traité dans les experts ou dans les indicateurs avec la fonction OnChartEvent() :

  • l'événement de la suppression de l'objet avec le nom précédent ;
  • l'événement de la création de l'objet graphique avec un nouveau nom.

 

Exemple :

#property copyright "Copyright 2025, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- identifiant du graphique
   long chart_id=ChartID();
   
//--- obtient le nombre de sous-fenêtres du graphique ainsi que la fenêtre principale
   long wnd=0;
   ResetLastError();
   if(!ChartGetInteger(chart_idCHART_WINDOWS_TOTAL0wnd))
     {
      Print("ChartGetInteger() failed. Error "GetLastError());
      return;
     }
   
//--- dans une boucle par nombre de sous-fenêtres de graphique, y compris la fenêtre principale
   for(int sub_wnd=0sub_wnd<(int)wndsub_wnd++)
     {
      //--- affiche l'en-tête du graphique dans le journal
      string wnd_name=(sub_wnd==0 ? "Main window:" : StringFormat("Subwindow %d:"sub_wnd));
      Print(wnd_name);
      
      //--- obtient le nombre d'objets graphiques dans la sous-fenêtre actuelle
      //--- et affiche le nom de chacun d'eux dans une boucle parcourant tous les objets de la sous-fenêtre
      int objects=ObjectsTotal(chart_idsub_wnd);
      for(int obj_index=0obj_index<objectsobj_index++)
        {
         //--- nom de l'objet actuel dans une boucle
         string obj_name=ObjectName(chart_idobj_indexsub_wnd);
         
         //--- si c'est l'étiquette d'une transaction (trading auto), le nom de cet objet n'est pas affiché dans le journal
         if(sub_wnd==0 && StringFind(obj_name"autotrade")==0)
            continue;
         
         PrintFormat("  [%d] Graphic object name: \"%s\""obj_indexobj_name);
        }
     }
   /*
   résultat pour la fenêtre principale avec deux sous-fenêtres,
   où la fenêtre principale contient deux objets graphiques et des étiquettes de transaction (omises),
   et deux objets graphiques sont construits dans chaque sous-fenêtre du graphique :
   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"
   */
  }