* Metastock: Trailing Stop mit Stop Loss (Chandelier + ATR)

Diesen wunderschönen Stop möchte ich niemandem vorenthalten. Lesern der Yahoo-Groups wird er bekannt vorkommen und falls er schon gepostet wurde bitte ich vielmals um Verzeihung. Aber dieser Stop ist eine tolle Kombination aus dem Chandelier-Exit von Chuck LeBeau und einer Volatilitäts-Komponente, dem ATR. Leider nicht aus meiner Feder, sondern von Richard Dale.

Erklärung, Screenshots und Downloads gibt es auf

http://www.tradernexus.com/advancedstop/advancedstop.html .

Das Beste zum Schluss: Richards DLL ist gratis.

Gruss, Martin

Geschrieben von praktikus am
Gast

Hallo,

wirklich eine tolle Sache!

Ich verstehe nur nicht, wie ich die stops mit anderen entry conditions (z.B. MA Crossover) automatischen verbinden kann. Muss ich für jeden entry manuell das Datum eingeben? Wie könnte man Systeme mit diesem stop backtesten? Ideen?

Beste Grüße,
redsnapper

metatrader
Mitglied seit
11 Jahre 11 Monate

Hi,

hier auf die Schnelle ein einfaches Beispiel:

Advanced Stop long
entry:=Cross(C,Mov(C,30,E));
initatr:=2;
trailatr:=2.5;
entryprice:=ValueWhen(1,entry,C);
ExtFml( "AdvancedStop.StopLong", entry,entryprice-initatr*ATR(10),0,H-trailatr*ATR(10),0,0,0,0)

Advanced Stop Short
entry:=Cross(Mov(C,30,E),C);
initatr:=2;
trailatr:=2.5;
entryprice:=ValueWhen(1,entry,C);
ExtFml( "AdvancedStop.StopShort", entry,entryprice+initatr*ATR(10),0,L+trailatr*ATR(10),0,0,0,0)

Advanced Stop
If(C>Mov(C,30,E),Fml("Advanced Stop Long"),Fml("Advanced Stop Short"))

Gast

Metatrader,

vielen Dank, Du hast mir sehr geholfen!

Gruß,
redsnapper

praktikus
Mitglied seit
11 Jahre 11 Monate

Thema: Programmierte Stops, Stop Loss, Trailing Stops"

Von: Hannes Am: 12.02.2004 16:41:13 Gelesen: 30

@ Metatrader und alle Anderen die's können

Ich schaffe es nicht einen Chandelier Stop so umzuprogrammieren, dass ein simpler Trailing Stop ohne ATR-Bezug entsteht.

Ich möchte die Eingabefläche (Tag-Monat-Jahr, Einstiegskurs) beibehalten, dann jedoch statt dem initatr den simplen Prozentsatz des Stop-Loss-Levels zum Einstiegszeitpunkt und statt dem trailatr die Differenz zum jeweiligen High/Low definieren.

Kann das funktionieren? Was mache ich falsch? Muss solch ein SL ganz anders programmiert werden?

lg Hannes

praktikus
Mitglied seit
11 Jahre 11 Monate

Hallo Hannes,

da du dich offensichtlich auf Richard Dales Stop beziehst habe ich deine Frage hierhingestellt damit alle den Zusammenhang haben.

Ohne die Formel getestet zu haben würde ich folgende Änderungen vornehmen:

entryday:=Input("Day of month",1,31,1);
entrymonth:=Input("Month",1,12,1);
entryyear:=Input("Year",1800,2020,2003);
entryprice:=Input("Entry Price (leave as zero for close of the day)",0,5000,0);
entryprice2 := If(entryprice>0,entryprice,C);
initprcnt:=Input("Initial stop Percent multiplier",0.1,6,2);
trailprcnt:=Input("Trailing stop Percent multiplier from High",0.1,6,2.5);
entryfulldate := (entryyear)+(entrymonth/12)+(entryday/365);
fulldate := Year()+Month()/12+DayOfMonth()/365;
entry:= entryfulldate > Ref(fulldate,-1) AND entryfulldate <= fulldate;
ExtFml( "AdvancedStop.StopLong", entry,entryprice2-(initprcnt*entryprice2/100),0,H-(trailprcnt*H/100),0,0,0,0);

Gruss,
Martin

Hannes
Mitglied seit
11 Jahre 11 Monate

Vielen herzlichen Dank praktikus ! Ich wundere mich, dass meine Suche unter den Begriffen Trailing Stop und Stop Loss nicht auf diesen Thread verwiesen hat.

Ich werde in der nächsten Zeit deinen Vorschlag testen und falls ich auch noch etwas Neues beitragen kann, komme ich in diesem Thread darauf zurück.

