ChartIndicatorDelete

Rimuove un indicatore con il nome specificato dalla finestra del grafico specificato.

bool  ChartIndicatorDelete(
   long           chart_id,              // ID del Grafico
   int            sub_window             // numero della sottofinestra
   const string   indicator_shortname    // nome breve dell'indicatore
   );

Parametri

chart_id

[in] ID del Grafico. 0 indica il grafico corrente.

sub_window

[in] Numero di sottofinestra grafico. 0 denota la principale sottofinestra del grafico.

const indicator_shortname

[in] Nome breve dell'indicatore che si trova nella proprietà INDICATOR_SHORTNAME con la funzione IndicatorSetString(). Per ottenere il nome breve di un indicatore utilizzare la funzione ChartIndicatorName().

Valore restituito

Restituisce true in caso di eliminazione di successo dell'indicatore. In caso contrario, restituisce false. Per ottenere i dettagli dell' errore utilizzare la funzione GetLastError().

Nota

Se due indicatori con identici nomi brevi esistono nella sottofinestra del grafico, il primo in riga verrà eliminato.

Se altri indicatori su questo grafico si basano sui valori dell'indicatore che viene eliminato, tali indicatori verranno cancellati.

Non confondere il nome breve indicatore e il nome del file che viene specificato durante la creazione di un indicatore con le funzioni iCustom() ed IndicatorCreate(). Se il nome breve di un indicatore non è impostato in modo esplicito, il nome del file che contiene il codice sorgente dell'indicatore verrà specificato durante la compilazione.

L' eliminazione di un indicatore da un grafico non vuol dire che la sua parte di calcolo sarà cancellata dalla memoria del terminale. Per rilasciare l'handle utilizzare la funzione IndicatorRelease().

Il nome breve dell'indicatore dovrebbe essere formato correttamente. Questo viene scritto nella proprietà INDICATOR_SHORTNAME utilizzando la funzione IndicatorSetString(). E' raccomandato che il nome breve deve contenere i valori di tutti i parametri di input dell'indicatore, poiché l'indicatore eliminato dal grafico dalla funzione ChartIndicatorDelete() è identificato dal nome breve.

Esempio di eliminazione di un indicatore dopo l'inizializzazione non riuscito:

//+--------------------------------------------------------------------------------+
//|                                                  Demo_ChartIndicatorDelete.mq5 |
//|                                      Copyright 2011, MetaQuotes Software Corp. | 
//|                                                           https://www.mql5.com |
//+--------------------------------------------------------------------------------+
#property copyright "Copyright 2000-2024, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots   1
//--- plot Histogram
#property indicator_label1  "Histogram"
#property indicator_type1   DRAW_HISTOGRAM
#property indicator_color1  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- parametri di input
input int      first_param=1;
input int      second_param=2;
input int      third_param=3;
input bool     wrong_init=true;
//--- buffers indicatore
double         HistogramBuffer[];
string         shortname;
//+--------------------------------------------------------------------------------+
//| Funzione di inizializzazione Indicatore Personalizzato                         |
//+--------------------------------------------------------------------------------+
int OnInit()
  {
   int res=INIT_SUCCEEDED;
//--- Collega l'array HistogramBuffer al buffer indicatore
   SetIndexBuffer(0,HistogramBuffer,INDICATOR_DATA);
//--- Costruisce un nome indicatore corto basato sui parametri di input
   shortname=StringFormat("Demo_ChartIndicatorDelete(%d,%d,%d)",
                          first_param,second_param,third_param);
   IndicatorSetString(INDICATOR_SHORTNAME,shortname);
//--- Se viene impostato il completamento forzato di un indicatore, restituisce un valore non-zero
   if(wrong_init) res=INIT_FAILED;
   return(res);
  }
//+--------------------------------------------------------------------------------+
//| Funzione di iterazione indicatore personalizato                                |
//+--------------------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//--- Posizione d'inizio per lavorare in loop
   int start=prev_calculated-1;
   if(start<0) start=0;
//--- Compila il buffer di indicatore con valori
   for(int i=start;i<rates_total;i++)
     {
      HistogramBuffer[i]=close[i];
     }
//--- restituisce il valore di prev_calculated per la prossima chiamata
   return(rates_total);
  }
//+--------------------------------------------------------------------------------+
//| Un handler dell'evento Deinit                                                  |
//+--------------------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   PrintFormat("%s: Codice del motivo della Deinizializzazione=%d",__FUNCTION__,reason);
   if(reason==REASON_INITFAILED)
     {
      PrintFormat("Un indicatore con il nome corto %s (file %s) elimina se stesso dal chart",shortname,__FILE__);
      int window=ChartWindowFind();
      bool res=ChartIndicatorDelete(0,window,shortname);
      //--- Analizza il risultato della chamata di ChartIndicatorDelete()
      if(!res)
        {
         PrintFormat("Fallimento nell'eliminare l'indicatore %s dalla finestra #%d. Codice errore %d",
                     shortname,window,GetLastError());
        }
     }
  }

Vedi anche

ChartIndicatorAdd(), ChartIndicatorName(), ChartIndicatorsTotal(), iCustom(), IndicatorCreate(), IndicatorSetString()