// Downloaded From https://www.WiseStockTrader.com
_SECTION_BEGIN("R2");
/* System Based on R2 Indiator - Karthik Marar
 Indicator Adopted from Amibroker AFL Library */

/*To determine if the trend is statistically significant for a given x-period
linear regression line, Plot the r-squared indicator and refer to the following
table.  This table shows the values of r-squared required for A 95% confidence
level at various time periods.  If the r-squared value is less than the
critical values shown, you should assume that prices show no statistically
significant trend. 

Number ofPeriods	r-squaredCritical Value(95%confidence)
5	0.77
10	0.40
14	0.27
20	0.20
25	0.16
30	0.13
50	0.08
60	0.06
120	0.03 
*/  
Title = ("R2 SYSTEM - " + Name()+"  " + Date() +"  "+Interval(2) +"  "+ EncodeColor(colorLime)+",Open "+Open +" ,High "+H+" ,Low "+L+" ,Close "+C+" "+"{{VALUES}}");      
s1=Param("Filter Tune 1",0.5,0.1,1,0.1);
s2=Param("Filter Tune 2",2,1,3,0.5);
RPDS=ParamList("R2 Period", "20|25|14|5|10|30|50|60|120" ); /*for automatic adjustments to the r2 critical value line use one of
//the periods listed above*/
R2PDS=IIf(rpds=="5",5,IIf(rpds=="10",10,IIf(rpds=="14",14,IIf(rpds=="20",20,IIf(rpds=="25",25,IIf(rpds=="30",30,IIf(rpds=="50",50,IIf(rpds=="60",60,120))))))));

R2=Correlation(Cum( 1 ),C,r2pds)*Correlation(Cum( 1 ),C,r2pds);
slope=LinRegSlope(C,r2pds);

Crit=IIf(R2PDS==5,.77,IIf(R2PDS==10,.40,IIf(R2PDS==14,.27,IIf(R2PDS==20,.20,IIf(R2PDS==25,.16,IIf(R2PDS==30,.13,IIf(R2PDS==50,.08,IIf(R2PDS==60,.06,IIf(R2PDS==120,.03,0)))))))));
r2color=IIf(r2>(s2*Crit) AND slope>s1,colorLime,IIf(slope>0 AND r2<s2*Crit , colorPaleGreen,IIf(slope<0 AND r2<crit, colorPink,colorRed)));
// Buy sell condition
Buy=(Cross(slope,s1) AND r2>s2*Crit )OR (slope>s1 AND Cross(r2,(s2*Crit)));
Sell=Cross(0,slope) OR (Cross(Crit,r2) AND slope<0);
Short= Cross(r2,Crit) AND slope<-s1;
Cover= Cross(slope,0);
Buy=ExRem(Buy,Sell);
Sell=ExRem(Sell,Buy);
Short=ExRem(Short,Cover);
Cover=ExRem(Cover,Short);


PlotOHLC( Open,  High,  Low,  Close, "", r2color, styleBar | styleThick  ); 

shape = Buy * shapeUpArrow + Sell * shapeDownArrow + Short * shapeDownTriangle + Cover * shapeUpTriangle;


PlotShapes( shape, IIf( Buy, colorGreen, IIf(Sell,colorYellow,IIf(Cover,colorLightOrange,colorRed ))),0, IIf( Buy, Low, IIf(Sell,High,IIf(Cover,Low,High) ) ) );
GraphXSpace = 5;
dist = 1.5*ATR(10); 

for( i = 0; i < BarCount; i++ ) 
{ 
if( Buy[i] ) PlotText( "Buy\n@" + C[ i ], i, L[ i ]-dist[i], colorGreen ); 
if( Sell[i] ) PlotText( "Sell\n@" + C[ i ], i, H[ i ]+dist[i], colorYellow); 
if( Short[i] ) PlotText( "Short\n@" + C[ i ], i, H[ i ]+dist[i], colorRed); 
if( Cover[i] ) PlotText( "cover\n@" + C[ i ], i, H[ i ]-dist[i], colorLightOrange); 
}
_SECTION_END();