ChartIndicatorDelete

Löscht Indikator mit angegebenem Namen aus dem angegebenen Chartfenster.

bool  ChartIndicatorDelete(
   long           chart_id,              // Identifikator des Charts
   int            sub_window             // Nummer des Unterfensters
   const string   indicator_shortname    // Kurzname des Indikators
   );

Parameter

chart_id

[in]  Identifikator des Charts. 0 bedeutet das laufende Chart.

sub_window

[in]  Nummer des Unterfensters des Charts. 0 bedeutet das Hauptfenster des Charts.

const indicator_shortname

[in]  Kurzname des Indikators, der in INDICATOR_SHORTNAME Eigenschaft bei der Funktion IndicatorSetString() angegeben wird. Sie könne den Kurzname bei der Funktion ChartIndicatorName() ermitteln.

Rückgabewert

Gibt true im Erfolgsfall zurück, anderenfalls false. Um die Information über den Fehler zu erhalten, muss man die Funktion GetLastError() aufrufen.

Hinweis

Wenn es mehrere Indikatoren mit der gleichen Kurznamen in das angegebene Unterfenster des Charts gibt, wird das erste entfernt werden.

Wenn an den Werte des gelöschten Indikator andere Indikatoren auf dem gleichen Chart konstruiert sind, werden sie auch gelöscht werden.

Mann sollte nicht Indikators Kurzname mit dem Dateinamen der beim Erstellen des Indikators mit den Funktionen iCustom() und IndicatorCreate() gezeigt wird verwechseln. Wenn der Kurzname des Indikators nicht explizit festgelegt wird, dann bei der Kompilation wird den Namen der Quelldatei des Indikators angegeben.

Entfernung eines Indikators aus dem Chart bedeutet nicht, dass der Berechnungsteil des Indikators auch aus dem Terminalspeicher gelöscht wird. Um Handle des Indikators freizumachen, benutzen Sie die Funktion IndicatorRelease().

Sie sollen richtig einen kurzen Namen des Indikators formen, der in der Eigenschaft INDICATOR_SHORTNAME mit Hilfe der FunktionIndicatorSetString() geschrieben wird. Wir empfehlen, dass der Kurzname die Werte der Eingabeparameter des Indikators enthält, da der Indikator, der aus dem Chart gelöscht wird, in der Funktion ChartIndicatorDelete() beim Kurzname identifiziert wird.

Beispiel für das Löschen eines Indikators, wenn Initialisierung falsch war

//+------------------------------------------------------------------+
//|                                    Demo_ChartIndicatorDelete.mq5 |
//|                         Copyright 2000-2024, MetaQuotes Ltd. |
//|                                              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
//--- input parameters
input int      first_param=1;
input int      second_param=2;
input int      third_param=3;
input bool     wrong_init=true;
//--- indicator buffers
double         HistogramBuffer[];
string         shortname;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
   int res=INIT_SUCCEEDED;
//--- Den Array HistogramBuffer zum Indikatorpuffer binden
   SetIndexBuffer(0,HistogramBuffer,INDICATOR_DATA);
//--- Einen kurzen Namen des Indikators auf Eingabeparameter konstruieren
   shortname=StringFormat("Demo_ChartIndicatorDelete(%d,%d,%d)",
                          first_param,second_param,third_param);
   IndicatorSetString(INDICATOR_SHORTNAME,shortname);
//--- Wenn Zwangsendung des Indikatiors eingegeben ist, dann Wert ungleich Null zurückgeben
   if(wrong_init) res=INIT_FAILED;
   return(res);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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[])
  {
//--- Ausgangsposition für Arbeit im Zyklus
   int start=prev_calculated-1;
   if(start<0) start=0;
//--- Füllen Indikator-Puffer mit Werte
   for(int i=start;i<rates_total;i++)
     {
      HistogramBuffer[i]=close[i];
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
//| Handler von Ereignis Deinit                                      |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   PrintFormat("%s: Code vom Deinitialisierungsgrund=%d",__FUNCTION__,reason);
   if(reason==REASON_INITFAILED)
     {
      PrintFormat("Der Indikator mit dem Kurznamen %s (Datei %s) löscht sich aus dem Chart",shortname,__FILE__);
      int window=ChartWindowFind();
      bool res=ChartIndicatorDelete(0,window,shortname);
      //--- Analysieren wir das Ergebnis des Aufrufs von ChartIndicatorDelete()
      if(!res)
        {
         PrintFormat(Indikator %s konnte nicht aus dem Fenster #%d gelöscht werden. Fehlercode %d",
                     shortname,window,GetLastError());
        }
     }
  }

Sehen Sie auch

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