Bin mir nicht sicher, ob ich im Einsteigerthread richtig bin, in den Experts-Thread komm ich aber leider nicht rein.
Also...
Bin dabei meinen EA mit dem Strategietester zu testen. Das funktioniert soweit recht gut, es gibt allerdings zwei Stellen,
da stellt der Tester ganz einfach seine Arbeit ein.
Der EA läuft auf M5 Basis. Ich teste ihn mit EURUSD-Kursen von Maerz 2010 im visuellen Mode.
Am und am 1.3.10 12:42:20 und 26.3.10 14:49:45 bleibt der Test hängen, d.h. der Vortschrittsbalken bleibt stehen und es
werden keine neuen Bars mehr im Chart gezeichnet. Teste ich zwischen 2.3 und 25.3. hab ich kein Problem.
Ich hab jetzt mal soweit möglich debuggt, d.h. mir in Ausgabefiles an verschiedenen Positionen des EAs Werte ausgeben
lassen um rauszufinden, wo ich hängen bleib und bin dabei auf folgendes gestossen:
Start()
...
if (Bedingung für Signalberechnung)
{
Ausgabe in Log-File1a
CalculateSignal(); //liefert die Long- und Short-Einstiegsschwellen
Ausgabe in Log-File1d
EvaluateSignal(); //wertet die Einstiegsschwellen aus setzt EA_OrderToPlace, ORDERINPRICE, ORDERSL_INIT und ORDERTYPE
}
...
Dabei stell ich fest, dass ich zu besagtem Zeitpunkt immer in die Funktion CalculateSignal() rein, aber nichtmehr
raus springe.
Also hab ich die Ausgabe in's Log-Fiel um CalculateSignal() erweitert.
void CalculateSignal()
{
/*Diese Funktion liefert LongThresh und ShortThresh zurück, die dann in der Funktion EvaluateSignal ausgewertet werden*/
LongThresh =iCustom(Symb,M5,"Indikatorname",Parameter,1,1);
Ausgabe in Log-File1b
ShortThresh =iCustom(Symb,M5,"Indikatorname",Parameter,2,1);
Ausgabe in Log-File1c
return(0);
}
Zusätzlich generiere ich mir noch bei jedem Indikatoraufruf ein Log-File um zu sehen, ob der Indikator sauber abgearbeitet wird.
Über eine Globale Variable lass ich einen Zähler mitlaufen, der bei jedem Start-Durchlauf des EAs um 1 hochgezählt wird
und den ich zur Synchronisation in alle Log-Files mitausgebe.
In die Log-Files lass ich mir auch noch die Werte von LongThresh und ShortThresh ausgeben, um zu sehen ob hier etwas
merkwürdiges passiert.
Das Ergebnis ist, das Programm gibt noch die Ausgabe Log-File1c aus 1d erscheint dann aber nichtmehr.
D.h. die Funktion CalculateSignal() wird bis zum Ende durchlaufen, das Programm springt aber nichtmehr zurück
zu Start().
Ich hab auch noch folgendes probiert:
*historische Daten über "Vollständige Historie" gecheckt, ob die Kurse zu besagten Zeitpunkten merkwürdig sind ==> alles normal
*visuellen Modus abgeschaltet ==> Problem bleibt bestehen
*Funktion CalculateSignal() auskommentiert ==> dann funktionierts
*Funktion EvaluateSignal() auskommentiert ==> Problem bleibt bestehen
*return(0) in Funktion CalculateSignal rausgenommen ==> Problem bleibt bestehen
Ich hab also ein Problem in der Funktion CalculateSignal(), mir gehen aber langsam die Ideen aus, was ich noch probieren könnte.
Fakt ist, der Indikator funktioniert, wenn ich ihn nur in einem Chart anzeigen lasse und alle ausgegebenen Werte scheinen plausibel zu sein.
Hat irgendjemand eine Idee, welcher Umstand in einem Programm den Strategietester dazu bringt seine Arbeit einzustellen?
Houston, habe ein Problem!
Bin mir nicht sicher, ob ich im Einsteigerthread richtig bin, in den Experts-Thread komm ich aber leider nicht rein.
Also...
Bin dabei meinen EA mit dem Strategietester zu testen. Das funktioniert soweit recht gut, es gibt allerdings zwei Stellen,
da stellt der Tester ganz einfach seine Arbeit ein.
Der EA läuft auf M5 Basis. Ich teste ihn mit EURUSD-Kursen von Maerz 2010 im visuellen Mode.
Am und am 1.3.10 12:42:20 und 26.3.10 14:49:45 bleibt der Test hängen, d.h. der Vortschrittsbalken bleibt stehen und es
werden keine neuen Bars mehr im Chart gezeichnet. Teste ich zwischen 2.3 und 25.3. hab ich kein Problem.
Ich hab jetzt mal soweit möglich debuggt, d.h. mir in Ausgabefiles an verschiedenen Positionen des EAs Werte ausgeben
lassen um rauszufinden, wo ich hängen bleib und bin dabei auf folgendes gestossen:
Start() ... if (Bedingung für Signalberechnung) { Ausgabe in Log-File1a CalculateSignal(); //liefert die Long- und Short-Einstiegsschwellen Ausgabe in Log-File1d EvaluateSignal(); //wertet die Einstiegsschwellen aus setzt EA_OrderToPlace, ORDERINPRICE, ORDERSL_INIT und ORDERTYPE } ...Dabei stell ich fest, dass ich zu besagtem Zeitpunkt immer in die Funktion CalculateSignal() rein, aber nichtmehr
raus springe.
Also hab ich die Ausgabe in's Log-Fiel um CalculateSignal() erweitert.
void CalculateSignal() { /*Diese Funktion liefert LongThresh und ShortThresh zurück, die dann in der Funktion EvaluateSignal ausgewertet werden*/ LongThresh =iCustom(Symb,M5,"Indikatorname",Parameter,1,1); Ausgabe in Log-File1b ShortThresh =iCustom(Symb,M5,"Indikatorname",Parameter,2,1); Ausgabe in Log-File1c return(0); }Zusätzlich generiere ich mir noch bei jedem Indikatoraufruf ein Log-File um zu sehen, ob der Indikator sauber abgearbeitet wird.
Über eine Globale Variable lass ich einen Zähler mitlaufen, der bei jedem Start-Durchlauf des EAs um 1 hochgezählt wird
und den ich zur Synchronisation in alle Log-Files mitausgebe.
In die Log-Files lass ich mir auch noch die Werte von LongThresh und ShortThresh ausgeben, um zu sehen ob hier etwas
merkwürdiges passiert.
Das Ergebnis ist, das Programm gibt noch die Ausgabe Log-File1c aus 1d erscheint dann aber nichtmehr.
D.h. die Funktion CalculateSignal() wird bis zum Ende durchlaufen, das Programm springt aber nichtmehr zurück
zu Start().
Ich hab auch noch folgendes probiert:
*historische Daten über "Vollständige Historie" gecheckt, ob die Kurse zu besagten Zeitpunkten merkwürdig sind ==> alles normal
*visuellen Modus abgeschaltet ==> Problem bleibt bestehen
*Funktion CalculateSignal() auskommentiert ==> dann funktionierts
*Funktion EvaluateSignal() auskommentiert ==> Problem bleibt bestehen
*return(0) in Funktion CalculateSignal rausgenommen ==> Problem bleibt bestehen
Ich hab also ein Problem in der Funktion CalculateSignal(), mir gehen aber langsam die Ideen aus, was ich noch probieren könnte.
Fakt ist, der Indikator funktioniert, wenn ich ihn nur in einem Chart anzeigen lasse und alle ausgegebenen Werte scheinen plausibel zu sein.
Hat irgendjemand eine Idee, welcher Umstand in einem Programm den Strategietester dazu bringt seine Arbeit einzustellen?
Vielen Dank,
Wogo