Diskussion zum Artikel "Cross-Plattform Expert Advisor: Eigene Stopps, Breakeven und Trailing"

 

Neuer Artikel Cross-Plattform Expert Advisor: Eigene Stopps, Breakeven und Trailing :

Dieser Artikel beschreibt, wie nutzerdefinierte Stopps in einem plattformübergreifenden Expert Advisor eingerichtet werden können. Darüber hinaus wird eine eng verwandte Methode diskutiert, mit der das Nachziehen von Stopps für die Dauer einer Position entwickelt werden können.

Das folgende Bild zeigt ein Diagramm zur Berechnung des Breakeven in der oben beschriebenen Weise. Basierend auf diesem Ablaufdiagramm werden die drei Werte der Aktivierung, Deaktivierung und des neue Stopp vorab berechnet. Ist der aktuelle Preis größer oder gleich dem erforderlichen Mindestabstand (Setzen von StopLoss auf Breakeven), wird der berechnete neue Stopp als vorläufiges neues Stopp für die Position verwendet. Wenn nicht, dann wäre die Ausgabe gleich Null. Im nächste Schritt wäre zu prüfen, ob der neue Stopp innerhalb des aktuellen Stopps liegt, der immer true zurückgeben sollte, wenn die vorherige Bedingung erfüllt ist, und somit den berechneten Stopp als Endergebnis zurückliefern würde.


Breakeven

Autor: Enrico Lambino

 

Hallo Enrico. Deine großartige Arbeit geht weiter. Werde nicht müde, mach weiter mit der tollen Arbeit.

 

Hallo,

Es scheint, dass es nicht möglich ist, ein bestimmtes Volumen (Prozent) für den Trailing-Stop festzulegen?

 

Wie kann ich 2 oder mehr TS verwenden?

Dies ist mein Code:

//--- Nachlaufender Stopp
   CTrails *trails=new CTrails();
   //--- Erreichen der Gewinnschwelle
   CTrail *trail_be=new CTrail();
   trail_be.Set(BELevel,BEOpenPriceDist,0);   
   trails.Add(trail_be);
   //--- Einstellung des Nachlaufstopps
   CTrail *trail=new CTrail();
   trail.Set(trail_value,trail_start,trail_step);
   trails.Add(trail);
   //--- 
   main.Add(trails);

Breakeven funktioniert in diesem Fall nicht. Wenn ich den Trailing Stop (Trail-Objekt) entferne, funktioniert Breakeven gut.

 
mbjen:

Hallo,

Es scheint, dass es nicht möglich ist, ein bestimmtes Volumen (Prozent) für den Trailing-Stop festzulegen?

Ja, das ist nicht möglich. CTrail und CTrails sind nur für die Modifikation der Stop-Ebene. Für das Volumen müssen Sie es auf CStop einstellen.
mbjen:

Wie kann ich 2 oder mehr TS verwenden?

Dies ist mein Code:

Breakeven funktioniert in diesem Fall nicht. Wenn ich den Trailing-Stop (Trail-Objekt) entferne, funktioniert Breakeven gut.

Das hängt von der Aktivierung und dem Abstand ab, den Sie für die beiden (Breakeven und Trail) festlegen. Es ist jedoch wahrscheinlich, dass der Trailing-Stop vor dem Breakeven ausgelöst wurde. Der Breakeven gilt nicht mehr, wenn das Stopp-Niveau bereits über dem von Ihnen festgelegten Breakeven-Kurs liegt.
 
