gautama2
Mitglied seit 11 Jahre 4 Monate
Metastock 8.0: Wie erhalte ich eine Linie zwischen zwei Punkten ?
Hallo,
mit welcher Formel kann ich in Metastock eine Linie zwischen zwei frei definierbaren Punkten zeichnen?
Ich möchte gerne eigene Trendlinien automatisch zeichnen lassen, die ich dann im Explorer auf Breaks untersuchen kann.
Geschrieben von gautama2
am
Ich habe einen Thread gefunden, der mich weitergebracht hat:
http://www.stockcentral.com.au/forum/machine/Forum32/HTML/000387.html
Wollte ich nicht vorenthalten.
Hallo,
da mich das Problem auch interessiert und der Link nicht mehr funktioniert, möchte ich die Frage nochmals stellen:
Hat jemand eine Lösung dazu, wie ich eine Linie zwischen zwei definierten Punkten -z.B. LLV und HHV in den letzten 10 Tagen- automatisch zeichnen kann?
Danke
chn01
@ gautama2 [#1]
Zwischen zwei Datumsfeldern
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;
@ gautama2 [#1]
Trendlinie
Trendlaenge:=Input("Länge/Length",5,200,52);
TrendShift:=Input("Verschiebung/Shift",0,50,7);
TrendStart:=LastValue(Ref(LinearReg(C,Trendlaenge),-TrendShift)- Ref(LinRegSlope(C,Trendlaenge),-TrendShift)*Trendlaenge);
TrendZiel:=LastValue(Ref(LinearReg(C,Trendlaenge),-TrendShift)+TrendShift*Ref(LinRegSlope(C,Trendlaenge),-TrendShift));
TrendDevi:=LastValue(2*Ref(STE(C,Trendlaenge),-TrendShift));
TrendDeltaVertical:= TrendZiel - TrendStart;
TrendDeltaHorizontal:=Trendlaenge+TrendShift;
TrendDeltaPerBar:= TrendDeltaVertical / TrendDeltaHorizontal;
TrendBarNoStart:= LastValue(
Cum(1) - TrendDeltaHorizontal);
Trend:= If(Cum(1) < TrendBarNoStart,
BarsSince(Cum(1) >= TrendBarNoStart),
TrendStart +
(TrendDeltaPerBar * (Cum(1) - TrendBarNoStart)));
CenterLine:=Trend;
Upperline:=Trend+TrendDevi;
LowerLine:=Trend-TrendDevi;
CenterLine;
UpperLine;
LowerLine;
outsideUP:=If(L>(Trend+TrendDevi),true,0);
outsideDOWN:=If(H<(Trend-TrendDevi),true,0);
{end}
@ gautama2 [#1]
Hochpunkte
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);
Ich möchte eine senkrechte Linie/Rechteck programmseitig in einen Candle-Chart eintragen. Die Daten sollen im Programm ermittelt werden. Das wären Datum (dto. Woche/Monat), Kurswerte von und bis, Farbe, Füll-Farbe, Rahmen-Farbe, Stärke, Linienform und Zeichnungsebene. Außerdem sollten Linienüberlagerungen möglich sein.
Geht sowas in Metastock? Welche Formel muß ich verwenden? Danke.