Metastock 10: Indikator von x nach y
Ich habe einen Stop geschrieben, der jedoch immer über den ganzen Chart angezeigt wird. Wie schaffe ich es, dass er nur von Tag x (erfüllte Bedingung für einen Kauf) bis Tag y (der Tag, an dem der Stop aktiviert wird plus 5 Tage lang unverändert der Ausstiegswert) angezeigt wird?
Habe das mit Teilen der Formel für den Chandelier Stop versucht, doch "entryfulldate" ist "not a recognozed name" für mein System.
Übrigens werden seit dem Update auf Metastock 10 einige Indikatoren (auch alle Chandelier Stops) in den Charts nicht mehr richtig angezeigt.
Vielen Dank für Hilfe
Hannes
Also ichhab lange nicht mehr mit Metastock gearbeitet, aber vielleicht wenigstens als Prinzipskizze:
buy := buycondition;
Stoplevel := ......;
Sell := cross(L, Stoplevel);
intrade := barssince(buy) < barssince(Sell);
intrade*stoplevel; {plottet Stoplevel nur während des Trades (hoffentlich)}
@ gautama2 [#2]
Sell := cross(stoplevel, L);
@ Hannes [#1]
Schau mal hier "Metastock: Indikator programmieren".
http://www.terminmarktwelt.de/cgi-bin/nforum.pl?ST=11640&CP=0&F=47
Hier wurde auch ein bestimmter "Start" und ein bestimmtes "Ende" adressiert. Wenn diese Datenpunkte richtig programmiert sind, kannst Du deine Variablen "dranhängen".
@ select [#4]
Die Codes http://www.terminmarktwelt.de/cgi-bin/tmw-forum.pl?ST=7620&CP=0&F=NQMN
Danke für die Hilfe!
@ Hannes [#1]
Alle Indikatoren aus den älteren MetaStock Versionen funktionieren auch in der neuen Version, es sei denn, dass benötigte DLL's oder Funktionen nicht (mehr) vorhanden sind.
Anbei ein Beispiel für einen Indikator, der nür über einen bestimmten Zeitraum gezeichnet wird:
TF:=Input("1=hour 2=day 3=week 4=month 5=year ",1,5,2);
NW:=If(TF=1,ROC(Minute(),1,$)<0,If(TF=2,ROC(Hour(),1,$)<0, If(TF=3,ROC(DayOfWeek(),1,$)<0,If(TF=4,ROC(DayOfMonth(),1,$)<0,ROC(Month(),1,$)<0))));
A1:=Cum(1);
A2:=LastValue(A1-BarsSince(NW>0));
LastHigh:=ValueWhen(1,Nw,Ref(HighestSince(1,Nw,H),-1));
LastLow:=ValueWhen(1,Nw,Ref(LowestSince(1,Nw,L),-1));
LastOpen:=If(nw,O,ValueWhen(2,nw,O));
LastClose := If(nw,C,ValueWhen(1,a1-a2=-1,C));
HL4:= (LastHigh-LastLow)*1.1/2+LastClose;
HL3:= (LastHigh-LastLow)*1.1/4+LastClose;
HL2:= (LastHigh-LastLow)*1.1/6+LastClose;
HL1:= (LastHigh-LastLow)*1.1/12+LastClose;
LL1:= LastClose-(LastHigh-LOW)*1.1/12;
LL2:= LastClose-(LastHigh-LOW)*1.1/6;
LL3:= LastClose-(LastHigh-LOW)*1.1/4;
LL4:= LastClose-(LastHigh-LOW)*1.1/2;
If(A1<A2,BarsSince(A1>=A2),LastValue(HL4));
If(A1<A2,BarsSince(A1>=A2),LastValue(HL3));
If(A1<A2,BarsSince(A1>=A2),LastValue(HL2));
If(A1<A2,BarsSince(A1>=A2),LastValue(HL1));
If(A1<A2,BarsSince(A1>=A2),LastValue(LL4));
If(A1<A2,BarsSince(A1>=A2),LastValue(LL3));
If(A1<A2,BarsSince(A1>=A2),LastValue(LL2));
If(A1<A2,BarsSince(A1>=A2),LastValue(LL1))
Lieber Metatrader,
ich würde gerne folgende Logik in MetastockFormelsprache übersetzen:
Auf EOD Basis:
Wenn der Stop-Indikator das Low von unten kreuzt (bzw. das Low des Tages unter dem Stop-Indikator liegt, dann wird dieser Wert des Stop-Indikators beim Kreuzen noch drei Tage unverändert angezeigt, wenn nicht, dann der jeweils aktuelle, jeden Tag kalkulierte Wert des Stop-Indikators. Klingt einfach - ist es das aber auch ?
if(L=<(Fml"Stop"),drei Tage letzter Wert der Fml"Stop",Fml"Stop")
Bezüglich der DDLs:
Ich habe die DDLs für die Chandelier Stops von Trader Nexus nach dem Update zu Metastock 10.1 neu heruntergeladen (weil das Problem auftrat), aber der Long Stop wird weiterhin nicht durch einen Tiefwert des Kurses ausgelöst, sondern rast immer zu einem Tageshigh.
Jetzt schnitze ich mir meinen eigenen Stop zusammen, doch da würde ich auch gerne gleich das "Problem" mit dem erwünschten Verschwinden das Stops 3 Tage nach seiner Exekution lösen.
Liebe Grüße
Hannes