Hilfe beim Turtle-Trade-Sequenz

Einloggen oder registrieren, um einen Kommentar zu schreiben
Shurka
86
Shurka  

Hallo Zusammen,

ich habe einen EA, indem ich die Turtle-Stategie anwenden möchte.

Ich möchte praktisch nur erkennen, sobald ein Trendwechsel im Turtle stattfindet.

So an sich funktioniert es eigentlich, wie ich es programmiert habe. Aber der Strategietester geht extremst langsam, wenn ich diese Funktion einschalte.

Ich habe den ganzen Code schon nach Fehlern abgesucht und auch schon Schritt für Schritt einzelne Funktionen ausgeklammert. Dabei komme ich immer wieder zu dem Schluss, dass es an der folgenden Sequenz liegen muss...

 //+------------------------------------------------------------------+
 //|=========================TURTLE-POWER=============================|
 //+------------------------------------------------------------------+
 if(Turtle_Power) {
  e=0;
  string Turtlerichtung = "";
  double   B_Turtle_now   = iCustom(NULL,0,iTurtle,period,Timeframe,6,e);
  double   B_Turtle_prev  = iCustom(NULL,0,iTurtle,period,Timeframe,6,e+1);
  double   B_Turtle_preprev  = iCustom(NULL,0,iTurtle,period,Timeframe,6,e+2);

  while ((B_Turtle_now == 1 && B_Turtle_prev == 1) || (B_Turtle_now == 0 && B_Turtle_prev == 0)) {         
   e++;
   for(f=1;f<Bars-1;f++){ 
    Turtle_now   = iCustom(NULL,0,iTurtle,period,Timeframe,6,f);
    Turtle_prev  = iCustom(NULL,0,iTurtle,period,Timeframe,6,f+1);
    Turtle_after = iCustom(NULL,0,iTurtle,period,Timeframe,6,f-1);
    //LONG
    if (Turtle_now == 0 && Turtle_prev == 1 && Turtle_after == 0) {
     Range_Start_Day = TimeDay(iTime(NULL,0,f));
     Range_Start_Hour = TimeHour(iTime(NULL,0,f));
     Range_Start_Minute = TimeMinute(iTime(NULL,0,f));
     CrossShift = f; 
     Turtlerichtung = "UP-Trend";
    break;  
    }  
    //SHORT
    if (Turtle_now == 1 && Turtle_prev == 0 && Turtle_after == 1) {
     Range_Start_Day = TimeDay(iTime(NULL,0,f));
     Range_Start_Hour = TimeHour(iTime(NULL,0,f));
     Range_Start_Minute = TimeMinute(iTime(NULL,0,f));
     CrossShift = f; 
     Turtlerichtung = "DOWN-Trend";
    break;  
    }
   }
   if (e>=Bars-1) break; 
  }
 }   


Wie ihr seht, lese ich einfach einen Indikator dafür aus. Also die while-Schleife scheint richtig zu sein. Denn wenn ich nur die for-Schleife ausklammere und den Tester starte, läuft er relativ schnell, wenn ich den 'Schieber auf 32 also voll aufdrehe. Aber sobald die for-Schleife mitläuft, geht der Tester sehr langsam - eigentlich fast genau wie in echtzeit-ticks.


Hat einer ne Idee, was da los ist? Denn wie gesagt, eigentlich funktioniert es. Nur der Tester macht etwas blöd :-/

Ich habe die gleiche Funktion parallel auch mit einem gleitendem Durchschnitt am laufen und da funktioniert diese Logik!

Carl Schreiber
Moderator
7071
Carl Schreiber  

Hast Du mal nachgeschaut, wie viele Turtle Trader EAs es gibt?

Erst suchen! Es gibt fast nix, was nicht schon für Mt4/5 programmiert wurde!
Und aus Vielem aus der CodeBase oder den Artikeln kann man sich seinen Teil 'rauskopieren!

Wenn ich auf Englisch stelle und dann "Turtle" eingebe sehe ich 41 Seiten a 10 Treffer!

Shurka
86
Shurka  

kopieren kann jeder. Und wenn ich nach "Turtle EA mt4" suche, kommen grade mal 2 Seiten mit denen ich so eigentlich nichts anfangen kann.

Außerdem funktioniert es ja. Es ist wohl nur ein kleiner Fehler in der Logik, welcher mir den Tester lahm legt.

Hatte nur gehofft, dass man mir hier helfen könnte :-(

Otto Pauser
905
Otto Pauser  
Shurka:

kopieren kann jeder. Und wenn ich nach "Turtle EA mt4" suche, kommen grade mal 2 Seiten mit denen ich so eigentlich nichts anfangen kann.

Außerdem funktioniert es ja. Es ist wohl nur ein kleiner Fehler in der Logik, welcher mir den Tester lahm legt.

Hatte nur gehofft, dass man mir hier helfen könnte :-(

Ich denke, daß du in der for-Schleife immer ALLE Kerzen durchgehst, und das bei jedem Tick. Kann es daran liegen?
Shurka
86
Shurka  

hm, ok. Aber wie sollte es denn anders aussehen?

Ich kenne es nur so :-(

Otto Pauser
905
Otto Pauser  
Shurka:

hm, ok. Aber wie sollte es denn anders aussehen?

Ich kenne es nur so :-(

Der Programmteil ist aus dem grösseren Zusammenhang gerissen, da kann ich dir nur bedingt helfen, ausserdem ist es mql4.

In mql5 wäre das für mich leichter. Schau dir in den vielen Beispielen an, wie das gemacht wird.
Meistens ist eine Variable mit der Bezeichnung 'limit' im Spiel.

Shurka
86
Shurka  

was ich aber grade festgestellt habe...


Habe mir die Variable "e" per comment anzeigen lassen. Und e hat komischwerweise 1001 als anfangswert beim testen!
Einloggen oder registrieren, um einen Kommentar zu schreiben