Hallo liebe Kollegen,
ich entwickle gern Ausbruchsysteme und erwische mich immer wieder dabei, wie ich in einer Periode zwei Ausbruchslevels definiere. Ein Level für die Long- ein für die Short-Seite. So lange die Bedingungen für nur eine Ausbruchsrichtung zutreffen, ist alles ok. Wenn aber beide Ausbruchsrichtungen in einer Periode unter/überschitten werden, ist ja fraglich welches Trade umgesetzt werden sollte. In Investox ist es bei der Simulation das letzte Signal. Das bedeutet, dass wenn bereit ein Short-Trade läuft (weil Short-Ausbruchslevel in laufender Periode unterschritten wurde) und der Kurs anschließend steigt und den Long-Ausbruchslevel überschreitet, wir das Short-Trade zu einem Long-Trade. Solches Verhalten entspricht natürlich nicht dem Realhandel und kann beim Backtesten zu falschen Schlußfolgerungen bei der Beurteilung von Handelssystem führen.
Die mögliche Vorgehensweisen, die mir bis jetzt bekannt sind, um das beschriebene Problem umzugehen sind:
1) Nur ein Ausbruchslevel pro Periode definieren. Also entweder Long oder Short.
2) Niedrigere Komprimierung nehmen - am besten wahrscheinlich Tickdaten. Wobei wenn man von Tages- zu Tick-Komprimierung wechselt, spürt man es gleich an Lade- und Optimierungs-Zeiten. Somit nicht ganz optimal.
3) Verwendung von
TickOrder. Investox Hilfe:
Ermittelt, ob in einer Periode zuerst ein High- oder ein Low-Limit aufgetreten ist.
Die Funktion „TickOrder“ berechnet die Reihenfolge von High-/Low-Limits auf Tickbasis. Es kann damit festgestellt werden, ob sich die Kurse in einer Periode zuerst auf ein High- oder auf ein Low-Limithin bewegt haben. Der Indikator kann damit als Triggerfür ein Limitsystem eingesetzt werden.
Hinweis: Die Auswertung kann nur bei RTT-Titeln auf Tickbasis erfolgen. Die Berechnung kann bei längeren Datenhistorien auf der Basis einer großen Tickanzahl längere Zeit dauern.
Mein Versuch TickOrder zu verwenden (wie in Investox Hilfe beschrieben) dokumentiert das beiliegende Bild:
TickOrder(Ref(High,-1), Ref(Low, -1))
Hier wird berechnet, ob in der aktuellen Periode zuerst das High oder das Low der Vorperiode erreicht wurde. Wird keines der beiden Limits
erreicht (in diesem Fall also ein „InsideBar“), ist das Ergebnis für die Periode der Wert 0.
Wie man sieht, in der untersuchten Periode wurde sowohl das High als auch das Low der Vorperiode (rote und grüne senkrechte Linien) erreicht. TickOrder liefert aber 0 - laut Hilfe wurde keine der beiden Limits erreicht. Ich habe hier entweder 1 oder -1 erwartet.
Kann mir das bitte jemand erklären? Was mache ich falsch?
Danke!
Giuseppe
keep going on...
Inv [7.6.7]