// Downloaded From https://www.WiseStockTrader.com
_SECTION_BEGIN("Chart Settings");
	SetChartOptions(0,chartShowArrows|chartShowDates);
	SetChartBkColor(ParamColor("Outer Panel",1));
	SetChartBkGradientFill(ParamColor("Upper Chart",1),ParamColor("Lower
Chart",23));
	GraphXSpace=Param("GraphXSpace",10,0,100,1);
	dec = (Param("Decimals",2,0,7,1)/10)+1;
	bi = BarIndex();
	Lbi = LastValue(BarIndex());
	sbi = SelectedValue(bi);
	x1= BarCount-1;
SetBarFillColor (IIf(C>O,19,IIf(C<O,24,42))); 
Plot(C,"",IIf(C>O,51,IIf(C<O,33,55)),64); 

//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
_SECTION_BEGIN("SV X Pivots");
	pct = Param( "Pivot %",0.18,0.10,60,0.01);
	plt = ParamToggle("Plot Zig ","Off|On",0);
	ppa = ParamToggle("Plot Pattern Lines","Off|On",1);
	plx = ParamToggle("Plot Time Lines","Off|On",1);
	Vsh= Param("Time Line V Shift",0.25,0,10,0.01);
	ptx = ParamToggle("Plot Text","Off|On",1);
	HiLb= Param("Hi Lookback",1,1,x1,1);
	LoLb= Param("Lo Lookback",1,0,x1,1);
//==============================
	pk=PeakBars(H,pct)==0; tr=TroughBars(L,pct)==0;
	zHi=Zig(H,pct); zLo=Zig(L,pct); HLAvg=(zHi+zLo)/2;
	zp=IIf(pk,zHi,IIf(tr,zLo,IIf(HLAvg>Ref(HLAvg,-1),H,L)));
	za=Zig(zp,pct);
	pR=Ref(za,-1)<za AND za>Ref(za,1);//pk
	pS=Ref(za,-1)>za AND za<Ref(za,1);//tr
//==============================
if(plt==1)Plot(za,"ZIG",42,32|4096);
//==============================
//Support
	xs0 = SelectedValue(ValueWhen(PS,bi,LoLb));
	xs1 = SelectedValue(ValueWhen(pS,bi,LoLb+1));
	xs2 = SelectedValue(ValueWhen(pS,bi,LoLb+2));
	xs3 = SelectedValue(ValueWhen(pS,bi,LoLb+3));
	xs4 = SelectedValue(ValueWhen(pS,bi,LoLb+4));
	ys0 = SelectedValue(ValueWhen(pS,L,LoLb));
	ys1 = SelectedValue(ValueWhen(pS,L,LoLb+1));
	ys2 = SelectedValue(ValueWhen(pS,L,LoLb+2));
	ys3 = SelectedValue(ValueWhen(pS,L,LoLb+3));
	ys4 = SelectedValue(ValueWhen(pS,L,LoLb+4));
//Resistance
	xr0 = SelectedValue(ValueWhen(pR,bi,HiLb));
	xr1 = SelectedValue(ValueWhen(pR,bi,HiLb+1));
	xr2 = SelectedValue(ValueWhen(pR,bi,HiLb+2));
	xr3 = SelectedValue(ValueWhen(pR,bi,HiLb+3));
	xr4 = SelectedValue(ValueWhen(pR,bi,HiLb+4));
	yr0 = SelectedValue(ValueWhen(pR,H,HiLb));
	yr1 = SelectedValue(ValueWhen(pR,H,HiLb+1));
	yr2 = SelectedValue(ValueWhen(pR,H,HiLb+2));
	yr3 = SelectedValue(ValueWhen(pR,H,HiLb+3));
	yr4 = SelectedValue(ValueWhen(pR,H,HiLb+4));
	Sup = xs0>xr0;
	Res = xr0>xs0;
	xsh = 50;
	xsbi = IIf(Res, xr0-xsh, xs0-xsh);//xstart

	za=Zig(zp,0.01);
	pR=Ref(za,-1)<za AND za>Ref(za,1);//pk
	pS=Ref(za,-1)>za AND za<Ref(za,1);//tr
	eLy = SelectedValue(ValueWhen(pS,L,0));
	eHy = SelectedValue(ValueWhen(pR,H,0));
	d1 = IIf(sup,ely,ehy);
	c1 = IIf(sup,ehy,ely);
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
_SECTION_BEGIN("Patterns");
//Assign Letter to Pivots
if(Res==1)  {
	col= 40; colp= 32; va1= 0.30; va2= -0.30;
	Sx = xs4;  Sy = ys4;  Tx = xr4;  Ty = yr4;
	Ux = xs3;  Uy = ys3;  Vx = xr3;  Vy = yr3;
	Wx = xs2;  Wy = ys2;  Xx = xr2;  Xy = yr2;
	Ax = xs1;  Ay = ys1;  Bx = xr1;  By = yr1;
	Cx = xs0;  Cy = ys0;  Dx = xr0;  Dy = yr0; 
}
if(Sup==1)  {
	col= 51; colp= 43; va1= -0.30; va2= 0.30;
	Sx = xr4;  Sy = yr4;  Tx = xs4;  Ty = ys4;
	Ux = xr3;  Uy = yr3;  Vx = xs3;  Vy = ys3;
	Wx = xr2;  Wy = yr2;  Xx = xs2;  Xy = ys2;
	Ax = xr1;  Ay = yr1;  Bx = xs1;  By = ys1;
	Cx = xr0;  Cy = yr0;  Dx = xs0;  Dy = ys0;
}
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
//Calculate Hi Lo Retracements
	WX=(abs(xy-wy)/abs(wy-vy))*100;
	XA=abs(Xy-Ay)/abs(Xy-Wy)*100;
	AB=abs(By-Ay)/abs(Xy-Ay)*100;
	BC=abs(By-Cy)/abs(By-Ay)*100;
	CD=abs(Dy-Cy)/abs(By-Cy)*100;
	CE=(abs(Cy-c1)/abs(Cy-By))*100;
	DE=(abs(Dy-d1)/abs(Cy-Dy))*100;

//Calculate Hi-Hi Lo-Lo Retracements
	XBi= abs(Xy-By)/(abs(Xy-Ay))*100;
	XBe= abs(By-Ay)/(abs(Xy-Ay))*100;
	XB = IIf(By>=Ay,XBe,XBi);
	XD=abs(Dy-Ay)/abs(Xy-Ay)*100;
	ACi=abs(Cy-Ay)/abs(By-Ay)*100;
	ACe=abs(By-Cy)/abs(By-Ay)*100;
	AC = IIf(Cy>=Ay,ACi,ACe);
	BDi=abs(Dy-By)/abs(By-Cy)*100;
	BDe=abs(Dy-Cy)/abs(By-Cy)*100;
	BD = IIf(Dy>=By,BDe,BDi);
//Plot Labels and Retracements
if(ptx==1)  {
	PlotText(" S ",sx,sy + va2, col,1);  PlotText(" T ",tx,ty + va1, col,1);
	PlotText(" U ",ux,uy + va2, col,1);  PlotText(" V ",vx,vy + va1, col,1);
	PlotText(" W ",IIf(sup,xr2,xs2),wy + va2, col,1);  
	PlotText(" X = "+NumToStr(WX,1.1)+" % ",xx,xy + va1, col,1);
	PlotText(" A = "+NumToStr(XA,1.1)+" % ",ax,ay + va2, col,1); 
	PlotText(" B = "+NumToStr(AB,1.1)+" % ",bx,by + va1, col,1);
	PlotText(" C = "+NumToStr(BC,1.1)+" % ",cx,cy + va2, col,1);  
	PlotText(" D = "+NumToStr(CD,1.1)+" % ",dx,dy + va1, colp,1);
	PlotText(" "+NumToStr(de,1.1)+"%",(dx+x1)/2,(dy+d1)/2,42,1);
	PlotText(" "+NumToStr(ce,1.1)+"%",(cx+x1)/2,(cy+c1)/2,42,1);
	PlotText(" "+NumToStr(XB,1.1)+" %",((xx+bx)/2)-2,(xy+by)/2, 40,1);
	PlotText(" "+NumToStr(XD,1.1)+" %",(xx+dx)/2,(xy+dy)/2, 34,1);
	PlotText(" "+NumToStr(AC,1.1)+" %",(ax+cx)/2-2,(ay+cy)/2, 10,1);
	PlotText(" "+NumToStr(BD,1.1)+" %",((bx+dx)/2)-2,(by+dy)/2, 10,1);
}
//Plot Hi-Hi Lo-Lo Lines
if(ppa==1)  {
	Plot(LineArray(dx,dy,x1,d1,0),"",42,32|4096);
	Plot(LineArray(cx,cy,x1,c1,0),"",42,32|4096);
	Plot(LineArray(sx,sy,ax,ay,1),"",35,41|4096|2048);
	Plot(LineArray(ux,uy,ax,ay,1),"",25,41|4096|2048);
	Plot(LineArray(bx,by,dx,dy,0),"",34,32|4096);
	Plot(LineArray(ax,ay,cx,cy,0),"",34,32|4096);
	Plot(LineArray(xx,xy,dx,dy,0),"",32,32|4096);
	Plot(LineArray(xx,xy,bx,by,0),"",32,32|4096);
}
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
	//Count Bars Between Pivots
	xXA=xsbi+abs(ax-xx);
	xXB=xsbi+abs(bx-xx);
	xXC=xsbi+abs(cx-xx);
	xXD=xsbi+abs(dx-xx);
	xAB=xsbi+abs(bx-ax);
	xAC=xsbi+abs(cx-ax);
	xAD=xsbi+abs(dx-ax);
	xBC=xsbi+abs(cx-bx);
	xBD=xsbi+abs(dx-bx);
	xCD=xsbi+abs(dx-cx);
//==============================
if(plx==1) {
bc=IIf(sup,sbi-xs0,sbi-xr0);
tp=IIf(sup,ys0-Vsh,yr0+Vsh);
if(Res==1)  {
col=42;
Plot(bi==xCD, "", colorYellow, styleHistogram|styleOwnScale,0,1,xsh);//sample code if lines are preferred
PlotText("XA\n | "+NumToStr(abs(xx-ax)-bc,1),xxa+xsh,tp,col,1);
PlotText("XB\n | "+NumToStr(abs(bx-xx)-bc,1),xxb+xsh,tp,col,1);
PlotText("XC\n | "+NumToStr(abs(cx-xx)-bc,1),xxc+xsh,tp,col,1);
PlotText("XD\n | "+NumToStr(abs(xx-dx)-bc,1),xxd+xsh,tp,col,1);
PlotText("AB\n | "+NumToStr(abs(bx-ax)-bc,1),xab+xsh,tp,col,1);
PlotText("AC\n | "+NumToStr(abs(cx-ax)-bc,1),xac+xsh,tp,col,1);
PlotText("AD\n | "+NumToStr(abs(dx-ax)-bc,1),xad+xsh,tp,col,1);
PlotText("BC\n | "+NumToStr(abs(cx-bx)-bc,1),xbc+xsh,tp,col,1);
PlotText("BD\n | "+NumToStr(abs(dx-bx)-bc,1),xbd+xsh,tp,col,1);
PlotText("CD\n | "+NumToStr(abs(dx-cx)-bc,1),xcd+xsh,tp,col,1);
   }
if(Sup==1)  {
col=34;
Plot(bi==xCD, "", colorYellow, styleHistogram|styleOwnScale,0,1,xsh);//sample code if lines are preferred
PlotText("| "+NumToStr(abs(xx-ax)-bc,1)+"\nXA",xxa+xsh,tp,col,1);
PlotText("| "+NumToStr(abs(bx-xx)-bc,1)+"\nXB",xxb+xsh,tp,col,1);
PlotText("| "+NumToStr(abs(cx-xx)-bc,1)+"\nXC",xxc+xsh,tp,col,1);
PlotText("| "+NumToStr(abs(xx-dx)-bc,1)+"\nXD",xxd+xsh,tp,col,1);
PlotText("| "+NumToStr(abs(bx-ax)-bc,1)+"\nAB",xab+xsh,tp,col,1);
PlotText("| "+NumToStr(abs(cx-ax)-bc,1)+"\nAC",xac+xsh,tp,col,1);
PlotText("| "+NumToStr(abs(dx-ax)-bc,1)+"\nAD",xad+xsh,tp,col,1);
PlotText("| "+NumToStr(abs(cx-bx)-bc,1)+"\nBC",xbc+xsh,tp,col,1);
PlotText("| "+NumToStr(abs(dx-bx)-bc,1)+"\nBD",xbd+xsh,tp,col,1);
PlotText("| "+NumToStr(abs(dx-cx)-bc,1)+"\nCD",xcd+xsh,tp,col,1);
   }
}
//example of plotting line with start at a future point
f50= ys0+(abs(yr0-ys0)*0.50);
Plot(LineArray(xxb,f50,xxd,f50,0),"",29,32,0,0,xsh);
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Title = EncodeColor(55)+  Title = Name() + "     " + EncodeColor(32) + Date() +
"      " + EncodeColor(5) + "{{INTERVAL}}  " +
	EncodeColor(55)+ "     Open = "+ EncodeColor(52)+ WriteVal(O,dec) + 
	EncodeColor(55)+ "     High = "+ EncodeColor(5) + WriteVal(H,dec) +
	EncodeColor(55)+ "      Low = "+ EncodeColor(32)+ WriteVal(L,dec) + 
	EncodeColor(55)+ "    Close = "+ EncodeColor(52)+ WriteVal(C,dec)+
	EncodeColor(55)+ "    Volume = "+ EncodeColor(52)+ WriteVal(V,1);