Beste Grüße
Hannes

Hannes
Mitglied seit
11 Jahre 11 Monate

@ praktikus

Der Stop Long hat geklappt, ich habe kleine Veränderungen vorgenommen; mögliche %-Range erweitert, statt 2003 das heurige Jahr als fixe Vorgabe und das Opening statt des Closing-Preises als default value eingestellt.

Für eine Änderung bin ich jedoch nicht 'talentiert' genug: Ich würde gerne einen Stop Short nach dem selben Muster schreiben, doch es klappt nie. Nach meinem Erachten müssen die Zeilen 5,7,10 und 11 verändert werden, da sich ein Anstieg des Kurses negativ auswirken würde und der Trailing Short Stop sich am Low orientieren muss.

Irgendwo habe ich jedoch einen Fehler, den ich nicht lösen kann. Kannst du mir nochmal einen Tipp geben ?

Vielen Dank

Hannes

praktikus
Mitglied seit
11 Jahre 11 Monate

@ Hannes

entryday:=Input("Day of month",1,31,1);
entrymonth:=Input("Month",1,12,1);
entryyear:=Input("Year",1800,2020,2004);
entryprice:=Input("Entry Price (leave as zero for close of the day)",0,5000,0);
entryprice2 := If(entryprice>0,entryprice,C);
initprcnt:=Input("Initial stop Percent multiplier",0.1,6,2);
trailprcnt:=Input("Trailing stop Percent multiplier from High",0.1,6,2.5);
entryfulldate := (entryyear)+(entrymonth/12)+(entryday/365);
fulldate := Year()+Month()/12+DayOfMonth()/365;
entry:= entryfulldate > Ref(fulldate,-1) AND entryfulldate <= fulldate;
ExtFml( "AdvancedStop.StopShort", entry,entryprice2+(initprcnt*entryprice2/100),0,L+(trailprcnt*L/100),0,0,0,0);

Das dürfte dein Problem lösen, deine Änderungen und Modifikationen (Open statt Close, % etc.) kannst du nun selbst wieder anpassen. :-)

Gruss,
Martin

praktikus
Mitglied seit
11 Jahre 11 Monate

Ein kleiner Schönheitsfehler ist in der Formel für den Stop Short. Ohne Einfluss auf die Funktion aber das Auge isst ja bekanntlich mit. ;-)

entryday:=Input("Day of month",1,31,1);
entrymonth:=Input("Month",1,12,1);
entryyear:=Input("Year",1800,2020,2004);
entryprice:=Input("Entry Price (leave as zero for close of the day)",0,5000,0);
entryprice2 := If(entryprice>0,entryprice,C);
initprcnt:=Input("Initial stop Percent multiplier",0.1,6,2);
trailprcnt:=Input("Trailing stop Percent multiplier from Low",0.1,6,2.5);
entryfulldate := (entryyear)+(entrymonth/12)+(entryday/365);
fulldate := Year()+Month()/12+DayOfMonth()/365;
entry:= entryfulldate > Ref(fulldate,-1) AND entryfulldate <= fulldate;
ExtFml( "AdvancedStop.StopShort", entry,entryprice2+(initprcnt*entryprice2/100),0,L+(trailprcnt*L/100),0,0,0,0);

So macht das ganze sprachlich und fürs Verständnis mehr Sinn.

Gruss,
Martin

praktikus
Mitglied seit
11 Jahre 11 Monate

Hallo Hannes,

um dir ein Beispiel zu geben wie man die Geschichte in einem Indikator für Long und Short unterbringt:

tradedirection:=Input("Long = 1, Short = 0",0,1,1);
entryday:=Input("Day of month",1,31,1);
entrymonth:=Input("Month (year=2004)",1,12,1);
entryyear:=2004;
entryprice:=Input("Entry Price (leave as zero for close of the day)",0,5000,0);
entryprice2 := If(entryprice>0,entryprice,C);
initprcnt:=Input("Initial stop Percent multiplier",0.1,6,2);
trailprcnt:=Input("Trailing stop Percent multiplier",0.1,6,2.5);
{From High for long trades, from Low for short trades}
entryfulldate := (entryyear)+(entrymonth/12)+(entryday/365);
fulldate := Year()+Month()/12+DayOfMonth()/365;
entry:= entryfulldate > Ref(fulldate,-1) AND entryfulldate <= fulldate;
If(tradedirection = 1,
ExtFml( "AdvancedStop.StopLong", entry,entryprice2-(initprcnt*entryprice2/100),0,H-(trailprcnt*H/100),0,0,0,0),
ExtFml( "AdvancedStop.StopShort", entry,entryprice2+(initprcnt*entryprice2/100),0,L+(trailprcnt*L/100),0,0,0,0));

