// Downloaded From https://www.WiseStockTrader.com
_SECTION_BEGIN("Pattern Revealer");
//Pattern Recognition graph with shading
 
/*TRENDLINES BREAKOUT*/
 
 
x = Cum(1);
 
per = Param("Percent",3,1,5,1);
 
s1=L;
 
s11=H;
 
pS = TroughBars( s1, per, 1 ) == 0;
 
endt= LastValue(ValueWhen( pS, x, 1 ));
 
startt=LastValue(ValueWhen( pS, x, 2 ));
 
endS = LastValue(ValueWhen( pS, s1, 1 ) );
 
startS = LastValue( ValueWhen( pS, s1, 2 ));
 
dtS =endt-startt;
 
aS = (endS-startS)/dtS;
 
bS = endS;
 
trendlineS = aS * ( x -endt ) + bS;
 
  
 
pR = PeakBars( s11, per, 1 ) == 0;
 
endt1= LastValue(ValueWhen( pR, x, 1 ));
 
startt1=LastValue(ValueWhen( pR, x, 2 ));
 
endR = LastValue(ValueWhen( pR, s11, 1 ) );
 
startR = LastValue( ValueWhen( pR, s11, 2 ));
 
DTR=ENDT1-STARTT1;
 
aR = (endR-startR)/dtR;
 
bR = endR;
 
trendlineR = aR * ( x -endt1 ) + bR;
 
BEGIN=Min(STARTT,STARTT1);
 
TRS = IIf(x>BEGIN-10,trendlineS,-1e10);
 
TRR = IIf(x>BEGIN-10,trendlineR,-1e10);
 
  
 
Condcolor=(Cross(C,trendlineR) AND X>ENDT1) OR (Cross(trendlineS,C) AND
 
X>ENDT);
 
BarColor=IIf(Condcolor,7,1);
 
Plot(C,"Close",BarColor,styleCandle); 
 
Plot(TRS,"Support",colorGreen,styleLine);
 
Plot(TRR,"Resist",colorRed,styleLine);
 
 
////////////////////////////////////////////
 
// Pattern Recognition in title bar // 
 
///////////////////////////////////////////
 
 
Lowline=Ends-starts;
 
Highline=endr-startr;
 
Wedge=IIf(Highline <0 AND Lowline > 0,1,0);
 
DecendingTriangle=IIf(Highline < 0 AND Lowline==0,1,0);
 
AscendingTriangle=IIf(Highline==0 AND Lowline > 0,1,0);
 
DownChannel=IIf(Highline<0 AND Lowline<0,1,0);
 
UpChannel=IIf(Highline>0 AND Lowline>0,1,0);
 
BroadeningWedge=IIf(Highline > 0 AND Lowline < 0,1,0);
 
///////////////////////////////////
 
// Bullish or Bearish breakout //
 
//////////////////////////////////
 
BullishBreakout=Cross(C,trendlineR);
 
BearishBreakout=Cross(trendlineS,C);
 
  
 
Title=Name()+ WriteIf(wedge==1," Wedge","")+WriteIf(DecendingTriangle==1," Decending Triangle","")+WriteIf(AscendingTriangle==1,"Ascending Triangle","")/*+WriteVal(Lowline)*/+WriteIf(DownChannel==1," Downward Sloping Channel","")+WriteIf(UpChannel==1," Upward Sloping Channel","")+WriteIf(broadeningWedge==1," Broadening Wedge","")+"\n"+EncodeColor(colorGreen)+WriteIf(bullishbreakout,"Bullish Breakout",EncodeColor(colorRed)+WriteIf(bearishbreakout,"Bearish Breakout",""))/*+WriteVal(highline)*/; 
 
/////////////////////////////////////
 
// Automatic Analysis //
 
////////////////////////////////////
 
Filter=AscendingTriangle OR DecendingTriangle OR Wedge OR DownChannel OR UpChannel OR BroadeningWedge OR Bullishbreakout OR bearishbreakout;
 
AddTextColumn(WriteIf(bullishbreakout,"bullish Breakout",""),"BullBreak"); 
 
AddTextColumn(WriteIf(bearishBreakout,"Bearish Breakout",""),"BearBreak"); 
 
AddTextColumn(WriteIf(ascendingtriangle,"Ascending Triangle",WriteIf(decendingtriangle,"Decending Triangle",WriteIf(Wedge,"Wedge",WriteIf(DownChannel,"Down Channel",WriteIf(UpChannel,"Up Channel",WriteIf(BroadeningWedge,"Broadening Wedge","")))))),"Pattern");
 
AddColumn(C,"Close");
_SECTION_END();




_SECTION_BEGIN("Price");
SetChartOptions(0,chartShowArrows|chartShowDates);
_N(Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, Close %g (%.1f%%) {{VALUES}}", O, H, L, C, SelectedValue( ROC( C, 1 ) ) ));
Plot( C, "Close", ParamColor("Color", colorBlack ), styleNoTitle | ParamStyle("Style") | GetPriceStyle() ); 
_SECTION_END();

_SECTION_BEGIN("Bollinger Bands");
P = ParamField("Price field",-1);
Periods = Param("Periods", 15, 2, 100, 1 );
Width = Param("Width", 2, 0, 10, 0.05 );
Color = ParamColor("Color", colorLightGrey );
Style = ParamStyle("Style") | styleNoRescale;;
Plot( bbt = BBandTop( P, Periods, Width ), "BBTop" + _PARAM_VALUES(), Color, Style ); 
Plot( bbb = BBandBot( P, Periods, Width ), "BBBot" + _PARAM_VALUES(), Color, Style ); 
PlotOHLC( bbt, bbt, bbb, bbb, "", ColorBlend( Color, colorWhite, 0.9 ), styleCloud | styleNoRescale, Null, Null, Null, -1 );
_SECTION_END();

_SECTION_BEGIN("Keltner Bands");
P = ParamField("Price field",-1);
Periods = Param("Periods", 15, 2, 300, 1 );
Width = Param("Width", 2, 0, 10, 0.05 );
Color = ParamColor("Color", colorCycle );
Style = ParamStyle("Style");

CenterLine = MA( P, Periods );
KTop   = CenterLine + Width * ATR( Periods );
KBot = CenterLine - Width * ATR( Periods );

Plot( KTop, "KBTop" + _PARAM_VALUES(), Color, Style ); 
Plot( KBot, "KBBot" + _PARAM_VALUES(), Color, Style ); 
_SECTION_END();