ObjectsDeleteAll

Elimina todos los objetos del tipo especificado del gráfico especificado (subventana del gráfico especificada).

int  ObjectsDeleteAll(
   long  chart_id,           // identificador del gráfico
   int   sub_window=-1,      // índice de ventana
   int   type=-1             // tipo del objeto a eliminar
   );

Elimina todos los objetos del tipo especificado en la subventana del gráfico según el prefijo del nombre.

int  ObjectsDeleteAll(
   long           chart_id,  // identificador del gráfico
   const string     prefix,  // prefijo del nombre del objeto
   int       sub_window=-1,  // índice de la ventana
   int      object_type=-1   // tipo del objeto a eliminar
   );

Parámetros

chart_id

[in]  Identificador del gráfico. 0 significa el gráfico actual.

prefix

[in]  Prefijo para eliminar todos los objetos cuyos nombres empiezan con este conjunto de caracteres. Se puede indicar el perfijo como 'name' o 'name*' — ambas opciones funcionan igualmente. Si se indica la línea vacía como prefijo, se eliminarán los objetos con cualquier nombre.

sub_window=-1

[in]  Número de subventana del gráfico. 0 significa la ventana principal, -1 significa todas las subventanas del gráfico, incluyendo la ventana principal.

type=-1

[in]  Tipo del objeto. Su valor puede ser uno de los valores de la enumeración ENUM_OBJECT. -1 significa todos los tipos.

Valor devuelto

Devuelve el número de objetos eliminados. Para la información más detallada sobre el error hay que llamar a la función GetLastError().

Nota

La función usa una llamada sincrónica, esto significa que la función espera a la ejecución de todos los comandos que han sido ubicados en la cola del gráfico antes de su llamada, y por eso puede consumir un tiempo considerable. Hay que tener esta circunstancia en cuenta al trabajar con multitud de objetos en el gráfico.

 

Ejemplo:

#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,  // Remove all arrows
   REMOVE_MODE_AUTOTRADE      // Remove all autotrade arrows
  };
 
input ENUM_REMOVE_MODE  InpRemoveMethod = REMOVE_MODE_TRADE_ARROWS;  /*Remove Method*/ // O bien se eliminan todas las flechas, o solo las de comercio automático
 
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- identificador del gráfico y número de objetos eliminados
   long chart_id=ChartID();
   int  count=0;
   
   ResetLastError();
//--- si se ha elegido eliminar todos los objetos de flecha
//--- eliminamos todos los objetos de los tipos OBJ_ARROW_BUY y OBJ_ARROW_SELL, borrando así todos los iconos de transacciones de comercio automático,
//--- eliminando también otros objetos del mismo tipo presentes en el gráfico
   if(InpRemoveMethod==REMOVE_MODE_TRADE_ARROWS)
     {
      count+=ObjectsDeleteAll(chart_id, -1OBJ_ARROW_BUY);
      count+=ObjectsDeleteAll(chart_id, -1OBJ_ARROW_SELL);
     }
     
//--- si se ha elegido eliminar solo los iconos de las transacciones de comercio automático
//--- eliminamos todos los objetos que contengan en su nombre la subcadena "autotrade",
//--- eliminando todos los iconos de transacciones de comercio automático y dejando los demás objetos de flecha
   else
     {
      count=ObjectsDeleteAll(chart_id"autotrade");
     }
 
//--- si se produce algún error al eliminar los objetos gráficos, lo notificaremos y finalizaremos el trabajo
   if(GetLastError()!=ERR_SUCCESS)
     {
      PrintFormat("ObjectsDeleteAll() failed. Error %d. count=%d"GetLastError(), count);
      return;
     }
     
//--- actualizamos el gráfico para reflejar directamente los cambios
   ChartRedraw(chart_id);
   
//--- notificamos en el diario el número de objetos de flecha eliminados
   string type=(InpRemoveMethod==REMOVE_MODE_TRADE_ARROWS ? "OBJ_ARROW_BUY and OBJ_ARROW_SELL" : "with prefix \"autotrade\"");
   PrintFormat("%d objects %s removed"counttype);
   /*
   resultado para InpRemoveMethod = REMOVE_MODE_TRADE_ARROWS:
   116 objects OBJ_ARROW_BUY and OBJ_ARROW_SELL removed
   
   resultado para InpRemoveMethod = REMOVE_MODE_AUTOTRADE:
   131 objects with prefix "autotrade" removed
   */
  }