Die Input-Abfrage nach dem Jahr entfällt da MS nur maximal 6 Inputs zulässt. Deshalb ist das Jahr mit entryyear:=2004; fix definiert, kann aber in der Formel geändert werden.

Ganz am Schluss folgt nach If(tradedirection = 1, zuerst die Formel für den Stop Long, danach diejenige für den Stop Short. So sollte es dir vermutlich leichter fallen, die Unterschiede zu sehen.

Gruss,
Martin

Hannes
Mitglied seit
11 Jahre 11 Monate

@ praktikus

Vielen Dank Martin,

jetzt bin ich einen großen Schritt weiter.

Liebe Grüße
Hannes

MK-Trading
Mitglied seit
11 Jahre 11 Monate

Hallo,

habe es auch runtergeladen und installiert.

Aber kann mir jemand verraten was ATR bedeutet. Ich komme einfach nicht darauf.

Danke.

MK-Trading
Mitglied seit
11 Jahre 11 Monate

Dann habe ich noch eine Frage: Besteht die Möglichkeit, es auch Intraday zu nutzen?

Wenn man z.B. diese Formel im 60 Min Dax Chart anwenden möchte und am Tag X um 10.30 Uhr ein Trade eingeht, daß er dann ab dem Datum zählt.

Oder noch besser wäre, wenn das Automatisch passieren würde. Das heißt, wenn ich im PS 2 Day Range System ein Kaufsignal bekomme, daß es dann automatisch diese Formel mit in den Chart einzeichnet.

Eigentlich müsste man doch zu dieser Bedingung (Kaufsignal) einfach die Formel dazutun, oder irre ich mich ?

Ich habe immer Schwierigkeiten mit dem Aussteigen, daher interessiert es mich sehr, denn so könnte man diese "schwere" Entscheidung der Formel überlassen.

Bemerkung: PS2Day Range ist ein Add On von Equis. Mit in dem Paket Performance Systems enthalten.

Danke für die Hilfe.

praktikus
Mitglied seit
11 Jahre 11 Monate

@ daytradingkoeln.de

auf die Idee in deinem Metastock-Handbuch oder im Helpfile dies zu suchen bist du wohl noch nicht gekommen. ;-)

Gruss,
Martin

he96
Mitglied seit
11 Jahre 11 Monate

"ATR "average true range""

gruss hans

praktikus
Mitglied seit
11 Jahre 11 Monate

@ daytradingkoeln

Deine Frage vom 13.03.04 14:25 wurde in diesem Thread von Metatrader bereits am 13.11.03 00:56 beantwortet. Offenbar steht Metatrader mit übernatürlichen Kräften im Bunde. ;-)

Metatraders Formel ersetzt den Teil zur Datumsangabe durch Mein Entrysignal Long,Mein Entrysignal Short usw. und ist somit in jedem Chart unabhängig vom Timeframe gültig.

Gruss,
Martin

MK-Trading
Mitglied seit
11 Jahre 11 Monate

Hi,

ich habe mir das angesehen, was metatrader geschrieben hat. Dies trifft jedoch für den Fall zu, welches als Variable Entry definiert ist.

Ich bekomme ein Kaufsignal wenn folgendes eintrifft:

