Aufbau einer Handelssystemformel
In diesem Beispiel soll ein Handelssystem erstellt werden, das die beiden Indikatoren GD und Momentum kombiniert. Gleichzeitig soll in diesem Handelssystem eine typische Schwäche des Momentums eliminiert werden, nämlich die häufig verspätete Generierung von Signalen, wenn die 100er-Linie als Signalgeber eingesetzt wird.
Wie Sie auch in Charts mit einem eingeblendeten Momentum leicht nachvollziehen können, ist das Standardsignal des Momentums (der Durchbruch durch die 100er-Linie) oft sowohl bei Kauf- als auch bei Verkaufssignalen zu spät. Deshalb soll hier die Regressionssteigung des Momentums bestimmt werden. Sie soll helfen, Trendwechsel im Momentum zu bestimmen. Denn bei einem Trendwechsel ändert sich die Richtung des Momentums, also z. B. von fallend auf steigend (dann soll ein Kaufsignal generiert werden) oder von steigend auf fallend (dann soll ein Verkaufssignal generiert werden). So wird versucht, den Trend besser auszunutzen.
Variablenzuweisung
In diesem Beispiel werden drei Zeitreihen benötigt, nämlich die Close-Zeitreihe und der aus ihr gebildete Gleitende Durchschnitt und die Regressionssteigung des Momentums. Diese drei Zeitreihen werden zunächst Variablen zugewiesen, damit Sie nicht bei jedem Aufruf in der Formel neu berechnet werden müssen, sondern aus dem Speicher gelesen werden können.
- Zur Berechnung wird in diesem Beispiel die Close-Zeitreihe verwendet. Sie wird der Variablen
$Close
zugewiesen:$Close:=Close;
- Aus der Close-Zeitreihe wird der Gleitende Durchschnitt gebildet. Dazu wird die Funktion
GD[Zeitraum;Methode;XVersatz;YVersatz]
verwendet:
Der Parameter Zeitraum wird mit der Variablen$Close.GD[$GDZeitraum]
$GDZeitraum
belegt, der später Werte zugewiesen werden. Die übrigen Parameter werden nicht belegt, d. h., es werden die Standardwerte verwendet. - Das Ergebnis dieser Berechnung ist wieder eine Zeitreihe. Sie wird in der Variablen
$GD
abgelegt.$GD:=$Close.GD[$GDZeitraum];
- Außerdem wird aus der Close-Zeitreihe das Momentum gebildet. Dazu wird die Funktion
MOM[Zeitraum;ZeitraumGD;GD_Variante; GD_XVersatz;GD-YVersatz]
verwendet:
Die Parameter "Zeitraum" und "ZeitraumGD" werden ebenfalls mit Variablen belegt. Die übrigen Parameter werden nicht explizit belegt, d. h., zur Berechnung werden die Standardwerte verwendet.$Close.MOM[$MOMZeitraum;$MOMGDZeitraum]
- Um die Regressionssteigung des Momentums zu ermitteln, wird die Funktion
RegressionsSteigung[Zeitraum:Zahl]
auf das ermittelte Momentum (s. Schritt 4) angewendet:
Der Parameter "Zeitraum" wird ebenfalls mit einer Variablen belegt.$Close.MOM[$MOMZeitraum;$MOMGDZeitraum].RegressionsSteigung[$Zeitraum];
- Das Ergebnis dieses Teilausdrucks ist wieder eine Zeitreihe. Sie wird in der Variablen
$Mom
abgelegt.$MOM:=$Close.MOM[$MOMZeitraum;$MOMGDZeitraum].RegressionsSteigung[$Zeitraum];
Berechnung des Handelssystems
Das Handelssystem selbst wird mit der folgenden Funktion ermittelt:
HandelsSystem[Linien;Long;Short;CloseLong;Closeshort;SignalModus;Leerverkäufe_einbeziehen;Spesen;Losslimit]
Die verschiedenen Parameter werden in diesem Beispiel zum größten Teil benötigt:
- Mit dem Parameter "Linien" wird definiert, welcher Verlauf im Chart angezeigt wird. Da die Kombination zweier Indikatoren nur selten sinnvoll im Chart dargestellt werden kann, wird hier der Close-Verlauf des Wertpapiers dargestellt. Der Parameter "Linien" wird also mit der Variablen
$Close
belegt. - Mit dem Parameter "Long" wird das Kaufsignal definiert. Ein Kaufsignal soll nur geliefert werden, wenn der Close-Kurs im Zeitraum größer war als der GD und gleichzeitig die Regressionssteigung des Momentums über der Mittelpunktslinie lag. Für beide Vergleiche wird das Makro
GreaterAll[$Komparator;$Zeitraum;$YVersatz]
verwendet:$Close.GreaterAll[$GD;$Vergleichs_Zeitraum;$Toleranz]
Mit dieser Formel wird untersucht, ob der Close-Verlauf den GD von unten nach oben durchbrochen hat.
$Vergleichs_Zeitraum
gibt an, wie lange ein Durchbruch als solcher gewertet werden soll.$Toleranz
gibt an, um welchen Prozentsatz der Close den GD durchbrochen haben muss, damit der Durchbruch als Signal gewertet wird.$MOM.GreaterAll[$Mittelpunktslinie;$Vergleichs_Zeitraum;$Toleranz]
Hier wird untersucht, ob die Regressionssteigung die Nulllinie von unten nach oben durchbrochen hat. Da die Regression die Steigung einer Kurve angibt, wird so festgestellt, ob die Kurse von fallend auf steigend gewechselt haben. Da beide Bedingungen gleichzeitig erfüllt sein sollen, werden Sie mit
AND
verknüpft:$Close.GreaterAll[$GD; $Vergleichs_Zeitraum; $Toleranz] and $MOM.GreaterAll[$Mittelpunktslinie; $Vergleichs_Zeitraum; $Toleranz]
- Mit dem Parameter "Short" wird das Verkaufssignal definiert. Ein Verkaufssignal soll nur geliefert werden, wenn der Close-Kurs im Zeitraum unter dem GD lag und gleichzeitig die Regressionssteigung des Momentums unter der Mittelpunktslinie lag. Für beide Vergleiche wird das Makro
LessAll[$Komparator; $Zeitraum; $YVersatz]
verwendet:$Close.LessAll[$GD; $Vergleichs_Zeitraum; $Toleranz]
- Mit dieser Formel wird untersucht, ob der Close-Verlauf den GD von oben nach unten durchbrochen hat.
$Vergleichs_Zeitraum
gibt an, wie lange ein Durchbruch als solcher gewertet werden soll.$Toleranz
gibt an, um welchen Prozentsatz der Close den GD durchbrochen haben muss, damit der Durchbruch als Signal gewertet wird.$MOM.LessAll[$Mittelpunktslinie; $Vergleichs_Zeitraum;$Toleranz]
Hier wird untersucht, ob die Regressionssteigung die Nulllinie von oben nach unten durchbrochen hat. Da die Regression die Steigung einer Kurve angibt, wird so festgestellt, ob die Kurse von steigend auf fallend gewechselt haben. Da beide Bedingungen gleichzeitig erfüllt sein sollen, werden Sie mit
AND
verknüpft:$Close.LessAll[$GD; $Vergleichs_Zeitraum; $Toleranz] and $MOM.LessAll[$Mittelpunktslinie; $Vergleichs_Zeitraum; $Toleranz]
- Die Parameter "CloseLong" und "CloseShort" werden nicht benötigt. Sie werden daher mit einem Unterstrich "_" belegt, der ausdrückt, dass diese Signalmöglichkeiten nicht verwendet und daher auf den Standardwert gesetzt werden.
- Mit dem Parameter "SignalModus" wird definiert, wie viele der maximal 4 Signalmöglichkeiten verwendet wurden, in diesem Fall nur 2, nämlich Long und Short.
- Der Parameter "Leerverkäufe_einbeziehen" bestimmt, ob Short-Positionen mit in die Bewertung einbezogen werden sollen. Dieser Parameter wird mit der Variablen
$Leerverkäufe_einbeziehen
belegt, so dass er später beliebig verändert werden kann. - Der Parameter "Spesen" gibt an, wie viele Spesen pro Transaktion in die Erfolgsberechnung eingerechnet werden sollen. Diese Angabe ist sehr wichtig, um wirklich aussagekräftige Ergebnisse zu erhalten. Dieser Parameter wird mit der Variablen
$Spesen
belegt, so dass er später beliebig verändert werden kann. - Der Parameter "Losslimit" gibt an, ob bei einem bestimmten Verlust die Position automatisch geschlossen werden soll. Dieser Parameter wird mit der Variablen
$Losslimit
belegt, so dass er später beliebig verändert werden kann.
Die komplette Formel lautet:
$Close:=Close;
$MOM:=$Close.MOM[$MOMZeitraum;$MOMGDZeitraum].RegressionsSteigung[$Zeitraum];
$GD:=$Close.GD[$GDZeitraum];
Handelssystem[$Close;
$Close.GreaterAll[$GD; $Vergleichs_Zeitraum; $Toleranz]
and $MOM.GreaterAll[$Mittelpunktslinie; $Vergleichs_Zeitraum; $Toleranz];
$Close.LessAll[$GD; $Vergleichs_Zeitraum; $Toleranz]
and $MOM.LessAll[$Mittelpunktslinie; $Vergleichs_Zeitraum; $Toleranz];
_;
_;
2;
$Leerverkäufe_einbeziehen;
$Spesen;
$LossLimit]