Metastock: Trendfolge Exit Problem
Hallo,
ich habe heute versucht, eine Idee umzusetzen, die rein visuell recht vielversprechend aussieht, nur die Umsetzung in MetaStock für den klar operationalisierten Test bereiten mir Probleme. Nun bin ich mir nicht ganz sicher, ob es sich überhaupt in MetaStock umsetzten lässt oder aber nur ich den Fehler nicht sehe.
Zunächst einmal die Grundidee:
ENTERLONG RMI(C,10,15) > 50 and DSS(6,3)(Bressert_Type) Crosses MA(DSS,3,E).
EXIT_LONG MA(DSS,3,E) Cross DSS
ENTERSHORT RMI(C,10,15) 50 ... usw.
Das Ganze ist auch kein Problem. An dieser Systemtik fällt jedoch auf, das immer dann, wenn der Markt "trendy" wird, die DSS zu schnell zurückschnappt und den EXIT angibt. Ich habe mir nun überlegt, wann man einen Trend unterstellen kann und wann nicht. Man kann zum Beispiel messen, wie die Performance seit dem letzten bullischen DSS Crossover war. Idealerweise wollen wir natürlich den Trend so weit wie möglich ausbeuten, ohne jedoch in "Seitwärtsmärkten" zerhackt zu werden, gute Trends zeichnen sich durch sauberes "Richtungsarbeiten" (higher high, higher lows usw.) aus. Wir können alo probieren, nachdem wir bereits x Prozent (ich hatte so 3% anvisiert) verdient haben, nicht den nächsten DSS exit zuhandeln, sondern den bearishen cross(Mov(C,10,E), Close. Der 10er MA ist ja (fast) nie so arg weit weg vom "Geschehen", selbst in Seitwärtsmarkten sollte man, so die Theorie, also nicht allzuviel verlieren wie beim "reinen" MA crossover traden.
Also hier noch mal die alternative EXIT-Regel in Kurzform:
Wenn du Long bist (siehe oben) und mit der DSS bereits 3 Prozent verdient hast, dann handele nicht den DSS Exit, sondern den MA Crossover, um die Pos. zu schließen und gehe, solange die Pos. offen ist, auch keine neue Pos. über die DSS ein.
Hintergedanke ist der, das wir mit "Fremdkapital" (Buchgewinn) auf den Trend wetten.
So, ich hoffe ich habe die Regel(n) verständlich dargelegt, erstmal nur für LONG, SHORT natürlich vice versa. Hier meine MetaStock Ansätze, es wäre sehr nett wenn mir jemand helfen könnte, auch wenn der Ansatz Mist ist, aber dann wissen wir's wenigstens genau.
1.Formel Name: "_UP"
Pds:=6;
Slw:=3;
A:=Mov((CLOSE-LLV(LOW,Pds))/(HHV(H,pds)-LLV(L,Pds)),Slw,E)*100;
B:=Mov((A-LLV(A,pds))/(HHV(A,Pds)-LLV(A,Pds)),Slw,E)*100;
CycleMode:=ValueWhen(1,
Cross(B,Mov(B,3,E)),
CLOSE);
Mov((CLOSE-CycleMode)/CycleMode*100,3,E);
ENDE
2.Formel Name: "_Dn"
"Pds:=6;
Slw:=3;
A:=Mov((CLOSE-LLV(LOW,Pds))/(HHV(H,pds)-LLV(L,Pds)),Slw,E)*100;
B:=Mov((A-LLV(A,pds))/(HHV(A,Pds)-LLV(A,Pds)),Slw,E)*100;
CycleMode:=ValueWhen(1,
Cross(Mov(B,3,E),B),
CLOSE);
Mov((CycleMode-CLOSE)/CycleMode*100,3,E);
ENDE
3. Formel Name: "_LastUp"
Pds:=6;
Slw:=3;
A:=Mov((CLOSE-LLV(LOW,Pds))/(HHV(H,pds)-LLV(L,Pds)),Slw,E)*100;
B:=Mov((A-LLV(A,pds))/(HHV(A,Pds)-LLV(A,Pds)),Slw,E)*100;
BarsSince(Cross(B,Mov(B,3,E)))
ENDE
4. Formel Name: "_LastDn"
Pds:=6;
Slw:=3;
A:=Mov((CLOSE-LLV(LOW,Pds))/(HHV(H,pds)-LLV(L,Pds)),Slw,E)*100;
B:=Mov((A-LLV(A,pds))/(HHV(A,Pds)-LLV(A,Pds)),Slw,E)*100;
CycleMode:=ValueWhen(1,
Cross(Mov(B,3,E),B),
CLOSE);
Mov((CycleMode-CLOSE)/CycleMode*100,3,E);
ENDE
5. Formel Name: "_active"
If(Fml("_LastUp") Fml("_LastDn"),1,-1)
ENDE
6.Formel Name: "_BullTrend"
Pds:=6;
Slw:=3;
A:=Mov((CLOSE-LLV(LOW,Pds))/(HHV(H,pds)-LLV(L,Pds)),Slw,E)*100;
B:=Mov((A-LLV(A,pds))/(HHV(A,Pds)-LLV(A,Pds)),Slw,E)*100;
CycleMode:=ValueWhen(1,
Cross(B,Mov(B,3,E)),
CLOSE);
BullTrend:=If(Fml("_active") = 1 AND RMI(C,10,15)>50,
Mov((CLOSE-CycleMode)/CycleMode*100,3,E),0);
BullAlert:=If(Cross(BullTrend,3),1,0);
BullAlert;
ENDE
7. Formel Name: "_BullExit"
If( Fml("_BullTrend") = 1 OR
Ref(Fml("_BullTrend"),-1) = 1 OR
Ref(Fml("_BullTrend"),-2) = 1 OR
Ref(Fml("_BullTrend"),-3) = 1 OR
Ref(Fml("_BullTrend"),-4) = 1 OR
Ref(Fml("_BullTrend"),-5) = 1 OR
Ref(Fml("_BullTrend"),-6) = 1 OR
Ref(Fml("_BullTrend"),-7) = 1 OR
Ref(Fml("_BullTrend"),-8) = 1 ,1,0)
ENDE
Anbei noch eine Grafik, wie man anhand des 3 grünen Pfeils (von rechts) sieht, hätte man eigentlich viel früher ausgestoppt werden müssen, MetaStock handelt jedoch erst auf den nächsten DSS exit hin.
Kann mir jemand helfen oder wenigstens sagen, ob sich derartiges überhaupt mit MetaStock testen lässt? Ach ja, habe MetaStock 6.52 EOD.
Thank you very much in advance,
Memphis Rain
Hallo,
kann mir wenigstens jemand sagen ob der Sachverhalt mit Metastock überhaupt möglich ist ?
Grüsse
Memphis Rain
Hallo,
ich kann mich bislang mit dem System noch nicht so ganz anfreunden, bevor ich mich aber dazu äussere, gib mir noch etwas Zeit ;)
Grundsätzlich wäre Deine Idee mit der Performance so umzusetzen:
Du kannst den letzten Kaufkurs wie folgt ermitteln:
qq:=ValueWhen(2,fml("Buy"),c);
Hast Du eine Long oder short Position: 1 oder -1 Multiplikator
Performance in %
(C-qq)/Div(qq,100) * LS Multiplikator
Diesen Performance Indikator müsstest Du dann im DSS auf wahr oder falsch abfragen.
Ob sich der Aufwand lohnt, weiß ich nicht, im ersten Ansatz scheinen mir die Parameter (6 und 3) viel zu kurzfristig zu sein und der RMI mit 10,15 gefällt mir so nicht so recht. Aber wie gesagt, bislang nur erste Impressionen.
Hallo MetaTrader,
Danke für den Tip, oben in der ersten Formel berechne ich doch (eigentlich ?) bereits die Performance, mit _LastUp und _LastDn ermittle ich über den "_active", welche Position "in" ist. Soweit die Theorie, bloß irgendwie haut das nicht hin (?)
Was den RMI(C,10,15) angeht, so wollte ich damit nur das "trendkonforme" Handeln deutlich machen, man kann aber auch alternativ einen länger gestrickten DSS-Blau auf einen 10er Kama berechnen und hat den selben Effekt, nur mit höherer und eindeutiger Signalausprägung - ich wollte halt nur auf die EXIT Problematik hinaus, der Rest ist wohl Geschmackssache. Laut Backtest in Metastock kommt man aber mit dem DSS gut zurecht.
Was eben stört ist dieses zu frühe zurückschnappen der DSS, die einem in Seitwärtsmärkten so gut gefällt wird im Trend zum Albtraum und genau deswegen soll dann der switch erfolgen. Mich würde eben das rein mechnische Ergebnis interessieren, diskretionär lief das nämlich recht gut.
Grüsse
Memphis
(Grafik mit DSSKAMA und Test folgt heut abend)
Hallo MetaTrader,
hier die Grafiken für den "prozyklisch agierenden" DSS in Richtung DSSBlauonKAMA:
Der Report für den "prozyklisch" agierenden DSS in favor of DSSBlau on KAMA:
Im Vergleich dazu:
Der "prozyklisch agierende" DSS in favor of RMI:
Der Report für den DSS in favor of RMI:
Sorry für die zusätzlichen threads, aber ich weiss nicht wie man mit dem "von der Platte" hier ablegen mehrere Grafiken gleichzeitig hier reinstellt.
Wie Du siehst stimme ich Dir in Sachen RMI zu, wollte es nur nicht zu kompliziert machen. Naja, also ein Teil der von mir geposteten Formeln ist falsch, siehe 1. Formel, da heisst es am Schluss: Mov(CycleMode...) et cetera - der MA ist hier natürlich überflüssig. Ansonsten komme ich mit Deinem Ansatz nicht weiter? Warum ValueWhen(2 !? - Wir wollen doch die Performance ab dem ersten auftreten messen, nicht dem zweiten? Die letzte Formel ganz oben von mir zeigt ja auch nur einen Ansatz, der zeigen "könnte", ob ein alternativer EXIT gegeben ist oder nicht, eigentlich bräuchte ich "nur" was elegantes dafür.
Da komme ich irgendwie nicht weiter, vorausgesetzt der Rest ist richtig. Hast Du eine Idee?
Grüsse
Memphis
Hallo,
ich bin mir inzwischen nicht ganz sicher, ober ich die Problematik korrekt dargestellt habe? Mit MetaTraders Ansatz prüft man, ob man long oder short ist und die Performance inzwischen größer x Prozent ist. Hierbei kann es aber zu einem Problem kommen: Auf einem einzelnen Bar tritt dieser Fall ein, auf dem nächsten folgt aber die Gegenreaktion und die Performance ist zwischenzeitlich wieder kleiner als 3 Prozent. Dann könnte theoretisch, genügend "Knackigkeit" im Move vorausgesetzt, der DSS ein Gegensignal liefern, welches dann befolgt wird.
Das ist genau das, worauf ich hinaus will: War die Performance an einem Bar innerhalb eines kurzen DSS Zyklus > 3 Prozent (Long oder Short), dann ignoriere das nächste Gegensignal und trade den MA crossover, auch wenn die Performance inzwischen wieder kleiner als drei Prozent ist. Das ganze ist als eine Art integrierter break out angedacht, nur halt mit Buchgewinn finanziert, deswegen noch mal meine Frage: Ist das mit Metastock überhaupt möglich?
Grüsse
Memphis Rain