ObjectDelete

Supprime l'objet avec le nom indiqué du graphique indiqué.

bool  ObjectDelete(
   long    chart_id,     // identificateur du graphique
   string  name          // nom de l'objet
   );

Paramètres

chart_id

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

name

[in]  Le nom de l'objet supprimé.

Valeur de Retour

La fonction retourne true si la commande a été ajoutée avec succès dans la queue du graphique spécifié, ou sinon false.

Note

Un appel asynchrone est toujours effectué pour ObjectDelete(), c'est pourquoi la fonction ne retourne que le résultat de l'ajout de la commande dans la queue du graphique. Dans ce cas, true signifie que la commande a été placée dans queue avec succès, mais le rsultat de son exécution est inconnu.

Pour vérifier le résultat de l'exécution de la commande, vous pouvez utiliser la fonction ObjectFind() ou toute autre fonction qui accède aux propriétés de l'objet, telle que ObjectGetXXX. Vous devriez cependant conserver à l'esprit que ce genre de fonctions sont ajoutées à la fin de la queue de ce graphique, et qu'elles attendent le résultat de l'exécution (en raison de l'appel synchrone), et peuvent donc être consommatrices 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();
 
//--- dans une boucle sur tous les objets graphiques du graphique
   int obj_total=ObjectsTotal(chart_id);
   for(int i=obj_total-1i>=0i--)
     {
      //--- saute chaque 2ème objet
      if(i%2==0)
         continue;
      
      //--- récupère le nom de l'objet graphique
      //--- si c'est l'étiquette d'une transaction auto-trade, saute cet objet
      string obj_name=ObjectName(chart_idi);
      if(StringFind(obj_name"autotrade")==0)
         continue;
      
      //--- supprime l'objet graphique du graphique avec chart_id
      ResetLastError();
      if(ObjectDelete(chart_idobj_name))
        {
         PrintFormat("[%d] Graphic object named \"%s\" removed from the chart with ID #%I64d"iobj_namechart_id);
        }
      else
        {
         Print("ObjectDelete() failed. Error "GetLastError());
        }
     }
   /*
   résultat por le graphique où 6 des objets graphiques et des étiquettes de trading auto (sautées) sont placés :
   [659Graphic object named "M30 Rectangle 5636" removed from the chart with ID #128968168951083984
   [657Graphic object named "M30 Trendline 40731" removed from the chart with ID #128968168951083984
   [1Graphic object named "M30 Vertical Line 13600" removed from the chart with ID #128968168951083984
   */
  }