Indikator aus Strategietester löschen

 

Guten Tag,

Ich habe eine künstliche Intelligenz programmiert welche etwas anders als ein gewöhnlicher ea funktioniert. Die Werte für die Indikatoren werden nicht aus den den Input variablen genommen sondern werden immer geändert und in Dateien gespeichert. Jetzt habe ich das Problem, das immer wenn ein Indikator geändert wird, ein neuer dazu kommt und der alte bestehen bleibt. Deshalb habe ich versucht den Indikator danach manuell zu löschen. Dies geht aber nur im normalen Metatrader und nicht im Tester. Dort bleiben die Indikatoren einfach stehen. Ich bitte um Hilfe!

int subwindows=ChartGetInteger(0,CHART_WINDOWS_TOTAL);

for(int i=subwindows;i>=0;i--){
   int indicators=ChartIndicatorsTotal(0,i);

   for(int j=indicators-1; j>=0; j--){
      ChartIndicatorDelete(0,i,ChartIndicatorName(0,i,j));
   }
}
        

Der Code ist aus dem Internet aber ich weiß wie er funktioniert und mein eigener funktioniert nach dem selben Prinzip. 

 

Du erzeugst ja jedes mal wenn du den indikator mit anderen werten befüllst ein handle,

das machst du ja normalerweise in der oninit. Nachdem das ja so nicht geht, auch im livetrading nicht hast du nur 2 möglichkeiten

1) den indikator selber im ea berechnen

2) das handle gleich wieder rausschmeissen wenn er die werte berechnet hat, ist auf jeden fall die langsamere

 

Es gibt aber schon IndicatorRelease(), um einen Indikator loszuwerden, und IndicatorCreate(), um einen neuen zu erstellen. Beispiele dazu gibt es in der Referenz.

Könnte halt Zeitintensiv sein.

Dokumentation zu MQL5: Zugang zu Zeitreihen und Indikatoren / IndicatorRelease
Dokumentation zu MQL5: Zugang zu Zeitreihen und Indikatoren / IndicatorRelease
  • www.mql5.com
//|                                        Test_IndicatorRelease.mq5 | //|                        Copyright 2009, MetaQuotes Software Corp. | //|                                             https://www.mql5.com | //| Expert initialization function                                   |...
 
Carl Schreiber:

Es gibt aber schon IndicatorRelease(), um einen Indikator loszuwerden, und IndicatorCreate(), um einen neuen zu erstellen. Beispiele dazu gibt es in der Referenz.

Könnte halt Zeitintensiv sein.

In wie fern Zeitintensiv? Programmieraufwand oder Ausführungsgeschwindigkeit?

IndicatorReleas() funktioniert nicht im Strategietester. Bringt mir also leider nichts :/
 
amando:

Du erzeugst ja jedes mal wenn du den indikator mit anderen werten befüllst ein handle,

das machst du ja normalerweise in der oninit. Nachdem das ja so nicht geht, auch im livetrading nicht hast du nur 2 möglichkeiten

1) den indikator selber im ea berechnen

2) das handle gleich wieder rausschmeissen wenn er die werte berechnet hat, ist auf jeden fall die langsamere

Danke für die Antwort. Jetzt muss ich wohl in den sauren Apfel beißen und alle Indikatoren "nachbauen"..