Das Problem mit den "Same Bar Exits"

Eröffnet von fritzr im Board Equilla - Ideen umsetzen und programmieren

Wir stellen in den Eigenschaften unter Money Management die Intrabar Tick-Simulation auf 100%. Damit wird von der Equilla-Logik ein Extratick erzeugt, der die pessimistischste Ausführung des StopLoss gewährleistet.

Um realistische Ergebnisse zu erhalten, muss entweder der Einstieg zum Open oder Close erfolgen oder, wenn man innerhalb der Periode per "Next Bar at price stop/limit" einsteigt, gewährleistet sein, dass die Preisrange der Periode stets kleiner als der StopLoss-Abstand ist.
Seitenlänge102030
Seite 1 von 1
#10: 14.06.2018 16:13 fritzr
@TSO Support (#9)
Ist
var counter(NumericStatic);

äquivalent zu
var IntraBarPersist counter;
?
#9: 14.06.2018 14:45 TSO Support
@Yvel273 (#8)

IntraBarPersist <-- funktioniert auch in Equilla

Grüße vom Tradesignal Online Support Team

Supportformular | Störungen | Forumshilfe
#8: 11.06.2018 17:48 Yvel273
das problem ist einfach, dass obwohl equilla auf tradestation's easylanguage beruht,
es doch luecken gibt, z.b. 'intrabarpersist' nicht existiert :

http://help.tradestation.com/09_01/tsdevhelp/subsystems/elword/word/variable_reserved_word_.htm
https://www.youtube.com/watch?v=_zmSMUuz57w
#7: 11.06.2018 12:23 ReneRose
@fritzr (#6)
Stimmt, eine Lösung wäre, den Einstieg auf einen nachvollziehbaren Zeitraum zu legen. Auf der anderen Seite hielte ich es für besser, die Ursache zu beseitigen (Historien verlängern).
#6: 09.06.2018 15:12 fritzr
Der Beitrag wurde vom Verfasser bearbeitet. Originalbeitrag anzeigen.
@ReneRose (#5)
Die Simulation des Preisverlaufs der Equilla-Logik im Zusammenwirken mit der 10% Standardeinstellung bei Intrabar Tick-Simulation führt mE so gut wie jeden Backtest mit Intra Bar Entry (Next Bar at price stop/limit) auf die falsche Gewinnerfährte:
Man kann die Ergebnisse jedoch zumindest mit Intrabar Tick-Simulation = 100% nach unten abschätzen, wenn man einen StoppLoss immer dann ausführt, wenn er von der Kerze her möglich ist:
Ich handhabe es deshalb auch so, das entweder auf einer kleineren Zeitebene gehandelt wird oder der Exit nicht am selben Tag (Periode) erfolgen darf.

Kleinere Zeitebene scheidet immer dann aus, wenn dafür keine hinreichende Datenhistorie vorhanden ist, was leider bei TSO so gut wie immer gilt. Und Exit in der nächsten Periode bringt nicht unbedingt die Lösung. Will man die Probleme vermeiden, muss entweder der Einstieg zum Open oder Close erfolgen oder, wenn man innerhalb der Periode einsteigt, gewährleistet sein, dass die Preisrange der Periode stets kleiner als der StopLoss-Abstand ist. Dann führt auch ein Same Bar Exit nicht zu falschen Ergebnissen.

Insofern habe ich den Threadtitel eigentlich falsch gewählt, denn nicht die Same Bar Exits machen Probleme sondern die Intra Bar Entries per
Next Bar at price stop/limit
#5: 09.06.2018 13:50 ReneRose
Der Beitrag wurde vom Verfasser bearbeitet. Originalbeitrag anzeigen.
Mit unbefriedigend meine ich, das der reale Tagesverlauf nicht bekannt und somit keine zuverlässige Entscheidung bzgl. der Tradeprofits getroffen werden kann. Allen Annahmen zu Trotz, kann das System nicht wissen, ob der Stop Loss Kurs nach oder vor dem Einstieg erreicht wurde.

Ich handhabe es deshalb auch so, das entweder auf einer kleineren Zeitebene gehandelt wird oder der Exit nicht am selben Tag (Periode) erfolgen darf.
#4: 09.06.2018 10:37 fritzr
Vom Verfasser oder vom Besitzer der Diskussion gelöscht.
#3: 09.06.2018 09:04 fritzr
@ReneRose (#2)
Bitte konkreter! Was macht das Skript unten aus deiner Sicht unbefriedigend?
#2: 09.06.2018 05:45 ReneRose
@fritzr (#1)
Es gibt keine befriedigende Lösung, so lange nicht Intraday Daten verwendet werden können. Der Report wird nie annähernd reale Ergebnisse zeigen. Auf den Stop Loss zu verzichten ist auch keine Lösung, obwohl dieser ja das "Problem" darstellt.
#1: 08.06.2018 21:42 fritzr
Der Beitrag wurde vom Verfasser bearbeitet. Originalbeitrag anzeigen.
Wir möchten ein Handelssystem für ein einfaches Breakoutsystem im DAX Tageschart backtesten.
Am Vortageshoch soll gekauft und zum Tagesschluss verkauft werden.
Wir setzen den Stoploss auf einen Abstand von 50 Punkten fest.
Am 18. entstand zwar ein Verlust, aber alles funktionierte korrekt: Der Trade wurde bei 50 P. im Minus ausgestoppt.

Am 22. wurde zum Vortageshoch 13133,19 eingestoppt, aber seltsamerweise nicht 50 P. tiefer ausgestoppt, obwohl dieses Level 13083,19 bereits in der ersten Handelsstunde erreicht wurde. Stattdessen wurde der Trade erst zum Close beendet und als Gewinntrade gezählt.
_______________________________________________________________
Warum? Die Ursache liegt in der Order-Verarbeitung von Equilla:

Externes Bild - Anklicken zum Anzeigen

Das ist unglücklich von denen beschrieben. Vermutlich hat es auch deshalb so lange gedauert, bis der Groschen bei mir gefallen ist. Zum Verständnis ein Beispiel:
StopBuy Limit sei 101, StopLoss Abstand sei 1. Exit sonst zum Close.
Kursverlauf OHLC: 100, 102, 99, 101

Was macht die Equilla-Logik damit? Low ist näher am Open, also
Preisreihenfolge: 100, 99, 102, 101.

Intrabar Tick-Simulation=10%:
Entry bei 101 auf dem Weg von 99 zu 102;
StopLoss wird nicht gerissen, da Kurs danach nicht mehr bei 100 [künstlicherKurs wird eingefügt bei 101- 10%*(102-99) = 100,7];
Exit zu 101
=> Ergebnis: BreakEven.

Intrabar Tick-Simulation=40%:
Entry bei 101 auf dem Weg von 99 zu 102;
StopLoss wird gerissen, da Kurs danach bei 100 [künstlicherKurs wird eingefügt bei 101- 40%*(102-99) = 99,8];
Exit zu 100
=> Ergebnis: StopLoss.
______________________________________________________________
Das bedeutet für unseren Fall:

Eröffnungskurs am 22. war 13132,56, Höchst 13204,31 (+71,75 zum Open) und Tiefst 13061,77 (-70,79 zum Open). Da der Tiefstkurs näher am Open lag, wird angenommen, dass erst der Tiefstkurs und dann der Höchstkurs erreicht wurde.

Da der Open knapp unter dem StopBuy-Limit von 13133,19 lag, wurde er nach Equilla-Logik zunächst nicht erreicht sondern stattdessen das Tief bei 13061. Erst danach erfolgte die Aufwärtsbewegung in der Equilla-Logik in einer Bewegung durch das StopBuy-Limit bis zum Höchstkurs 13204,31 und dann zurück bis zum Close 13169,92.

Nach dieser Logik erfolgte zu keinem Zeitpunkt ein 50P. Rückfall unter den Entrykurs und damit kein StopLoss.

Wie im mittleren Stundenchart zu erkennen, fand die Kursbewegung jedoch real so nicht statt!

Wie gehen wir aber nun auf Nummer sicher und lassen, wenn wir nur den Tageschart zur Verfügung haben, solch einen Trade im Backtest immer ausstoppen, selbst wenn evtl. der reale Intradayverlauf, den wir ja nicht immer kennen, keinen StopLoss zur Folge gehabt hätte?

1. Lösung:
Wir stellen in den Eigenschaften unter Money Management die Intrabar Tick-Simulation auf 100%. Damit wird von der Equilla-Logik ein Extratick erzeugt, der die konservative Ausführung des StopLoss gewährleistet.
2. Lösung:
Wir lassen vom Skript per If-Abfrage auf Erreichen des StopLoss Limits prüfen und dann je nachdem den Ausstopper oder den Verkauf zum Close ausführen:
Der StopLoss am 22. erfolgt jetzt wie gewünscht "konservativ", während z.B. am 17. kein S/L erfolgt (Low < 50 P. unter Entry) sondern der Exit zum Close.

Die Ergebnisse beider Lösungen sind identisch (s. Strategy Equity Combined).