ObjectsDeleteAll

Remove todos os objetos a partir de um gráfico específico, específica sub-janela do gráfico, do tipo especificado.

int  ObjectsDeleteAll(
   long  chart_id,           // identificador gráfico
   int   sub_window=-1,      // índice janela
   int   type=-1             // tipo objeto
   );

Remove todos os objetos do tipo especificado usando prefixo em nomes de objeto.

int  ObjectsDeleteAll(
   long           chart_id,   // ID do gráfico
   const string     prefix,   // prefixo no nome do objeto
   int       sub_window=-1,   // índice da janela
   int      object_type=-1    // tipo do objeto
   );

Parâmetros

chart_id

[in]  Identificador do gráfico. Significa o gráfico atual.

prefix

[in]  Prefixo no nome dos objetos. Todos os objetos cujos nomes começam com este conjunto de caracteres serão removidos do gráfico. Você pode especificar prefixo como 'name' ou 'name*' - ambas as variantes funcionarão da mesma forma. Se uma string vazia for especificada como o prefixo, os objetos com todos os nomes possíveis serão removidos.

sub_window=-1

[in] Número de sub-janelas do gráfico. 0 significa janela do gráfico principal, -1 significa todas sub-janelas do gráfico, incluindo a janela principal.

type=-1

[in]  Tipo de objeto. O valor pode ser um dos valores do enumerador ENUM_OBJECT. -1 significa todos os tipos.

Valor do Retorno

Retorna o número de objetos excluídos. Para ler mais sobre o erro, chamar GetLastError().

Observação

A função utiliza uma chamada síncrona, isso significa que a função espera a execução de todos os comandos que foram colocados na fila do gráfico antes de sua chamada, e por isso este recurso pode consumir muito tempo. Deve ter isso em mente, se você estiver trabalhando com um grande número de objetos no gráfico.

 

Exemplo:

#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*/ // Remover todas as setas ou somente as setas de autotrading
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- identificador do gráfico e quantidade de objetos removidos
   long chart_id=ChartID();
   int  count=0;
   
   ResetLastError();
//--- se for escolhida a remoção de todos os objetos do tipo seta
//--- remove todos os objetos dos tipos OBJ_ARROW_BUY e OBJ_ARROW_SELL, removendo assim todos os ícones de operações de autotrading,
//--- também removendo quaisquer outros objetos do mesmo tipo que existirem no gráfico
   if(InpRemoveMethod==REMOVE_MODE_TRADE_ARROWS)
     {
      count+=ObjectsDeleteAll(chart_id, -1OBJ_ARROW_BUY);
      count+=ObjectsDeleteAll(chart_id, -1OBJ_ARROW_SELL);
     }
     
//--- se for escolhida a remoção apenas dos ícones de operações de autotrading
//--- remove todos os objetos que contêm no nome a substring "autotrade",
//--- removendo todos os ícones de autotrading e preservando os demais objetos do tipo seta
   else
     {
      count=ObjectsDeleteAll(chart_id"autotrade");
     }
 
//--- se ocorrer um erro durante a remoção dos objetos gráficos, informa o erro e encerra a execução
   if(GetLastError()!=ERR_SUCCESS)
     {
      PrintFormat("ObjectsDeleteAll() failed. Error %d. count=%d"GetLastError(), count);
      return;
     }
     
//--- atualiza o gráfico para exibir imediatamente as alterações
   ChartRedraw(chart_id);
   
//--- registra no log a quantidade de objetos de seta removidos
   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
   */
  }