Metastock: Signalformel mit dem RSI programmieren ?
Hallo werte Forumsteilnehmer,
folgende Frage zur Umsetzung in Metastock:
1) Zunächst soll der RSI(14) über eine Kursreihe berechnet werden (das schafft Metastock problemlos)
2) Anschließend sollen die RSI-Werte z.B. der letzten 70 Tage gerangreiht werden, und dann ein Kauf erfolgen, wenn der aktuelle RSI-Wert höher ist, als z.B. 15 % der RSI-Werte in den jeweils letzten 70 Tagen.
Selbstverständlich sollte der RSI-Wert VOR dem Kauftag NIEDRIGER gewesen sein, als 15% der betrachteten RSI-Werte, und AM Kauftag eben HÖHER ausgefallen sein (sodass ein Schwellwert überschritten wurde).
Analog sollte z.B. die Position auch wieder geschlossen werden können, wenn der aktuelle RSI-Wert erstmalig wieder niedriger ist, als (beispielsweise) 85% der RSI-Werte der jeweils letzten 70 Tage.
=> Wie setzt man Punkt 2) um ? Geht das überhaupt ?
Danke für alle Anmerkungen dazu !
Das heisst, du willst anstelle der in der TA üblichen starren Grenzen dynamische Grenzen benutzen.
Das ist eine Idee, die meines Wissens in einem Artikel über "Dynamic Zones" im TASC Juli 1997 von Leo Zamansky und David Stendahl veröffentlicht wurde.
Um die üblichen starren Grenzen (Kaufen oberhalb 30, Verkaufen unterhalb 70) bei solchen Indikatoren wie dem RSI, Williams% etc. zu überwinden, haben sie sich folgendes Verfahren einfallen lassen:
Suche V so, dass P{X<=V}=P1, für die Kaufzone und P{X>=V}=P2 für die Verkaufzone. V= Wert der dynamischen Schranke, X= Wert des Indikators, P1 und P2 = vom Benutzer vorgegebene Wahrscheinlichkeiten(Häufigkeiten). Die Wahrscheinlichkeit P wird über ein Histogramm (über eine Lookback-Periode) ermittelt, d.h. das H. stellt die Dichtefunktion f(x) dar, und gesucht wird V mit F(V) <= P1.
Die Autoren haben für die Lookback-Periode die Anzahl 70 und für die Werte P1, P2 den Wert 10 vorgeschlagen und berichten von recht positiven Ergebnissen (im Vergleich zu den starren Werten).
In einer Sprache, die Arrays und Loops kennt, ist das Ganze recht einfach zu implementieren. Beides ist in Metastock nicht möglich, bliebe die Programmierung über eine externe Funktion. Das geht zwar prinzipiell mit Metastock, zur Politik von Equis verweise ich auf das Posting von Global_2 an anderer Stelle in diesem Forum.
Ich hatte das mal für Investox programmiert, dessen Sprache der von MS sehr ähnlich ist, mit gleichen Problemen. Wenn man mit einer 5-er Rasterung zufrieden ist, geht das. D.h. man beschränkt sich bei den Wahrscheinlichkeiten P1, P2 auf die Werte 5,10,15 etc.
Im Prinzip liesse sich der Code nach MS portieren, hier gibt es jedoch ein zusätzliches Problem, die Beschränkung auf 20 Variablen. Eine Beschränkung, die Investox nicht hatte/hat (dort ist der Dynamische Grenzwert inzwischen als Standardindikator implementiert). Man müsste den Code auf mehrere Indikatoren verteilen und da habe ich dann aufgegeben. Diese Implementierung hat auch den Nachteil, dass die Auführung elend lange dauert und wegen der Benutzung von Indikatoren zur Optimierung im Systemtester nicht zu gebrauchen ist.
Trotzdem viel Erfolg
Bernd Kürbs
Hallo Herr Kürbs,
Das Thema hatten wir ja anderswo schonmal ;-)
Danke übrigens nochmal für das Beispiel von "brute force" Programmierung.
Gruß & schönen Abend noch
Rock
Hallo Bernd,
danke für Deine ausführliche Antwort. Jetzt weiß ich jedenfalls, dass ich wenigstens nicht zu blöd war, um derartiges zu verwirklichen. Alles in allem aber schade, dass derartiges mit Metastock nicht umsetzbar ist.
Bezüglich meines Vorhaben hast Du natürlich vollkommen recht. Genau das war geplant ;-)
Apropos: Wie waren Deine Erfahrungen mit den dynamischen Zonen bei Investox ?
Hallo Herr Kürbs,
auch an Sie die Frage, ob wir Ihnen hinsichtlich Equis weiterhelfen können ?
@ Rubelit:
Ein Testergebnis habe ich noch ausgegraben:
================================================
Auf dem SP500 (1962-1999) mit einem normalen RSI verglichen, nur Long-Positionen: Der normale RSI (30/70, Längen etwas optimiert) ist zu 77% investiert und macht ca. 20% des Buy/Hold (40% Drawdown). Der Dynamische RSI ist zu 60% investiert und macht 30% des Buy/Hold (Drawdown ist ebenfalls etwas geringer 42 zu 34%, Nettoprofit je Periode 14 zu 25).
End-of-Day Daten, Close als Input, Kauf/Verkauf zum Open des nächsten Tages, 30000 Startkapital, keine Zinsen, 100% Margin. Optimiert werden sollte der Profit je Periode, max. theoretischer Verlust und Sharpe-Ratio (in dieser Gewichtung).
=============================================================
Ich hatte bei einer ganzen Reihe von Indikatoren (auch Marktbreite o.ä.) dynamische Grenzwerte verwendet.
Mein Eindruck war, dass diese dynamischen Grenzwerte eine etwas feinere Betrachtung lieferten, als starre Grenzwerte. Wunder darf man aber nicht erwarten.
@ Rock:
Schön, dass es wenigstens einem genutzt hat. Bei genauerer Betrachtung meine ich, dass die Berechnung von "Frq_Sum" überflüssig ist, es müsste stets gleich "P_Lkbck" sein. Irgendwann hatte ich die Vorstellung, dass die Verwendung von "PREV" die Berechnung in MS möglich machen müsste, bekomme es aber nicht zusammen.
Viel Erfolg
Bernd Kürbs