{ Downloaded From https://www.WiseStockTrader.com }
{ Trendline - date range v3.0

©Copyright 2002~2006 Jose Silva.
 For personal use only.
 All code remains the property of Jose Silva.
 http://www.metastocktools.com }

{ Dates user input }
StDay:=Input("start Day",1,31,1);
StMnth:=Input("start Month",1,12,1);
StYear:=Input("start Year",1800,2200,2006);
EnDay:=Input("end Day",1,31,1);
EnMnth:=Input("end Month",1,12,6);
EnYear:=Input("end Year",1800,2200,2006);

{ Selected date periods }
start:=Year()>StYear
 OR (Year()=StYear AND (Month()>StMnth
 OR Month()=StMnth AND DayOfMonth()>=StDay));
end:=Year()<EnYear
 OR (Year()=EnYear AND (Month()<EnMnth
 OR Month()=EnMnth AND DayOfMonth()<=EnDay));

{ Date signals }
date1:=start AND Alert(start=0,2);
date2:=end=0 AND Alert(end,2);
date2:=Zig(end AND Cum(1)>1,1,$)=1;

{ Restrict out of range dates to chart }
date1:=If(LastValue(Cum(date1))>0,date1,
 Cum(1)=1);
date2:=If(LastValue(Cum(date2))>0,date2,
 LastValue(Cum(1))=Cum(1));

{ Sort dates in chronological order }
dateOk:=LastValue(BarsSince(date1))
 >LastValue(BarsSince(date2));
day1:=If(dateOk,date1,date2);
day2:=If(dateOk,date2,date1);

{ Data Array type, levels }
dataArray:=C;
price1:=ValueWhen(1,day1,dataArray);
price2:=LastValue(ValueWhen(1,day2,dataArray));

{ Trendline definition }
x1:=LastValue(BarsSince(day1));
x2:=LastValue(BarsSince(day2));
trendline:=price1
 +BarsSince(day1)*(price2-price1)
 /Max(x1-x2,.000001);

{ Rem next line to extend plot to end of chart }
trendline:=Ref(Ref(trendline,-x2),x2);

{ Plot on price chart }
trendline