ObjectsDeleteAll

Löscht alle Objekte des angegebenen Typs im angegebenen Chart, angegebenen Unterfenster des angegebenen Charts.

int  ObjectsDeleteAll(
   long  chart_id,           // Identifikator des Charts 
   int   sub_window=-1,      // Index des Fensters
   int   type=-1             // Typ des Objekts für Entfernung 
   );

Löscht alle Objekte des angegebenen Typs mit dem angegebenen Präfix im Objektnamen im Unterfenster des Charts.

int  ObjectsDeleteAll(
   long           chart_id,   // Chart ID
   const string     prefix,   // Präfix im Objektnamen
   int       sub_window=-1,   // Fensterindex
   int      object_type=-1    // Objektyp
   );

Parameter

chart_id

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

prefix

[in]  Das Präfix in der Objektenamen die Sie löschen möchten. Das Präfix kann als 'name' oder 'name*' angegeben werden - beide Optionen sind gleich. Wenn das Präfix ist ein leerer String, werden alle Objekte mit einem beliebigen Namen gelöscht werden.

sub_window=-1

[in]  Nummer des Subfensters des Charts.  0 bedeutet das Hauptfenster 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 all Typen.

Rückgabewert

Gibt die Anzahl der entfernten Objekte zurück. Für die Erhaltung der weiteren Information über den Fehler muss die Funktion GetLastError() aufgerufen werden.

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.

 

Beispiel:

#property copyright "Copyright 2025, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
 
#property script_show_inputs
 
enum ENUM_REMOVE_MODE
  {
   REMOVE_MODE_TRADE_ARROWS// Alle Pfeile entfernen
   REMOVE_MODE_AUTOTRADE      // Alle Autotrade-Pfeile entfernen
  };
 
input ENUM_REMOVE_MODE  InpRemoveMethod = REMOVE_MODE_TRADE_ARROWS;  /*Methode entfernen*/ // Entweder alle Pfeile oder nur die für den automatischen Handel entfernen
 
//+------------------------------------------------------------------+
//| Skript Programm Start Funktion                                   |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- Chart-ID und Anzahl der entfernten Objekte
   long chart_id=ChartID();
   int  count=0;
   
   ResetLastError();
//--- wenn das Löschen aller Pfeilobjekte ausgewählt ist,
//--- werden alle Objekte vom Typ OBJ_ARROW_BUY und OBJ_ARROW_SELL gelöscht, wodurch alle Symbole für automatische Handelsgeschäfte gelöscht werden,
//--- wie auch andere Objekte desselben Typs, die auf dem Chart vorhanden sind.
   if(InpRemoveMethod==REMOVE_MODE_TRADE_ARROWS)
     {
      count+=ObjectsDeleteAll(chart_id, -1OBJ_ARROW_BUY);
      count+=ObjectsDeleteAll(chart_id, -1OBJ_ARROW_SELL);
     }
     
//--- wenn Sie nur die Symbole für automatische Handelsgeschäfte entfernen wollen
//--- löschen Sie alle Objekte, deren Name die Teilzeichenfolge "autotrade" enthält,
//--- so entfernen Sie alle Symbole für automatische Handelsgeschäfte und lassen andere Pfeilobjekte stehen.
   else
     {
      count=ObjectsDeleteAll(chart_id"autotrade");
     }
 
//--- Wenn beim Löschen von grafischen Objekten ein Fehler aufgetreten ist, soll er gemeldet und der Vorgang beendet werden.
   if(GetLastError()!=ERR_SUCCESS)
     {
      PrintFormat("ObjectsDeleteAll() fehlgeschlagen. Error %d. count=%d"GetLastError(), count);
      return;
     }
     
//--- Aktualisieren des Charts, um die Änderungen sofort widerzuspiegeln
   ChartRedraw(chart_id);
   
//--- Legen Sie die Anzahl der entfernten Pfeilobjekte im Journal fest
   string type=(InpRemoveMethod==REMOVE_MODE_TRADE_ARROWS ? "OBJ_ARROW_BUY and OBJ_ARROW_SELL" : "with prefix \"autotrade\"");
   PrintFormat("%d Objekte %s entfernt"counttype);
   /*
   Ergebnis für InpRemoveMethod = REMOVE_MODE_TRADE_ARROWS:
   116 Objekte OBJ_ARROW_BUY und OBJ_ARROW_SELL entfernt
   
   Ergebnis für InpRemoveMethod = REMOVE_MODE_AUTOTRADE:
   131 Objekte mit Präfix "autotrade" entfernt
   */
  }