Rock
Mitglied seit 11 Jahre 2 Monate

Metastock 7.03 EOD: Trailingstop einzeichnen ?

Hallo,

ich habe einen Trailing stop für Shortterm-Systeme entwickelt mit folgender Logik (Beispiel Long):

Anfangswert ist Low des Einstiegstages minus ein ATR-Multiple. An jedem folgenden Tag wird der Stop um den Betrag erhöht um den das Low größer dem Low das Vortages ist. Ist das Low kleiner als das des Vortages bleibt der Stop gleich.

Umgesetzt habe ich das so als Custom Indicator: (Long only System Beispiel)

atrs := 4;
atrmult:= 0.25;
longentry := Cross(RSI(5),20);
stop:=If(BarsSince(longentry)=0,L-ATR(atrs)*atrmult,If(L>Ref(L,-1),PREV+L-Ref(L,-1),PREV));
stop

Problem:

Wenn ich die Stopkurve in den Chart einzeichnen lasse und der Stop ausgelöst wurde, wird die Stoplinie weiter in die Höhe gezeichnet und wenn längere Zeit kein trade stattfand verzerrt sie das ganze Chartbild. Stoplinie liegt dann z.B. bei 10.000, Dax bei 3.000.

Lässt sich das irgendwie vermeiden? Am besten wäre es natürlich, wenn der Indikator gar nicht gezeichnet würde wenn keine Position besteht, aber ich fürchte das ist nicht möglich.

Bei einem stop and reverse System kann ich mir eine Lösung vorstellen, aber wenn das System auch flat sein kann, was dann?

Ich arbeite mit Metastock EOD V 7.03.

Vorab vielen Dank für eine Antwort.

Gruß Rock

Geschrieben von Rock am
kuhaku
Mitglied seit 11 Jahre 2 Monate

Hallo Rock,

ich will Dir mal meine Lösung vorstellen. Vielleicht hilft sie Dir ja.

Gebe im IndicatorBuilder nachfolgende Formel ein:

{TrailingStop}
{Trade entered today?}
LE1:=Ref(Fml("Chr-SwingSystemLong"),-1)=0 AND Fml("Chr-SwingSystemLong")>0;

{Trade older than today?}
LE2:=Ref(Fml("Chr-SwingSystemLong"),-1)>1;

{Stop Price}
StopPrice:= Ref(LLV(L,2),-1) - 0.25*Ref(Mov(ATR(1),25,S),-1);

Stop:=
{Stop Price on starting day}
If(LE1=1 , StopPrice,
{Stop Price on following days}
If(LE2=1 ,
If(StopPrice PREV , PREV , StopPrice),
{Stop Price on days out of market}
StopPrice));

Stop

Die Fml("Chr-SwingSystemLong") kann irgend ein Longsignal sein, dass Dir im IndicatorBuilder eine BinaryWave gibt (Long 1 oder größer, OutofMarket=0). Ich habe bei mir beim Longsignal gleich den Entrypreis in der Kurve stehen.

Das Problem einer Stop-Anzeige wenn man gar nicht im Markt ist, habe ich bislang noch nicht lösen können. Wäre etwas für Metatrader ;-) Aber wenn mir ein Stop anzeigt wir obwohl ich flat bin, ist ja auch nicht so schlimm. Die Stopps lasse ich mir als in Color/Style bei Style die letzte Option mit den Punkten und bei Weight die Dritte von oben anzeigen. So kann man sie gut sehen und hat nicht noch eine Linie im Chart. Auch ist es deutlich als ausgelöster Stop zu erkennen, wenn der Punkt im Preisbalken zu liegen kommt.

Gruss kuhaku

metatrader
Mitglied seit 11 Jahre 2 Monate

Hallo,

ich habe Deine Idee (RSI + ATR Stop) einmal als Handelssystem formuliert.

RSIPer := Input("RSI Perioden: ",3,30,5);
RSISell := Input("RSI Sell Linie: ",60,90,70);
RSIBuy := Input("RSI Buy Linie: ",10,40,30);
HLPer := Input("Perioden für Hoch und Tief:", 1,20,1);

atrs := Input("ATR Perioden: ",1,20,4);
atrmult:= Input("ATR Muliplyer: ",0.1,5,0.25);

{Deine Handels Signale}
EL:=Cross(RSI(RSIPer),RSIBuy);
ES:=Cross(RSISell,RSI(RSIPer));

{ATR Stops}
ATRLong:= LLV(L,HLPer)-ATR(atrs)*atrmult;
ATRShort:=HHV(H,HLPer)+ATR(atrs)*atrmult;

{Exit über Stopp}
CS:=If((BarsSince(EL)>BarsSince(ES)),C>Ref(ATRShort,-1),0);
CL:=If((BarsSince(EL)<BarsSince(ES)),C<Ref(ATRLong,-1),0);

State:=If(Cum(1)=1,0,If(EL,1,If(ES,-1,If((CL AND PREV=1) OR (CS AND PREV=-1),0,PREV))));
State

Durch ändern von State in ATRLong;ATRShort bzw ref(ATRLong,-1);ref(ATRShort,-1) kannst du den ATR einzeichnen.

Mit Deinen Paramtern taugt das System nichts (freundliche Formulierung), daher habe ich das System durch Input Parameter etwas flexibilisert.

Viel Spaß beim Spielen

Rock
Mitglied seit 11 Jahre 2 Monate

@ kuhaku

Vielen Dank, ich sehe mir das mal näher an!

Gruß Rock

Rock
Mitglied seit 11 Jahre 2 Monate

Hallo, Kuhaku!

Ich habe deine Formel mal ausprobiert.

Du sagtest ja: Ich habe bei mir beim Longsignal gleich den Entrypreis in der Kurve stehen. Wenn ich es richtig verstehe, sollte in dem Indikator der das Signal liefert, z.B. sowas stehen:

(Bsp. GD30 Signal bei close crossing oder GD30 höher als vor 2 Tagen)

{"Chr-SwingSystemLong"}
pds:=30;
sig:=Cross(C,Mov(C,pds,S))
OR
Cross(Mov(C,pds,S),Ref(Mov(C,pds,S),-2));
If(sig,ValueWhen(1,sig,C),0)

Was mich jetzt wundert: Wenn ich deinen Stop zeichnen lasse, ist, daß der Stopkurs gelegentlich auch niedriger wird während eine Position besteht, eine Sache die ich mit meiner Konstruktion vermeiden wollte.

Ist das Absicht?

Gruß Rock

kuhaku
Mitglied seit 11 Jahre 2 Monate

@ Rock,

Du hast recht, da fehlt etwas.

Schaue Dir mal dies an, das ich nur zur Darstellung mal mit einem einfachen Cross-System versehen habe. Hier geht der Stop nach dem Long-Entry mit.

Es ist mir jedoch im Zusammenhang mit dieser Formel noch nicht gelungen, den Stop automatisch als Punkte unter den Chart zu legen. Es ist nicht sonderlich glücklich den Stopkurs obenliegend zu haben. Eine Trennung aus dem eigentlichen System bei Abfrage der EntryPriceCond aus dem LongSystem habe ich auch noch nicht geschafft. Vielleicht hast Du ja einen Ansatz?

Gruss kuhaku

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.
Fragen?

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

Jetzt registrieren

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