Metastock: Safe-Zone-Stop von Dr. Alexander Elder
Hallo,
ich suche nach der Indikator-Formel (Metastock EoD) für den "Safe-Zone-Stop" von Alex Elder, beschrieben in Elder's zweitem Buch "Come Into My Trading Room".
Der "Safe-Zone-Stop" ist eine Trailing-Stop-Technik, in etwa ähnlich dem Chandelier-Stop.
Mein Problem:
Auf der Seite: http://www.metastocktools.com/ gibt es zwar die SafeZone-Formel, nur enthält sie wahrscheinlich einen Programmierfehler. Ich habe zu Fuß die Stops nachgerechnet, mit Hilfe Elder's Buch, die im Buch sind einleuchtend und nachvollziehbar, die Stops von der o.g. Seite stimmen nicht.
Weiss jemand wie ich an die Formel rankommen könnte?
Man könnte zwar die Elder-Disc für Metastock bestellen, nur kostet die 200$ und die meisten Formeln daraus habe ich schon, mit Ausnahme natürlich SafeZone. Daß mir Equis eine Formel schreibt ist unwahrscheinlich, da sie mit Elder eine Abmachung haben und seine Elder-Disc auch vertreiben.
Vielleicht könnte der Metatrader ein Auge drauf werfen?
Bitte um Tipps.
Bartek
Hallo Bartek,
Darf ich dich bitten, zum Wohle des Forums ein wenig mehr zu tun?
1.) Poste doch bitte Text und Formeln zum Safe Zone Stop(das Buch habe ich ausnahmsweise nicht, soll ja mal vorkommen). ;-)
2.) Normalerweise unterlaufen Jose '-) eher selten Fehler. Was gibst du denn als Inputs ein?
Danke für deine Mühe!
Gruss,
Martin
@Bartek,
den weisen Worten von Martin ist nichts hinzuzufügen, denn mir fehlen leider auch die exakten Formeln vom Safe Zone Stop ;)
Praktikus:
When the trend is up, we can define noise as that part of each day's range that protrudes above the previous day's high. SafeZone measures market noise and places stops at a multiple of noise level away from the market.
You need to choose the length of the lookback period for measuring noise level. iT HAS TO BE LONG ENOUGH TO TRACK RECENT BAHAVIOUR BUT SHORT ENOUGH TO BE RELEVANT FOR CURRENT TRADING. A period of 10 to 20 days works well.
If the trend is up, mark all downside penetrations during the lookback period, add their depths, and divide the sum by the number of penetrations. This gives you the Avaerage Downside Penetration for the selected lookback period.It reflects the average level of noise in the current uptrend. Placing your stop any closer would be self defeating. We want to place our stops further away from the market than the average level of noise. Multiply the Average Downside Penetration by a coefficient, starting with two, but experiment with higher numbers. Substract the result from yesterday's low, and place your sztop there. If todays low is lower than yesterday's, do not move your stop lower since we are only allowed to raise stops on long positions, not lower them.
Ich benutzte die Formel von http://www.metastocktools.com
Meine Einstellungen waren:
Safe Zone coefficient: 2.5
Lookback period: 10
Ich kam mit der Formel aus dem Buch auf andere Werte als die in Metastock.
Viele Grüsse
Bartek
Korrektur:
When the trend is up, we can define noise as that part of each day's range that protrudes above the previous day's LOW. SafeZone measures market noise and places stops at a multiple of noise level away from the market.
Bartek
@Bartek
Danke für den Text. Nach dem ersten durchlesen ist mir aufgefallen dass Jose ein EMA zur Kalkulation verwendet. Ich vermute mal dass du eventuell zum nachrechnen einen SMA verwendest. Das würde leichte Differenzen erklären. ;-)
Gruss,
Martin
Hi Martin,
in der Formel von Elder wird doch kein EMA erwähnt, lediglich der 22-EMA zur Identifikation des Trends. Interessant ist bei Jose's Formel: ob man bei "Trend EMA periods" 20 eingibt oder 100, es ändert nichts am SafeZone-Stop.
Du kannst es auch schnell selbst überprüfen in Metastock mit Jose's Formel.
Ein Nachtrag zu Elders Formel:
etwas weiter im Buch fasst er die Regeln nochmal zusammen:
Place your stop for today at a multiple of yesterday's low. Multiply YESTERDAY'S Average Downside Penetration by a selected coefficient, starting at 2 but testing as high as 3, and substract the result from yesterday's low to obtain today's stop.
Elder hat auch eine Arbeitstabelle im Buch für SafeZone beigefügt. Die Ergebnisse in der Tabelle sind für mich nachvollziehbar. Ich habe mit diesen Formeln, mit Bestätigung aus der Tabelle, Jose's SafeZone-Stops nachgerechnet: für mich nicht nachvollziehbare Stops.
Programmierfehler? Sieht so aus.
Gruß
Bartek
@Bartek
Sorry für den Schnellschuss oben. Vergiss das ganz schnell wieder. Ich war schneller mit Schreiben als denken. Der EMA wird lediglich zur Bestimmung des Trends verwendet. ;-)
Wenn ich richtig lese, werden im ersten resp. dritten interessanterweise zwei Definitionen für 'Noise' gegeben. Gehen wir das anhand des Textes für einen Long Stop durch. Voraussetzung ist der Uptrend.
Variante 1: Noise
Erster Abschnitt:
Noise ist der Teil des Bars, der über dem letzten Low ist. Gaps werden keine berücksichtigt.
Variante 2: Noise
Dritter Abschnitt:
Noise ist der Teil des Bars, um den das Low unter dem letzten Low liegt. Diese Variante verwendet Jose.
Mit welche rechnest du?
Was aus deinem Text nicht genau hervorgeht, ist die ferner die Definition der Downside Penetrations. Joses Auslegung davon ist dass der EMA welcher zur Trend-Definition dient grösser als beim letzten Bar und das Low tiefer als beim letzten Bar ist.
DwSidePen:=Mov(C,pds,E)>Ref(Mov(C,pds,E),-1) AND L<Ref(L,-1);
Ansonsten kann ich an Joses Code keinen Fehler feststellen: weder einen logischen, noch einen mathematischen, noch einen im Code. Ich selbst würde den Stop anhand des Textes den du freundlicherweise eingestellt hast wie Jose lösen.
Gruss,
Martin
Martin,
"Variante 2: Noise
Dritter Abschnitt:
Noise ist der Teil des Bars, um den das Low unter dem letzten Low liegt. Diese Variante verwendet Jose. "
--> das ist auch meine Berechnungsart von Noise
Elders Definition der Downside Penetration:
"Test whether today's low is lower than yesterday's. It measures the depth of the downside penetration below the previous day's range."
Danke für Dein Engagement.
Gruß
Bartek
Hallo,
hier eine kleine Variation des Codes: Die obere Graphik ist von Jose, die untere der modifizierte Code.
coefficient:=Input("SafeZone coefficient",
0,10,2.5);
bkpds:=Input("Lookback periods",1,252,10);
pds:=Input("Trend EMA periods",2,252,21);
adv:=Input("plot: today's SafeZone=0, tomorrow's stop=1",0,1,0);
plot:=Input("plot: trailing stop=1, Long+Short=2, signals=3",1,3,2);
delay:=Input("Entry and Exit signal delay",
0,5,0);
{DSP:=If(L<Ref(L,-1), Ref(L,-1)-L,0); }
DSP:=If(Mov(C,pds,E)<Ref(Mov(C,pds,E),-1),If(L<Ref(L,-1), Ref(L,-1)-L-0.00001,0),0);
DwPenAvg:=Sum(DSP,bkpds)
/(Sum(If(dsp<>0,1,0),bkpds)+.000001);
StLong:=Ref(L-DwPenAvg*coefficient,-1);
StopLong:=If(C<PREV,StLong,Max(StLong,PREV));
{UPS:=If(H>Ref(H,-1),H-Ref(H,-1),0);}
UPS:=If(Mov(C,pds,E)>Ref(Mov(C,pds,E),-1),If(H>Ref(H,-1),H-Ref(H,-1)+0.00001,0),0);
UpPenAvg:=Sum(UPS,bkpds)
/(Sum(If(ups<>0,1,0),bkpds)+.000001);
StShort:=Ref(H+UpPenAvg*coefficient,-1);
StopShort:=If(C>PREV,StShort,Min(StShort,PREV));
In:=Cross(C,Ref(StopShort,-1));
Out:=Cross(Ref(StopLong,-1),C);
flag:=BarsSince(Cum(In+Out>-1)=1 OR In)
< BarsSince(Cum(In+Out>-1)=1 OR Out)
+(Cum(In)=1);
signals:=Ref((Cum(In)=1
AND Alert((Cum(In)=1)=0,2)
OR flag AND Alert(flag=0,2))
-(flag=0 AND Alert(flag,2)),-delay);
If(plot=1,Ref(If(flag=1,stopLong,stopShort),
-1+adv),If(plot=2,Ref(stopLong,-1+adv),0));
If(plot=1,Ref(If(flag=1,stopLong,stopShort),
-1+adv),If(plot=2,Ref(stopShort,-1+adv),
signals))