ChartIndicatorDelete

amando
3114
amando  

hallo,


hat wer eine Ahnung, wie ich das hinbekomme ohne das andauernd die Fehlermeldung 4116 erscheint?


      for(int i = (int)ChartGetInteger(0,CHART_WINDOWS_TOTAL) ; i>0; i--)
        {
         string deinitbutton = ChartIndicatorName(0,i,0);

         if(deinitbutton == "RSI("+(string)RSIPeriode+")")
           {
                        int handle =ChartIndicatorGet(0,i,deinitbutton);

            if(!ChartIndicatorDelete(0, i, deinitbutton))
               Print("Failure to delete: ",deinitbutton," Indicator", " Last Error: ",GetLastError());
           }
        }


Carl Schreiber
Moderator
11240
Carl Schreiber  
amando:

hallo,


hat wer eine Ahnung, wie ich das hinbekomme ohne das andauernd die Fehlermeldung 4116 erscheint?

So ähnlich wie im Beispiel der Referenz: https://www.mql5.com/en/docs/chart_operations/chartindicatordelete?

Du brauchst den shortname des Indikators.
Documentation on MQL5: Chart Operations / ChartIndicatorDelete
Documentation on MQL5: Chart Operations / ChartIndicatorDelete
  • www.mql5.com
//|                                    Demo_ChartIndicatorDelete.mq5 | //|                        Copyright 2011, MetaQuotes Software Corp. | //|                                              https://www.mql5.com | //| Custom indicator initialization function                         |                           ...
amando
3114
amando  
Carl Schreiber:

So ähnlich wie im Beispiel der Referenz: https://www.mql5.com/en/docs/chart_operations/chartindicatordelete?

Du brauchst den shortname des Indikators.

Den hab ich ja, der indikator wird auch gelöscht, trotzdem komm5 immer die fehlermeldung

Carl Schreiber
Moderator
11240
Carl Schreiber  

Geh mal mit dem Debugger durch und positioniere als oberste Variable _LastError und beobachte, wann der

ERR_CHART_INDICATOR_NOT_FOUND

4116

Der Indikator kann nicht auf dem angegebenen Chart gefunden werden


auftritt. Es scheint, dass der Indi gesucht wird nachdem er bereits gelöscht wurde.

amando
3114
amando  
Ja das ist mir schon klar, das tut er auch, ich verstehe nur nicht warum er den sucht, weil ich fange das ja in der schleife ab
Carl Schreiber
Moderator
11240
Carl Schreiber  
Vielleicht ist die Reihenfolge verkehrt - es hilft nur testen bzw. debuggen.
amando
3114
amando  

geht eigentlich viel einfacher ;-)

int w = ChartWindowFind(0,"RSI("+(string)RSIPeriode+")");
      ChartIndicatorDelete(0,w,"RSI("+(string)RSIPeriode+")");