Enrico Lambino:
Ja, das ist nicht möglich. CTrail und CTrails sind nur für die Modifikation der Stop-Ebene gedacht. Das hängt von der Aktivierung und dem Abstand ab, den Sie für die beiden Stops (Breakeven und Trail) festgelegt haben. Es ist aber wahrscheinlich, dass der Trailing zuerst ausgelöst wurde, bevor der Breakeven. Der Breakeven gilt nicht mehr, wenn das Stopp-Niveau bereits über dem von Ihnen festgelegten Breakeven-Kurs liegt.
Nachfolgend die von mir verwendeten Einstellungen. Breakeven funktioniert nicht. So wie ich es verstehe, muss der zweite Trail im Abstand von 500 aktiviert werden, richtig? Also muss der Breakeven vorher aktiviert werden. Warum funktioniert es dann nicht?
   //--- Nachlaufender Stopp
   CTrails *trails=new CTrails();
   //--- Erreichen der Gewinnschwelle
   CTrail *trail_be=new CTrail();
   //trail_be.Set(BELevel,BEOpenPriceDist,0); 
   trail_be.Set(230,250,0);   
   trails.Add(trail_be);
   //--- Einstellung des Nachlaufstopps
   CTrail *trail=new CTrail();
   //Trail.Set(trail_value,trail_start,trail_step);
   trail.Set(200,500,10);
   trails.Add(trail);
   //--- 
   main.Add(trails);
 
//--- Nachlaufender Stopp
   CTrails *trails=new CTrails();
   //--- Erreichen der Gewinnschwelle
   CTrail *trail_be=new CTrail();
   //trail_be.Set(BELevel,BEOpenPriceDist,0); 
   trail_be.Set(230,250,0);   
   trails.Add(trail_be);
   //--- Einstellung des Nachlaufstopps
   CTrail *trail=new CTrail();
   //Trail.Set(trail_value,trail_start,trail_step);
   trail.Set(400,500,10);
   trails.Add(trail);
   //--- 
   main.Add(trails);

Sie funktionieren auch nicht.

 
mbjen:

Das funktioniert auch nicht.

Versuchen Sie, Ihr Breakeven-/Trailing-Aktivierungsziel zu senken. Nur weil Sie ein Break-even- oder Trailing-Ziel festgelegt haben, heißt das nicht, dass der Markt verpflichtet ist, es zu erreichen.

 
Enrico Lambino:

Versuchen Sie, Ihr Breakeven-/Trailing-Aktivierungsziel zu senken. Nur weil Sie ein Breakeven- oder Trailing-Ziel festgelegt haben, heißt das nicht, dass der Markt es auch erreichen muss.


Ich überprüfe den gleichen Zeitraum der Marktgeschichte im Backtest. Wenn ich sowohl TS (regulärer Trailing-Stop) als auch BE aktiviere, funktioniert nur TS und BE nicht (ich sehe die Stop-Linie nicht). Wenn ich TS deaktiviere, funktioniert BE einwandfrei. Ich teste im Backtest und überprüfe die Stopp-Linien.

 
mbjen:

Ich überprüfe den gleichen Zeitraum der Marktgeschichte im Backtest. Wenn ich sowohl TS (regulärer Trailing-Stop) als auch BE aktiviere, funktioniert nur TS und BE funktioniert nicht (ich sehe die Stop-Linie nicht). Wenn ich TS deaktiviere, funktioniert BE einwandfrei. Ich teste im Backtest und überprüfe die Stop-Linien.

Welchen Wert hat Ihr Take-Profit? Ist er gleich oder größer als der Aktivierungspreis (in Punkten) für BE?
 
mbjen:

Sie funktionieren auch nicht.

Ihr erster Code aktiviert den Breakeven, nicht den Trailingstop. Wenn es eine weitere Änderung des SL gäbe, wäre es der Takeprofit. Aber wenn Ihr TP bei 500 Punkten liegt, würde der Trailingstop bei 500 Punkten überhaupt nicht aktiviert, da der Handel zu diesem Zeitpunkt den Markt bereits verlassen hat.

Ihr zweiter Code verwendet den Trailingstop, aber nicht den Breakeven. Denn noch bevor der Breakeven angewendet werden kann, hat sich der SL bereits über den Breakeven-Preis bewegt.