MetaStock -> Tools -> Indicator Builder -> New Copy and paste formula below. ============ 2-point plot ============ ---8<--------------------------- { 2-point plot, coding example v2.5 } { Trendline choice 1: last High/Low in month } { Trendline choice 2: lows at Jan/June 2004 } { ©Copyright 2003-2004 Jose Silva } { http://www.metastocktools.com } plot:=Input("choose event trend [1~2]",1,2,1); choose:=Input("plot: trendline [1], event points [2]",1,2,1); {define events} time1:=C=HHV(C,21); time2:=C=LLV(C,21); time2:=time2 AND time2<>time1; {alternative events} dateA:=Year()=2004 AND Month()=1; dateA:=If(LastValue(Cum(dateA))=0, Year()=LastValue(Year())-1 AND Month()=LastValue(Month()),dateA); LoValA:=Lowest(ValueWhen(1,dateA,L)); timeA:=dateA AND L=LastValue(LoValA); dateB:=Year()=2004 AND Month()=6; dateB:=If(LastValue(Cum(dateB))=0, Year()=LastValue(Year()) AND Month()=LastValue(Month()),dateB); LoValB:=Lowest(ValueWhen(1,dateB,L)); timeB:=dateB AND L=LastValue(LoValB); timeB:=timeB AND timeB<>timeA; {choose events} time1:=If(plot=1,time1,timeA); time2:=If(plot=1,time2,timeB); price1:=If(plot=1,C,L); price2:=If(plot=1,C,L); {restrict to last events} time1:=time1 AND Cum(time1)=LastValue(Cum(time1)); time2:=time2 AND Cum(time2)=LastValue(Cum(time2)); {sort events} t1pds:=LastValue(BarsSince(time1)); t2pds:=LastValue(BarsSince(time2)); x1:=If(t1pds>=t2pds,time1,time2); x2:=If(t1pds>=t2pds,time2,time1); y1:=If(t1pds>=t2pds,price1,price2); y2:=If(t1pds>=t2pds,price2,price1); {fix coordinates} y1:=ValueWhen(1,x1,y1); y2:=LastValue(ValueWhen(1,x2,y2)); b1:=LastValue(BarsSince(x1)); b2:=LastValue(BarsSince(x2)); {trendline definition} plot:=y1+BarsSince(x1)*(y2-y1)/(b1-b2+.000001); plot:=Ref(Ref(plot,-b2),b2);{rem to extend plot} If(choose=1,plot,time1+time2) ---8<--------------------------- http://www.metastocktools.com