* Metastock: Trendkanäle
Fredcom from France
***TDLineLow***
peri:=Input("Période?",2,100,4);
{by FREDCOM, 26May2003 --> V1.13}
loc:= L<Ref(LLV(L,peri),-1) AND L<=Ref(LLV(L,peri),peri);
y1t:=LastValue(ValueWhen( 2, loc=1, L ));
y2t:=LastValue(ValueWhen( 1, loc=1, L ));
x1t:=LastValue(ValueWhen( 2, loc=1, Cum(1) ));
x2t:=LastValue(ValueWhen( 1, loc=1, Cum(1) ));
{at:=(y1t-y2t)/(x1t-x2t);bt:=y1t-at*x1t;}
yt:=(y1t-y2t)/(x1t-x2t)*Cum(1)+y1t-(y1t-y2t)/(x1t-x2t)*x1t;
{yt:=at*cum(1)+bt;}
e1:=L-yt;
ret1:=LastValue(Cum(1)-(x1t+Int((x2t-x1t)/2)-1));
seg1:=LastValue(Int((x2t-x1t)/2+Int(2*peri/5)){+peri-1});
x1:=LastValue(Cum(1)-LLVBars(Ref(e1,-ret1),seg1)-ret1);
y1:=LastValue(ValueWhen(1,x1=Cum(1),L));
ret2:=LastValue(Cum(1)-(x2t+Int(5*peri/5)));
seg2:=LastValue(Int((x2t-x1t)/2)+Int(4*peri/5));
x2:=LastValue(Cum(1)-LLVBars(Ref(e1,-ret2),seg2)-ret2);
y2:=LastValue(ValueWhen(1,x2=Cum(1),L));
{a:=(y1-y2)/(x1-x2);b:=y1-a*x1;}
a:=(y1-y2)/(x1-x2);
LoTL:=If(Cum(1)>x1t-5,(y1-y2)/(x1-x2)*Cum(1)+y1-(y1-y2)/(x1-x2)
*x1,BarsSince(Cum(1)>x1t-5));
Diff:=Ref(H-LoTL,-LastValue(Cum(1)-x2t));
decal:=LastValue(HHV(Diff,x2t-x1t));
LoTL;LoTL+decal;
***TDLineHigh***
peri:=Input("Période?",2,100,5);
{by FREDCOM, 26Mai2003 --> V1.13}
hic:= H>Ref(HHV(H,peri),-1) AND H>=Ref(HHV(H,peri),peri);
y1t:=LastValue(ValueWhen( 2, hic=1, H ));
y2t:=LastValue(ValueWhen( 1, hic=1, H ));
x1t:=LastValue(ValueWhen( 2, hic=1 , Cum(1) ));
x2t:=LastValue(ValueWhen( 1, hic=1 , Cum(1) ));
{at:=(y1t-y2t)/(x1t-x2t);bt:=y1t-at*x1t;}
yt:=(y1t-y2t)/(x1t-x2t)*Cum(1)+y1t-(y1t-y2t)/(x1t-x2t)*x1t;
{yt:=at*cum(1)+bt;}
e1:=H-yt;
ret1:=LastValue(Cum(1)-(x1t+Int((x2t-x1t)/2)-1));
seg1:=LastValue(Int((x2t-x1t)/2+Int(2*peri/5)){+peri-1});
x1:=LastValue(Cum(1)-HHVBars(Ref(e1,-ret1),seg1)-ret1);
y1:=LastValue(ValueWhen(1,x1=Cum(1),H));
ret2:=LastValue(Cum(1)-(x2t+Int(4*peri/5)));
seg2:=LastValue(Int((x2t-x1t)/2)+Int(4*peri/5));
x2:=LastValue(Cum(1)-HHVBars(Ref(e1,-ret2),seg2)-ret2);
y2:=LastValue(ValueWhen(1,x2=Cum(1),H));
{a:=(y1-y2)/(x1-x2);b:=y1-a*x1;}
a:=(y1-y2)/(x1-x2);
HiTL:=If(Cum(1)>x1t-5,(y1-y2)/(x1-x2)*Cum(1)+y1-(y1-y2)/(x1-x2)
*x1,BarsSince(Cum(1)>x1t-5));
Diff:=Ref(HiTL-L,-LastValue(Cum(1)-x2t));
decal:=LastValue(HHV(Diff,x2t-x1t));
HiTL;HiTL-decal;
***TDLineLow#LOG***
peri:=Input("Période?",2,100,5);
{by FREDCOM, 26Mai2003 --> V2.13}
loc:= L<Ref(LLV(L,peri),-1) AND L<=Ref(LLV(L,peri),peri);
y1t:=Log(LastValue(ValueWhen( 2, loc=1, L )));
y2t:=Log(LastValue(ValueWhen( 1, loc=1, L )));
x1t:=LastValue(ValueWhen( 2, loc=1, Cum(1) ));
x2t:=LastValue(ValueWhen( 1, loc=1, Cum(1) ));
{at:=(y1t-y2t)/(x1t-x2t);bt:=y1t-at*x1t;}
yt:=Exp((y1t-y2t)/(x1t-x2t)*Cum(1)+y1t-(y1t-y2t)/(x1t-x2t)*x1t);
{yt:=exp(at*cum(1)+bt);}
e1:=L-yt;
ret1:=LastValue(Cum(1)-(x1t+Int((x2t-x1t)/2)-1));
seg1:=LastValue(Int((x2t-x1t)/2+Int(2*peri/5)));
x1:=LastValue(Cum(1)-LLVBars(Ref(e1,-ret1),seg1)-ret1);
y1:=Log(LastValue(ValueWhen(1,x1=Cum(1),L)));
ret2:=LastValue(Cum(1)-(x2t+Int(4*peri/5)));
seg2:=LastValue(Int((x2t-x1t)/2)+Int(4*peri/5)+Int(1*peri/5));
x2:=LastValue(Cum(1)-LLVBars(Ref(e1,-ret2),seg2)-ret2);
y2:=Log(LastValue(ValueWhen(1,x2=Cum(1),L)));
{a:=(y1-y2)/(x1-x2);b:=y1-a*x1;}
LoTL:=Exp(If(Cum(1)>x1t-5,(y1-y2)/(x1-x2)*Cum(1)+y1-(y1-y2)/(x1-x2)
*x1,BarsSince(Cum(1)>x1t-5)));
Diff:=Ref(Log(H)-Log(LoTL),-LastValue(Cum(1)-x2t));
decal:=LastValue(HHV(Diff,x2t-x1t));
LoTL;Exp(Log(LoTL)+decal);
***TDLineHigh#LOG***
peri:=Input("Période?",2,100,5);
{by FREDCOM, 26Mai2003 --> V2.13}
hic:= H>Ref(HHV(H,peri),-1) AND H>=Ref(HHV(H,peri),peri);
y1t:=Log(LastValue(ValueWhen( 2, hic=1, H )));
y2t:=Log(LastValue(ValueWhen( 1, hic=1, H )));
x1t:=LastValue(ValueWhen( 2, hic=1 , Cum(1) ));
x2t:=LastValue(ValueWhen( 1, hic=1 , Cum(1) ));
{at:=(y1t-y2t)/(x1t-x2t);bt:=y1t-at*x1t;}
yt:=Exp((y1t-y2t)/(x1t-x2t)*Cum(1)+y1t-(y1t-y2t)/(x1t-x2t)*x1t);
{yt:=at*cum(1)+bt;}
e1:=H-yt;
ret1:=LastValue(Cum(1)-(x1t+Int((x2t-x1t)/2)-1));
seg1:=LastValue(Int((x2t-x1t)/2+Int(2*peri/5)));
x1:=LastValue(Cum(1)-HHVBars(Ref(e1,-ret1),seg1)-ret1);
y1:=Log(LastValue(ValueWhen(1,x1=Cum(1),H)));
ret2:=LastValue(Cum(1)-(x2t+Int(4*peri/5)));
seg2:=LastValue(Int((x2t-x1t)/2)+Int(4*peri/5){+Int(1*peri/5)});
x2:=LastValue(Cum(1)-HHVBars(Ref(e1,-ret2),seg2)-ret2);
y2:=Log(LastValue(ValueWhen(1,x2=Cum(1),H)));
{a:=(y1-y2)/(x1-x2);b:=y1-a*x1;}
HiTL:=Exp(If(Cum(1)>x1t-5,(y1-y2)/(x1-x2)*Cum(1)+y1-(y1-y2)/(x1-x2)
*x1,BarsSince(Cum(1)>x1t-5)));
Diff:=Ref(Log(HiTL)-Log( L ),-LastValue(Cum(1)-x2t));
decal:=LastValue(HHV(Diff,x2t-x1t));
HiTL;Exp(Log(HiTL)-decal);
***TDLineLow date***
j:=Input("Jour (choisir obligatoirement un jour coté)",1,31,15);
{by FREDCOM, 26May2003 --> V3.06}
m:=Input("Mois (1=janvier, 2=fevrier,...)",1,12,1);
an:=Input("Année",1800,2200,2003);
date:=ValueWhen( 1, ((Year()-2000)*10000+Month()*100+DayOfMonth())=
((an-2000)*10000+m*100+j), Cum(1) );
peri:=Input("Période?",2,100,4);
loc:= L<Ref(LLV(L,peri),-1) AND L<=Ref(LLV(L,peri),peri) AND Cum(1)<=
(LastValue(date)-peri);
y1t:=LastValue(ValueWhen( 2, loc=1, L ));
y2t:=LastValue(ValueWhen( 1, loc=1, L ));
x1t:=LastValue(ValueWhen( 2, loc=1, Cum(1) ));
x2t:=LastValue(ValueWhen( 1, loc=1, Cum(1) ));
{at:=(y1t-y2t)/(x1t-x2t);bt:=y1t-at*x1t;}
yt:=(y1t-y2t)/(x1t-x2t)*Cum(1)+y1t-(y1t-y2t)/(x1t-x2t)*x1t;
{yt:=at*cum(1)+bt;}
{e1:=(L-yt)};
{ret1:=LastValue(Cum(1)-(x1t+Int((x2t-x1t)/2)-1))};
{seg1:=LastValue(Int((x2t-x1t)/2+Int(2*peri/5)))};
x1:=LastValue(Cum(1)-LLVBars(Ref({e1}(L-yt),{-ret1}-LastValue(Cum(1)-
(x1t+Int((x2t-x1t)/2)-1))),{seg1}LastValue(Int((x2t-x1t)/2+Int
(2*peri/5)))){-ret1}-LastValue(Cum(1)-(x1t+Int((x2t-x1t)/2)-1)));
y1:=LastValue(ValueWhen(1,x1=Cum(1),L));
ret2:=LastValue(Cum(1)-(x2t+Int(4*peri/5)));
seg2:=LastValue(Int((x2t-x1t)/2)+Int(4*peri/5));
x2:=LastValue(Cum(1)-LLVBars(Ref({e1}(L-yt),-ret2),seg2)-ret2);
y2:=LastValue(ValueWhen(1,x2=Cum(1),L));
{a:=(y1-y2)/(x1-x2);b:=y1-a*x1;}
LoTL:=If(Cum(1)>x1t-5,(y1-y2)/(x1-x2)*Cum(1)+y1-(y1-y2)/(x1-x2)
*x1,BarsSince(Cum(1)>x1t-5));
Diff:=Ref(H-LoTL,-LastValue(Cum(1)-x2t));
decal:=LastValue(HHV(Diff,x2t-x1t));
If(Cum(1)=LastValue(date),LoTL*.98,LoTL);LoTL;LoTL+decal;
***TDLineHigh date***
j:=Input("Jour",1,31,15);
{by FREDCOM, 26May2003 --> V3.06}
m:=Input("Mois",1,12,1);
an:=Input("Année",1800,2200,2003);
cdate:=ValueWhen( 1, ((Year()-2000)*10000+Month()*100+DayOfMonth())=
((an-2000)*10000+m*100+j), Cum(1) );
peri:=Input("Période?",2,100,4);
{by FREDCOM, 29april2003 --> V1.09}
hic:= H>Ref(HHV(H,peri),-1) AND H>=Ref(HHV(H,peri),peri) AND Cum(1)<=
(LastValue(cdate)-peri);
y1t:=LastValue(ValueWhen( 2, hic=1, H ));
y2t:=LastValue(ValueWhen( 1, hic=1, H ));
x1t:=LastValue(ValueWhen( 2, hic=1 , Cum(1) ));
x2t:=LastValue(ValueWhen( 1, hic=1 , Cum(1) ));
{at:=(y1t-y2t)/(x1t-x2t);bt:=y1t-at*x1t;}
yt:=(y1t-y2t)/(x1t-x2t)*Cum(1)+y1t-(y1t-y2t)/(x1t-x2t)*x1t;
{yt:=at*cum(1)+bt;}
{e1:=H-yt;}
{ret1:=LastValue(Cum(1)-(x1t+Int((x2t-x1t)/2)-1));}
{seg1:=LastValue(Int((x2t-x1t)/2+Int(2*peri/5)));}
x1:=LastValue(Cum(1)-HHVBars(Ref({e1}H-yt,{-ret1}-LastValue(Cum(1)-
(x1t+Int((x2t-x1t)/2)-1))),{seg1}LastValue(Int((x2t-x1t)/2+Int
(2*peri/5)))){-ret1}-LastValue(Cum(1)-(x1t+Int((x2t-x1t)/2)-1)));
y1:=LastValue(ValueWhen(1,x1=Cum(1),H));
ret2:=LastValue(Cum(1)-(x2t+Int(4*peri/5)));
seg2:=LastValue(Int((x2t-x1t)/2)+Int(4*peri/5));
x2:=LastValue(Cum(1)-HHVBars(Ref({e1}H-yt,-ret2),seg2)-ret2);
y2:=LastValue(ValueWhen(1,x2=Cum(1),H));
{a:=(y1-y2)/(x1-x2);b:=y1-a*x1;}
HiTL:=If(Cum(1)>x1t-5,(y1-y2)/(x1-x2)*Cum(1)+y1-(y1-y2)/(x1-x2)
*x1,BarsSince(Cum(1)>x1t-5));
Diff:=Ref(HiTL-L,-LastValue(Cum(1)-x2t));
decal:=LastValue(HHV(Diff,x2t-x1t));
If(Cum(1)=LastValue(cdate),HiTL*1.02,HiTL);HiTL;HiTL-decal;
Trendchaser
<A HREF="http://www.freewebs.com/trendchaser/" target="new">http://www.freewebs.com/trendchaser/</A>
Pas mal du tout!
Hi,
kann mir jemand sagen, worum es bei diesen codes geht?
Bruno Stenger
Die 6 verschiedenen Codes zeichnen in Metastock automatische Trendkanäle.
Danke!
Liebe MS-Professionals,
ich habe die Formel für eine untere Trendlinie (TDLineLow) und die von trendchaser angebotene Formel ab "peri:=Input"...usw. in den Indicator Builder eingegeben (die Zeile {by FREDCOM...} habe ich ausgelassen).
Nach vollendeter Arbeit habe ich den ok Button gedrückt und folgende Message erhalten: "This is not a recognized name, constant or operator"...der cursor stand hinter dem "peri" der ersten Zeile.
Was habe ich falsch gemacht?
lg Hannes
Wenn die Zeilen ab der 1. Zeile "peri:= " bis zur Zeile "LoTL;LoTL+decal;" kopiert wurden, dann wurde eigentlich nichts falsch gemacht für die untere Trendlinie.
Danke für die Info,
leider zeichnet mein Metastock immer ein Dreieck auf die Trendlinie, bzw. liegt die Trendlinie nicht im Bereich der letzten Wochen.
Ich werde mich in den nächsten Tagen noch damit beschäftigen, bis ich den Einsatz dieses Tools 100%ig beherrsche. Es könnte als Ausstiegssignal sehr sinnvoll sein.
lg Hannes
Hi,
eine ketzerische Frage, seid mir bitte nicht böse.
Warum betreibt man einen solchen Aufwand, eine Trendlinie automatisch zu generieren, wo es doch nur zweier Mausklicks bedarf, eine solche in jeder Chartsoftware darzustellen, noch dazu an frei wählbaren Hochs oder Tiefs?
Grüße,
Bruno
Die Frage ist durchaus berechtigt.
Der Vorteil der automatischen Trendlinie liegt für mich im Bereich der Erstellung von Handelssystemen. Eine manuell gezeichnete Trendlinie kann ich für Systemtests nicht verwenden, eine vom System gezeichnete hingegen schon.
Ein weiterer Vorteil besteht auch darin, im Explorer Werte mit Trendlinienbruch anzeigen zu lassen. Dies würde manuelle aufgrund des Faktors Zeit nicht möglich sein. Trotz der "Automatik" zeichne ich jedoch auch zusätzlich Trendlinien per Hand, um näher am Markt zu sein.
It can be combine the low and high into one indicator.
Hallo Hannes,
vielleicht macht der französische Accent im peri-Input Ärger.
peri:=Input("Période?",2,100,5);
Viele Grüße
R.H.
@ Trendchaser
What do you mean by "Display Pattern"? Could you provide us the code for the combined low and high trendline, please? I´ve tried to visit your homepage "http://www.freewebs.com/trendchaser"; however without success. Are there any other Metastock codes of interest to us on your homepage? Thanks in advance for your reply.
@ gautama2
Danke für den Tipp, ich habe die Formel kopiert und eingefügt, doch anscheinend haben sich da ein paar kleinere Modifikationen (z.B. auch in der Zeilenschaltung) eingeschlichen.
Ich habe das korrigiert, der Indikater klappt (bis auf das vorhin erwähnte, hin und wieder auftauchende Dreieck auf der oberen Trendlinie).
Eigentlich sind es ja vielmehr Trendkanäle, die diese Formeln liefern. Ein Problem habe ich allerdings noch: wenn ich den Chart vergrößere, dann verläuft der Trendkanal nicht mehr über den Kursen, werde mich da noch mit der Scale spielen.
Alles nicht so einfach ;) aber Simplizität ist halt nicht der Sinn des Lebens.
Happy and succesful trading wünscht Euch
Hannes
Das Problem, dass die Trendlinien sich bei unterschiedlichen Zeitfenstern verschieben, kann man umgehen, indem man in die Formel ein simples Close (;C) einfügt.
Die Trendlinie hat damit die gleiche Basis wie der Preischart selbst. Die "Close-Linie" kann man ausblenden (invisible), falls sie stören sollte.
An welcher Stelle in die Formel einfügen?
Hannes
Welcome to my website.
http://www.freewebs.com/trendchaser
Happy Trading
Trendchaser
@ Hannes
Habe ";C" am Ende der Formel eingefügt.
Herzlichen Dank!
Hannes