d:=If(C>Ref(Max(H,Ref(H,-1)),-1),Min(L,Ref(L,-1)),If(CRef(state,-1)

Wie kann ich das ganze jetzt in die Variable "Entry" reinpacken ?

Könnte ich z.B. den ganzen Befehl für einen Kaufsignal in eine Funktion reinpacken, z.b. "Kaufsignal" und dann später an der Stelle die Variable entry: Fml("Kaufsignal") dann so definieren ?

MK-Trading
Mitglied seit
11 Jahre 11 Monate

Ich habe es mal ausprobiert. Ich glaube es hat funktioniert.

Wie kann ich nun das so machen, daß die Linie nicht mehr weiter gezeichnet wird, wenn der Stop ausgelöst worden ist und dann erst wieder anfängt, wenn ein neues Kaufsignal generiert wird.

Ich möchte dann nämlich beide Funktionen in dem Chart laufen lassen, ohne das es irgendwie chaotisch aussieht.

Danke.

MK-Trading
Mitglied seit
11 Jahre 11 Monate

Ich habe mal beide Stops in dem ein und selben Chart angewandt. Eine Abbildung füge ich bei.

Die Roten Kerzen sind ShortPhasen und die Grünen Kerzen Longphasen. Einstieg ist jeweils an den Pfeilen und ab da beginnt auch die Linie für den Stop. Die Grüne Linie ist für Advanced Stop Long und die dunkel Rote für Advanced Stop Short.

Wenn aber die Aktie von der Long in die Short Phase wechselt, dann schreibt die Linie für Advanced Stop Long weiter.

Was ich wissen wollte ist, wie ich dann in dieser Phase die Linie unterbrechen kann. Also praktisch wenn Funktion "Kaufsignal" war, dann Advanced Stop Long, ansonsten Advanced Stop Short.

Nur weiß ich nicht wie ich das jetzt einfügen kann. Wenn dann müsste ich es in die Funktion der Stoplinie einbauen.

Danke für die Unterstützung.

MK-Trading
Mitglied seit
11 Jahre 11 Monate

Hier das Bild:

metatrader
Mitglied seit
11 Jahre 11 Monate

Hallo,

ich denke, Du hast das System incl. Stopp verkehrt programmiert, in MS sollte es wie folgt aussehen (den Expert müsstet Du mit diesen Formeln dann auch hinbekommen):

SysStat 3 Bars
initatr:=2;
trailatr:=2.5;
d:=If(C>Ref(Max(H,Ref(H,-1)),-1),Min(L,Ref(L,-1)),If(C<Ref(Min(L,Ref(L,-1)),-1),Max(H,Ref(H,-1)),PREV));
a:=Cross(C,d);
b:=Cross(d,C);
state:=If(BarsSince(a)<BarsSince(b),1,0);
EL:= state>Ref(state,-1);
ES:=state<Ref(state,-1);
ELP:=ValueWhen(1,EL,C);
ESP:=ValueWhen(1,ES,C);
STPL:=ExtFml( "AdvancedStop.StopLong", EL,ELP-initatr*ATR(10),0,H-trailatr*ATR(10),0,0,0,0);
CL:= (C<STPL) OR ES;
STPS:=ExtFml( "AdvancedStop.StopShort", ES,ESP +initatr*ATR(10),0,L+trailatr*ATR(10),0,0,0,0);
CS:=(C>STPS) OR EL;
SysStat:=If(Cum(1)=1,0,If(EL,1,If(ES,-1,If((CL AND PREV=1) OR (CS AND PREV=-1),0,PREV))));
SysStat

SysStat 3 Bars Advanced Stop
If(Fml("SysStat 3 Bars")=1,FmlVar("SysStat 3 Bars","STPL"),If(Fml("SysStat 3 Bars")=-1,FmlVar("SysStat 3 Bars","STPS"),PREV))

zweioeltanks
Mitglied seit
11 Jahre 11 Monate

Hallo,

scheinbar ist die tradernexus Seite zur Zeit nicht richtig zu erreichen. Falls jemand noch den Installer für das Stop-Plugin für MetaStock 8 hat, wäre ich sehr dankbar wenn er es mir zusenden könnte...

Gruss,
~Lars

metatrader
Mitglied seit
11 Jahre 11 Monate

Hallo,

ich habe die Datei gerade spaßeshalber noch einmal heruntergeladen, klappt ohne Probleme, hier der direkte Link

MS Vers. 8/9: http://www.tradernexus.com/advancedstop/advancedstop.v1.1.ms8.exe
MS Vers. 7: http://www.tradernexus.com/advancedstop/advancedstop.v1.1.ms7.exe

zweioeltanks
Mitglied seit
11 Jahre 11 Monate

Hallo,

nun geht die Seite bei mir auch wieder, war scheinbar nur ein temporäres Problem. Schönen Dank auf jeden Fall.

Rückrufservice
Beschreiben Sie bitte Ihr Anliegen, damit wir uns auf den Rückruf vorbereiten können.
Ja, ich habe die Datenschutzerklärung zur Kenntnis genommen und willige ein, dass die von mir angegebenen Daten inklusive der Kontaktdaten zwecks Bearbeitung der Anfrage und für den Fall von Anschlussfragen elektronisch erhoben und gespeichert werden. Meine Daten werden dabei nur streng zweckgebunden zur Bearbeitung meiner Anfrage genutzt und nicht ohne Einwilligung weitergegeben. Diese Einwilligung kann jederzeit mit Wirkung für die Zukunft widerrufen werden.
Help?

Sie haben Fragen zu ZMP Live? Unser Team steht gerne hilfsbereit zu Ihrer Verfügung. Senden Sie uns gerne eine Nachricht:

Es gilt unsere Datenschutzerklärung

Register now

Jetzt registrieren und ZMP Live+ 14 Tage kostenlos testen!
  • Dauerhaft kostenfrei
  • Keine Zahlungsinformationen erforderlich