trendchaser
Mitglied seit 11 Jahre 2 Monate

* 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/&quot; target="new">http://www.freewebs.com/trendchaser/&lt;/A>

Geschrieben von trendchaser am
bueschl
Mitglied seit 11 Jahre 2 Monate

Pas mal du tout!

Termin-Trader
Mitglied seit 11 Jahre 2 Monate

Hi,

kann mir jemand sagen, worum es bei diesen codes geht?

Bruno Stenger

bueschl
Mitglied seit 11 Jahre 2 Monate

Die 6 verschiedenen Codes zeichnen in Metastock automatische Trendkanäle.

Termin-Trader
Mitglied seit 11 Jahre 2 Monate

Danke!

Hannes
Mitglied seit 11 Jahre 2 Monate

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

bueschl
Mitglied seit 11 Jahre 2 Monate

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.

Hannes
Mitglied seit 11 Jahre 2 Monate

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

Termin-Trader
Mitglied seit 11 Jahre 2 Monate

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

bueschl
Mitglied seit 11 Jahre 2 Monate

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.

trendchaser
Mitglied seit 11 Jahre 2 Monate

It can be combine the low and high into one indicator.

gautama2
Mitglied seit 11 Jahre 2 Monate

Hallo Hannes,

vielleicht macht der französische Accent im peri-Input Ärger.
peri:=Input("Période?",2,100,5);

Viele Grüße
R.H.

bueschl
Mitglied seit 11 Jahre 2 Monate

@ 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.

Hannes
Mitglied seit 11 Jahre 2 Monate

@ 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

bueschl
Mitglied seit 11 Jahre 2 Monate

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.

Hannes
Mitglied seit 11 Jahre 2 Monate

An welcher Stelle in die Formel einfügen?

Hannes

trendchaser
Mitglied seit 11 Jahre 2 Monate

Welcome to my website.

http://www.freewebs.com/trendchaser

Happy Trading
Trendchaser

bueschl
Mitglied seit 11 Jahre 2 Monate

@ Hannes

Habe ";C" am Ende der Formel eingefügt.

Hannes
Mitglied seit 11 Jahre 2 Monate

Herzlichen Dank!

Hannes

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