Metastock Formel: Meyers Parabolic Sar
Gibt es eine Metastock Formel für den Parabolic SAR in Modifizierung nach Meyers? So wie hier beschrieben wurde:
http://www.nrcm.de/pdf/meyersparabolicsar.pdf
Hat jemand versucht "The Five Parameter Parabolic Noise Filter System" nach Meyers für MS zu programmieren?
http://www.meyersanalytics.com/parabxot.htm
Welches Ergebnis?
mfG
J.
Submitted by Anonymous (not verified)
on
"Gibt es eine MS Formel für den Parabolic SAR in Modifizierung nach Meyers?"
Ich würde auch die "geheime Formel" gebrauchen. :-)
Im Link ab Seite 11 ist auch ein Bericht zufinden.
http://warrants.bnpparibas.com/de/doc/wz_04_01.pdf
Gruß select
Bescheidene Frage an metatrader:
Wie sieht es aus mit dem Meyer Parabolic?
Ist dieser in Deinem Metastock Arsenal vorhanden?
Gruß
Williams
@Williams,
die genaue Formel kann ich dir nicht geben, hier musst du wohl oder übel das System von Meyers für 199$ kaufen.
Anbei ein Lösungsvorschlag, wie man den SAR dürch Einbeziehung eines Stopps in stärkeren Trendphasen etwas "entschärfen" kann. Zunächst den Indikator anlegen, danach den Expert. Der Indikator verwendet vier verschiedene Stopps, 4 ist eher langfristig, 1 eher kurzfristig.
Indikator: Sar System
Val:=Input("Stop Val1=1 Val2=2 Val3=3 Val4=4",1,4,4);
SarStep:=Input("Sar Step",.01,.2,.1);
SarMax:=.02;
SarLong:=BarsSince(Cross(SAR(SarStep,SarMax),H))>0;
SarShort:=BarsSince(Cross(L,SAR(SarStep,SarMax)))>0;
RWH:=(H-Ref(L,-30))/(ATR(30)*Sqrt(30));
RWL:=(Ref(H,-30)-L)/(ATR(30)*Sqrt(30));
Pk:=Mov((RWH-RWL),3,W);
AVTR:=Mov(HHV(H,2) - LLV(L,2),20, S);
SD:=Stdev(HHV(H,2) - LLV(L,2),20);
Stp := If(val=1,If(Pk>0,HHV(H-AVTR,20),LLV(L+AVTR,20)),If(val=2,If(Pk>0,HHV(H-AVTR-SD,20),LLV(L+AVTR+SD,20)),If(val=3,If(Pk>0,HHV(H-AVTR-2*SD,20),LLV(L+AVTR+2*SD,20)),If(Pk>0,HHV(H-AVTR-3*SD,20),LLV(L+AVTR+3*SD,20)))));
EL:= c> SAR(SarStep,SarMax) AND (stp<C);
CL:= (stp>C) OR c< SAR(SarStep,SarMax);
ES:= c< SAR(SarStep,SarMax) AND (stp>C);
CS:= ( (stp<C)) OR c> SAR(SarStep,SarMax);
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
Expert Symbols:
state:=Fml("Sar System");
State=1 AND Ref(State,-1)<1 {EL}
state:=Fml("Sar System");
State=-1 AND Ref(State,-1)>-1 {ES}
state:=Fml("Sar System");
State=0 AND Ref(State,-1)=1 {CL}
state:=Fml("Sar System");
State=0 AND Ref(State,-1)=-1 {CS}
Expert Highlights
state:=Fml("Sar System");
State=1 {long}
state:=Fml("Sar System");
State=-1 {short}
@ metatrader
Fabelhafter Service, dann auch noch tief in der Nacht.
Thanks a million again.
Gruß
Williams
Ein schönes Trendfolgesystem, aber wie alle Systeme die auf Trendfolge basieren, versagt es seit Jänner 2004 völlig...nur 2 von 10 Trades profitabel.
2004 wäre ein Oszillator-Jahr gewesen.
@METATRADER
Eine zusätzliche Frage. Wie kann man den Parabolic-SAR in MS so anpassen, daß ich im ID-Chart eine Version des SAR angezeigt bekomme, der das Open heute dem Close gestern gleichsetzt ?
Gruss Appz
@ Metatrader,
die Frage, die Appz stellte, interessiert mich auch brennend. In den Intraday Charts wird der Verlauf vom Parabolic durch die oft vorkommenden GAPs verzerrt. Ebenfalls größere Kurssprünge im Laufe des Tages machen den Gebrauch von Parabolic für ID Trading oft unmöglich. Eine selbstanpassende Variante wäre sehr wünschenswert. Angeblich gibt so was in Trade Station. Wäre das auch für Metastock 9.0 RT möglich?
MfG
Janusch
@appzon, Janusch.
Der Sar ist eine vorefinierte Funktion, die als Eingabeparameter nur Step und Maimum zulassen. Mir ist (mit Ausnahme einer DLL-Eigenprogrammierung) bekannt, mit der man hier Einfluss auf die Berücksichtigung von anderen Eingabegrößen nehmen könnte.
Wenn man sich aber den EasyLanguage Code für den Parabolic Sar ansieht
(
Inputs: AcclFact(NumericSimple);
Variables: Pos(-1), SAR(Close), AF(.02), HighValue(High), LowValue(Low);
If CurrentBar = 1 Then
Pos = 1
Else
If CurrentBar > 1 Then Begin
If High > HighValue Then
HighValue = High;
If Low < LowValue Then
LowValue = Low;
If Pos = 1 Then Begin
If Low <= Parabolic[1] Then
Pos = -1; {Reverse Pos}
End
Else Begin
If High >= Parabolic[1] Then
Pos = 1; {Reverse Pos}
End;
End;
If Pos = 1 Then Begin
If Pos[1] <> 1 Then Begin
SAR = LowValue;
AF = AcclFact;
LowValue = Low;
HighValue = High;
End
Else Begin
SAR = SAR[1] + AF * (HighValue - SAR[1]);
If HighValue > HighValue[1] AND AF < 0.2 Then
AF = AF + MinList(AcclFact, (0.2 - AF));
End;
If SAR > Low Then
SAR = Low;
If SAR > Low[1] Then
SAR = Low[1];
End
Else Begin
If Pos[1] <> -1 Then Begin
SAR = HighValue;
AF = AcclFact;
LowValue = Low;
HighValue = High;
End
Else Begin
SAR = SAR[1] + AF * (LowValue - SAR[1]);
If LowValue < LowValue[1] AND AF < 0.2 Then
AF = AF + MinList(AcclFact, (0.2 - AF));
End;
If SAR < High Then
SAR = High;
If SAR < High[1] Then
SAR = High[1];
End;
Parabolic = SAR;
)
stellt man fest, dass hier auch "nur" mit Highs, Lows und Multiplikatoren arbeitet und z.B. ein Open überhaupt nicht berücksichtigt.
@ Metatrader,
danke, vielen Dank für Ihre Mühe.
Ich muss wohl oder übel eine andere Lösung des Problems finden.
Gruß
Janusch
@METATRADER
Mir scheint Du kennst die Version nicht, die sich am Tagesanfang den Kursen von gestern nicht anpasst, sondern den neuen Tag als neue Referenz nimmt. Damit vermeidet man verschiebungen in der Signalgebung des ParSAR durch Gaps.
Folgende TS Codierung stellt dies dar . Vielleicht kannst Du damit mehr anfangen. Ich frage ja nur, weil ich in MS überhaupt keine Ahnung bzgl. der Programmierung habe.
Appz
TS Code :
Funktion : Intra_ParabolicSAR
inputs:
AfStep( numericsimple ),
AfLimit( numericsimple ),
oParCl( numericref ),
oParOp( numericref ),
oPosition( numericref ),
oTransition( numericref ) ;
variables:
TradeHH( 0 ),
TradeLL( 0 ),
Af( 0 ) ;
if CurrentBar = 1 or Date <> Date[1] then
begin
oParOp = High ;
oPosition = -1 ;
TradeHH = High ;
TradeLL = Low ;
end ;
if Date = Date[1] then
begin
oTransition = 0 ;
if High > TradeHH then TradeHH = High ;
if Low < TradeLL then TradeLL = Low ;
if oPosition = 1 then begin
if Low <= oParOp then begin
oPosition = -1 ;
oTransition = -1 ;
oParCl = TradeHH ;
TradeHH = High ;
TradeLL = Low ;
Af = AfStep ;
if oParOp < High then oParOp = High ;
if oParOp < High[1] then oParOp = High[1] ;
end
else
begin
oParCl = oParOp ;
if TradeHH > TradeHH[1] and Af < AfLimit then
Af = MinList( Af + AfStep, AfLimit ) ;
oParOp = oParCl + Af * ( TradeHH - oParCl ) ;
if oParOp > Low then oParOp = Low ;
if oParOp > Low[1] then oParOp = Low[1] ;
end ;
end
else begin
if High >= oParOp then begin
oPosition = 1 ;
oTransition = 1 ;
oParCl = TradeLL ;
TradeHH = High ;
TradeLL = Low ;
Af = AfStep ;
oParOp = oParCl + Af * ( TradeHH - oParCl ) ;
if oParOp > Low then oParOp = Low ;
if oParOp > Low[1] then oParOp = Low[1] ;
end
else begin
oParCl = oParOp ;
if TradeLL < TradeLL[1] and Af < AfLimit then
Af = MinList( Af + AfStep, AfLimit ) ;
oParOp = oParCl + Af * ( TradeLL - oParCl ) ;
if oParOp < High then oParOp = High ;
if oParOp < High[1] then oParOp = High[1] ;
end ;
end ;
end ;
Intra_ParabolicSAR = 1 ;
Indikator : NewSessParSAR
inputs: AfStep( 0.02), AfLimit( 0.2 ) ;
variables: oParCl( 0 ), oParOp( 0 ), oPosition( 0 ), oTransition( 0 ), Str( "" ) ;
Value1 = Intra_ParabolicSAR( AfStep, AfLimit, oParCl, oParOp, oPosition, oTransition ) ;
if Date = Date[1] then
Plot1( oParCl, "NewSAR" ) ;
@appzon,
hier ist die Lösung für dein SAR Problem, du musst dir lediglich unter dem nachfolgenden Link die Wilders DLL herunterladen.
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))));
NSAR:=If(nw=1,Ref(C,-1),C);
ExtFml( "JWWILDER.CSAR", NSAR, .2); {Grün mit Open = Close vom Vortag}
SAR(0.2,0.2); {Original Blau}
ExtFml( "JWWILDER.CSAR", CLOSE, .2) {Custom Sar Rot}
@ metatrader #12
'hier ist die Lösung für dein SAR Problem, du musst dir lediglich unter dem nachfolgenden Link die Wilders DLL herunterladen'
Ich suche vergeblich nach einem Link.
@YingYang
hier der Link:
http://forum.equis.com/drm_main.php?mode=drm_cat_view&cat=8
Registrierung erforderlich. Bekannten Forenmitgliedern, die sich nicht registrieren möchten, kann ich die dll auch zusenden.
Hast du einen Fehler in meinen Berechnungen des corrected ema gefunden oder weichen die Ergebnisse wirklich auseinander?