Mit Hilfe von Anwenderstops können seit Investox V2 Positionsschließungen zu selbstdefinierten Ausstiegskursen dargestellt werden. Dadurch können komplexe und intelligente Exit-Strategien gebacktestet und getradet werden.
Als Preis der Flexibilität mussten in der Vergangenheit aber auch längere Rechenzeiten für Strategien mit Anwenderstops akzeptiert werden. Besonders beim Einsatz mehrerer Anwenderstops in Intraday-Handelssystemen mit hoher Handelsfrequenz und kleiner Basiskomprimierung konnten spürbare Verzögerungen bei der Signalberechnung auftreten.
Mit der Einführung von Investox V6 wurde es möglich, die Anwenderstops in Handelssystemen nahezu komplett durch Intraday-Stops zu ersetzen, weil neue Bezugsarten für die Gewinn- und Verlustberechnung von Intraday-Stops einstellbar sind.
Wir möchten im heutigen "Code im Fokus" die bisher in den Anwenderstops vorzunehmenden Einstellungen mit den neuen Möglichkeiten der Version 6 vergleichen.
Ausgangsbasis sei ein beliebiges Handelssystem - für unser heutiges Beispielprojekt sei es eine einfache R-Squared / LRSlope-Kombination.
Ausstiege aus Long-Positionen erfolgen über eine Kombination aus Trailingstop und Verluststop zum Tief der letzten 20 Perioden.
Short-Trades werden immer zum Hoch der letzten 20 Perioden beendet.
Über einen Standard-Anwenderstop konnte dies in der Vergangenheit wie folgt umgesetzt werden:
Definitionsbereich des Handelssystems:
global calc IVL: Ref(LLV(Low, 20),-1);
global calc IVS: Ref(HHV(high, 20),-1);
- Registrierkarte "Stops" - Anwenderstop "Long"
Erläuterung der Berechnung des Anwenderstops:
calc #_StopLevel#: IVL;
{Das im Definitionsbereich des Handelssystems in der Variablen "IVL" definierte Stoplevel Ref(LLV(low,20),-1) wird der Variablen #_StopLevel# zugewiesen. Das spezielle Investox-Schlüsselwort #_StopLevel# wird benötigt, um den Stopverlauf später im Chart anzeigen zu lassen}
calc #_exitlevel#: MIN(open,#_stoplevel#);
{ Das Ausstiegslevel wird in einer Variablen mit dem Namen #_exitlevel# definiert. Auch bei dieser Variablen handelt es sich um ein spezielles Investox-Schlüsselwort, für die Eingabe einer abweichenden Ausstiegsbasis in der Registrierkarte "Optionen" des Anwenderstops (siehe Grafik 3). Die Formel MIN(open,#_stoplevel#) liefert als Ergebnis den kleineren der beiden Werte Open-Kurs und LLV(low,20). Wenn bereits der Eröffnungskurs der Ausstiegskerze unter dem 20-Periodentief liegt, muss die Long-Position zu diesem (schlechteren) Kurs geschlossen werden.}
low < #_StopLevel#
{ Erst in der letzten Code-Zeile wird die tatsächliche Bedingung für die Auslösung des Anwenderstops definiert. Der Stop wird immer dann wirksam, wenn das Tief einer Kerze unter dem 20-Perioden-Tief liegt, welches in der Variablen #_StopLevel# definiert ist. }
- Registrierkarte "Stops" - Anwenderstop "Short"
Alle Einstellungen werden analog zum Anwenderstop (Long) vorgenommen. Einzige die Stop-Berechnung in den Zusatzbedingungen des Stops ändert sich wie folgt:
Abgefragt wird für die Short-Trades das in der Variablen "IVS" im Definitionsbereich des Handelssystems hinterlegte Hoch der letzten 20 Perioden HHV(high,20).
Liegt bereits der Eröffnungskurs der Ausstiegskerze über dem #_Stoplevel#, erfolgt der Exit zum Eröffnungskurs, sonst zum #_Stoplevel#.
Der Stop wird immer dann ausgelöst, wenn das Hoch einer Kerze über dem Stoplevel liegt.
Verifikation 1 - Anwenderstop mit Auswertung als Intraday-Verluststop
Ergebnisgleichheit zu den vorher gennannten Stop-Einstellungen erhält man, wenn man in den Investox-Anwenderstops in der Registrierkarte "Zusatzberechnung" als Auswertung "Intraday-Verlust" anstelle von "Standard" einstellt. Bei dieser Einstellung kann die Definition einer abweichenden Exitbasis entfallen. Die Einstellung stellt praktisch einen Zwischenschritt zur kompletten Realisierung des Exits übere einen Intraday-Stop, dar, wie sie ab der V6 möglich wird.
Die im Detail vorzunehmenden Einstellungen für diesen Hybrid-Anwenderstop lauten für die Long-Seite:
Für Short-Trades sind die Einstellungen wieder analog vorzunehmen, wobei wie im Standard-Anwenderstop auf die abweichende Berechnung der Zusatzbedingung zu achten ist.
Verifikation 2 - Intraday-Verluststop ersetzt den Anwenderstop
Ab Investox Version 6 kann dann der in den bisherigen Beispielen zum Einsatz kommende Anwenderstop komplett durch den deutlich performanteren Intraday-Verluststop ersetzt werden.
Der Definitionsbereich des Handelssystems bleibt dazu wieder gleich.
In der Registrierkarte "Stops" des Handelssystems ist für Ergebnisgleichheit mit den zuvor beschriebenen Anwenderstop-Systemen für die Long-Seite ein Intraday-Verluststop wie folgt einzustellen:
Als Stoplevel für den Intraday-Verluststop wird "0" Punkte eingestellt, weil der Stop sofort bei Eintreten der Zusatzbedingung: low<IVL wirksam werden soll.
Basis für die Gewinn- und Verlustberechnung ist in der Registrierkarte "Optionen" das passende Stoplevel (IVL bzw. IVS). Weil sich dieses Level während eines laufenden Trades ändern kann, wird durch Auswahl der Bezugsart "Dynamisch" abgesichert, dass die Basis für die Gewinn- und Verlustberechnung fortlaufend neu gesetzt wird.