// RSI TRENDLINE formula ver 1.0
TP = Param("Trend Per", 100,2,1000,1);
per_RSI= Param("RSI Per", 14, 2, 100,1);
IND = RSI(per_RSI);
Center = 50 ;
Plot( RSI(per_RSI), "", 4, 4);
Plot(50,"",1,1) ;
// CALCULATE UPTREND
startvalue = LastValue( LLV( IND, TP ) );
startbar = LastValue( ValueWhen( IND == startvalue, BarIndex(), 1) );
BP = BarCount - Startbar;
secondvalue = LastValue( LLV( IND, BP - 5 ) );
secondbar = LastValue( ValueWhen( IND == secondvalue, BarIndex(), 1) );
BP2 = BarCount - secondbar;
thirdvalue = LastValue( LLV( IND, BP2 - 5 ) );
thirdbar = LastValue( ValueWhen( IND == thirdvalue, BarIndex(), 1) );
BP3 = BarCount - thirdbar;
fourthvalue = LastValue( LLV( IND, BP3 - 5 ) );
fourthbar = LastValue( ValueWhen( IND ==fourthvalue, BarIndex(), 1) );
BP4 = BarCount - fourthbar;
fifthvalue = LastValue( LLV( IND, BP4 - 5 ) );
fifthbar = LastValue( ValueWhen( IND ==fifthvalue, BarIndex(), 1) );
BP5 = BarCount - fifthbar;
sixthvalue = LastValue( LLV( IND, BP5 - 5 ) );
sixthbar = LastValue( ValueWhen( IND ==sixthvalue, BarIndex(), 1) );
Low_1= IIf( BarIndex() == startbar, 80, Null);
Low_2= IIf( BarIndex() == secondbar, 80, Null);
Low_3= IIf( BarIndex() == thirdbar, 80, Null);
Low_4= IIf( BarIndex() == fourthbar, 80, Null);
Low_5= IIf( BarIndex() == fifthbar, 80, Null);
Low_6= IIf( BarIndex() == sixthbar, 80, Null);
b = startvalue ;
FirstSlope = (secondvalue - b) / (secondbar - startbar) ;
FirstTrendline = FirstSlope * ( BarIndex() - startbar ) + b;
//Plot( IIf( BarIndex() >= startbar AND FirstTrendline <= 90 , FirstTrendline, Null ) , "FirstTrendline", colorGreen, styleThick +2048 );
SecondSlope = (thirdvalue - b) / (thirdbar - startbar) ;
SecondTrendline = SecondSlope * ( BarIndex() - startbar ) + b;
ThirdSlope = (fourthvalue - b) / (fourthbar - startbar) ;
ThirdTrendline = ThirdSlope * ( BarIndex() - startbar ) + b;
FourthSlope = (fifthvalue - b) / (fifthbar - startbar) ;
FourthTrendline = FourthSlope * ( BarIndex() - startbar ) + b;
FifthSlope = (sixthvalue - b) / (sixthbar - startbar) ;
FifthTrendline = FifthSlope * ( BarIndex() - startbar ) + b;
MainSlope = IIf( FirstSlope > SecondSlope, IIf( SecondSlope > ThirdSlope, IIf( ThirdSlope > FourthSlope,
IIf( FourthSlope > FifthSlope, FifthSlope, FourthSlope),ThirdSlope), SecondSlope), FirstSlope) ;
MainLine = MainSlope * ( BarIndex() - startbar ) + b;
Plot( IIf( BarIndex() >= startbar, MainLine, Null ) , "MainLine", colorDarkGreen, styleThick ) ;
IND_Diff = IIf( BarIndex() >= startbar, abs( IND - MainLine), Null) ;
MainTrendLine_Diff = Param("Difference IND from MainTrendLine", 2.5, 0.5,5, 0.5);
Cond_Buy = IIf( BarIndex() >= Thirdbar AND IND_Diff <= MainTrendLine_Diff, IND, 0) AND MainLine < 55 ;
PlotShapes( IIf( Cond_Buy, shapeUpArrow , shapeNone ), colorGreen );
/////////////////////////////////////////////
// CALCULATE DOWNTREND
starthigh = LastValue( HHV( IND, TP ) );
starthighbar = LastValue( ValueWhen( IND == starthigh, BarIndex(), 1) );
HBP = BarCount - starthighbar;
secondhigh = LastValue( HHV( IND, HBP - 5 ) );
secondhighbar = LastValue( ValueWhen( IND == secondhigh, BarIndex(), 1) );
HBP2 = BarCount - secondhighbar;
thirdhigh = LastValue( HHV( IND, HBP2 - 5 ) );
thirdhighbar = LastValue( ValueWhen( IND == thirdhigh, BarIndex(), 1) );
HBP3 = BarCount - thirdhighbar;
fourthhigh = LastValue( HHV( IND, HBP3 - 5 ) );
fourthhighbar = LastValue( ValueWhen( IND ==fourthhigh, BarIndex(), 1) );
HBP4 = BarCount - fourthhighbar;
fifthhigh = LastValue( HHV( IND, HBP4 - 5 ) );
fifthhighbar = LastValue( ValueWhen( IND ==fifthhigh, BarIndex(), 1) );
HBP5 = BarCount - fifthhighbar;
sixthhigh = LastValue( HHV( IND, HBP5 - 5 ) );
sixthhighbar = LastValue( ValueWhen( IND ==sixthhigh, BarIndex(), 1) );
High_1= IIf( BarIndex() == starthighbar, 90, Null);
High_2= IIf( BarIndex() == secondhighbar, 90, Null);
High_3= IIf( BarIndex() == thirdhighbar, 90, Null);
High_4= IIf( BarIndex() == fourthhighbar, 90, Null);
High_5= IIf( BarIndex() == fifthhighbar, 90, Null);
High_6= IIf( BarIndex() == sixthhighbar, 90, Null);
MainTrendLine_Diff = Param("Difference IND from MainTrendLine", 1, 100,1);
d = starthigh ;
FirstDownSlope = (secondhigh - d) / (secondhighbar - starthighbar) ;
FirstDownTrendline = FirstDownSlope * ( BarIndex() - starthighbar ) + d;
SecondDownSlope = (thirdhigh - d) / (thirdhighbar - starthighbar) ;
SecondDownTrendline = SecondDownSlope * ( BarIndex() - starthighbar ) + d;
ThirdDownSlope = (fourthhigh - d) / (fourthhighbar - starthighbar) ;
ThirdDownTrendline = ThirdDownSlope * ( BarIndex() - starthighbar ) + d;
FourthDownSlope = (fifthhigh - d) / (fifthhighbar - starthighbar) ;
FourthDownTrendline = FourthDownSlope * ( BarIndex() - starthighbar ) + d;
FifthDownSlope = (sixthhigh - d) / (sixthhighbar - starthighbar) ;
FifthDownTrendline = FifthDownSlope * ( BarIndex() - starthighbar ) + d;
MainDownSlope = IIf( FirstDownSlope < SecondDownSlope, IIf( SecondDownSlope < ThirdDownSlope,
IIf( ThirdDownSlope < FourthDownSlope, IIf( FourthDownSlope < FifthDownSlope, FifthDownSlope, FourthDownSlope),ThirdDownSlope), SecondDownSlope), FirstDownSlope) ;
MainDownLine = IIf( MainDownSlope == 0, Null, MainDownSlope * ( BarIndex() - starthighbar ) + d ) ;
Plot( IIf( BarIndex() >= starthighbar, MainDownLine, Null ) , "Main_DOWN_Line", colorViolet, styleThick ) ;
IND_Diff = IIf( BarIndex() >= starthighbar, abs( IND - MainDownLine), Null) ;
Cond_Sell = IIf( BarIndex() >= Thirdbar AND IND_Diff <= MainTrendLine_Diff, IND, 0) AND MainDownLine > 45 ;
PlotShapes( IIf( Cond_Sell, shapeDownArrow , shapeNone ), colorRed );
Title = StrFormat( Name() + " " + "RSI" + " " + per_RSI ) ;
Buy = Cover = cond_buy;
Sell = Short = cond_sell;
Filter = Buy OR Sell;
AddColumn( IIf( Buy, Close, Null ), " Buy ", 1.2, colorGreen, colorDefault );
AddColumn( IIf( Sell, Close, Null ), " Sell ", 1.2, colorRed, colordefault );