// Downloaded From https://www.WiseStockTrader.com
// Amibroker AFL code by Edward Pottasch, Nov 2012
// Alternative ZIG type function based on the ATR and VSTOP functions
// Added multiple timeframes. Maximum timeframe set to 1440 minutes 
// Added Channel type indicator after idea by Carl Vanhaesendonck
// Added pivot based trendlines + 2 convergence patterns

x=xx=BarIndex();
dispZIG=ParamToggle("Display ZIG","Off|On",1);
dispVSTOP=ParamToggle("Display VSTOP","Off|On",0);
dispCHANNEL=ParamToggle("Display CHANNEL","Off|On",1);
dispTRENDLINES=ParamToggle("Display TRENDLINES","Off|On",0);
dispSR=ParamToggle("Display S/R levels","Off|On",1);
npivTL=Param("N Pivots Used (TRENDLINES)",2,1,5,1);
percSR=Param("Percentage Range (S/R LINES)",20,0.05,100,0.01);
npivSR=Param("N Pivots Used (S/R LINES)",1,1,250,1);
lastMiniPivot=ParamToggle("Mini Pivot (use with CHANNEL display)","Furthest|Last",0);
disp0=ParamToggle("Display labels","Off|On",1);
tf=Param("Time Frame (min)",60,1,1440,1);tfrm=in1Minute*tf;
perBull=Param("perBull",20,1,150,1);
perBear=Param("perBear",20,1,150,1);
multBull=Param("multBull",2,0.05,4,0.05);
multBear=Param("multBear",2,0.05,4,0.05);
TimeFrameSet(tfrm);
function vstop_func(trBull,trBear)
{
	trailArray[0]=C[0];
	for(i=1;i<BarCount;i++)
	{
		prev=trailArray[i-1];
 
		if(C[i]>prev AND C[i-1]>prev)
		{
			trailArray[i]=Max(prev,C[i]-trBull[i]);
		}
		else if(C[i]<prev AND C[i-1]< prev)
		{
			trailArray[i]=Min(prev,C[i]+trBear[i]);
		}
		else if (C[i]>prev)
		{
			trailArray[i]=C[i]-trBull[i];
		}
		else
		{
			trailArray[i]=C[i]+trBear[i];	
		}
	}
	return trailArray;
}

trBull=multBull*ATR(perBull);
trBear=multBear*ATR(perBear);
trailArray = vstop_func(trBull,trBear);
ts=IIf(trailArray>C,trailArray,Null);
tl=IIf(trailArray<C,trailArray,Null);
el=Ref(ts,-1)-Ref(multBear*ATR(perBear),-1);
es=Ref(tl,-1)+Ref(multBull*ATR(perBull),-1);
TimeFrameRestore();

ts=TimeFrameExpand(ts,tfrm,expandLast);
tl=TimeFrameExpand(tl,tfrm,expandLast);
el=TimeFrameExpand(el,tfrm,expandLast);
es=TimeFrameExpand(es,tfrm,expandLast);

GraphXSpace = 5;
SetChartOptions(0, chartShowDates);
SetBarFillColor(IIf(C>O,colorBrightGreen,IIf(C<=O,colorRed,colorLightGrey)));
Plot(C,"Price",IIf(C>O,ColorRGB(0,255,0),IIf(C<=O,ColorRGB(255,0,0),colorLightGrey)),64,0,0,0,0,1);

lll=LLV(L,BarsSince(!IsEmpty(tl)));lll=IIf(ts,lll,Null);llls=lll;
ttt1=IIf((!IsEmpty(ts) AND IsEmpty(Ref(ts,1))) OR BarIndex()==BarCount-1,1,Null);
ttt=ValueWhen(ttt1,lll,0);ttt=IIf(ts,ttt,Null);ttt=IIf(ttt1,Ref(ttt,-1),ttt);
tr=L==ttt;lll=Sum(tr,BarsSince(!IsEmpty(tl)));
qqq=ValueWhen(ttt1,lll,0);qqq=IIf(ts,qqq,Null);qqq=IIf(ttt1,Ref(qqq,-1),qqq);tr=tr AND lll==qqq;
tr=IIf((!IsEmpty(ts) AND IsEmpty(Ref(ts,1)) AND IsEmpty(Ref(ts,-1))),1,tr);//exception
hhh=HHV(H,BarsSince(!IsEmpty(ts)));hhh=IIf(tl,hhh,Null);hhhs=hhh;
ttt1=IIf((!IsEmpty(tl) AND IsEmpty(Ref(tl,1))) OR BarIndex()==BarCount-1,1,Null);
ttt=ValueWhen(ttt1,hhh,0);ttt=IIf(tl,ttt,Null);ttt=IIf(ttt1,Ref(ttt,-1),ttt);
pk=H==ttt;hhh=Sum(pk,BarsSince(!IsEmpty(ts)));
sss=ValueWhen(ttt1,hhh,0);sss=IIf(tl,sss,Null);sss=IIf(ttt1,Ref(sss,-1),sss);pk=pk AND hhh==sss;
pk=IIf((!IsEmpty(tl) AND IsEmpty(Ref(tl,1)) AND IsEmpty(Ref(tl,-1))),1,pk);//exception

px0=ValueWhen(pk,x,0); tx0=ValueWhen(tr,x,0);
px1=ValueWhen(pk,x,1); tx1=ValueWhen(tr,x,1);
px2=ValueWhen(pk,x,2); tx2=ValueWhen(tr,x,2);
ph0=ValueWhen(pk,H,0); tl0=ValueWhen(tr,L,0);
ph1=ValueWhen(pk,H,1); tl1=ValueWhen(tr,L,1);
ph2=ValueWhen(pk,H,2); tl2=ValueWhen(tr,L,2);

minipk=H>=Ref(HHV(H,1),-1) AND Ref(HHV(H,1),1)<H;
minitr=L<=Ref(LLV(L,1),-1) AND Ref(LLV(L,1),1)>L;

ll=tr AND tl1<tl2;
hl=tr AND tl1>tl2;
hh=pk AND ph1>ph2;
lh=pk AND ph1<ph2;
dt=pk AND ph1==ph2;
db=tr AND tl1==tl2;

if(dispZIG)
{
aa1=IIf(px0>tx1,(ph0-tl1)/(px0-tx1),0);aa1=IIf(pk,Ref(aa1,-1),aa1);ls1=aa1*(xx-tx1)+tl1;
bb1=IIf(px0>tx1 AND px1<tx1,1,0);bb1=bb1+Ref(bb1,-1);bb1=IIf(bb1,1,0);ls1=IIf(bb1,ls1,Null);
Plot(ls1,"",colorBlue,styleLine,0,0,0,-1,3);
aa1=IIf(tx0>px1,(tl0-ph1)/(tx0-px1),0);aa1=IIf(tr,Ref(aa1,-1),aa1);ls1=aa1*(xx-px1)+ph1;
bb1=IIf(tx0>px1 AND tx1<px1,1,0);bb1=bb1+Ref(bb1,-1);bb1=IIf(bb1,1,0);ls1=IIf(bb1,ls1,Null);
Plot(ls1,"",colorOrange,styleLine,0,0,0,-1);
}
if(dispVSTOP)
{
Plot(ts,"\ntrailShort",colorRed,styleLine,0,0,0,-1,1);
//Plot(el,"",colorYellow,1,0,0,0,1,3);
Plot(Ref(llls,-1),"",colorRed,styleDashed,0,0,0,-1,1);
Plot(tl,"\ntrailLong",colorGreen,styleLine,0,0,0,-1,1);
//Plot(es,"",colorBlue,1,0,0,0,1,3);
Plot(Ref(hhhs,-1),"",colorGreen,styleDashed,0,0,0,-1,1);
}
if(dispCHANNEL)
{
aa1=IIf(px0>tx1,(ph0-tl1)/(px0-tx1),0);aa1=IIf(pk,Ref(aa1,-1),aa1);ls1=aa1*(xx-tx1)+tl1;
bb1=IIf(px0>tx1 AND px1<tx1,1,0);bb1=bb1+Ref(bb1,-1);bb1=IIf(bb1,1,0);ls1=IIf(bb1,ls1,Null);
sm=IIf(bb1,Sum(minitr,BarsSince(tr)),0);lv=ValueWhen(pk,sm,0);lv=Ref(lv,-1);sm=IIf(minitr,sm,0);
lastMinitr=bb1 AND sm==lv AND sm!=0;
sm=IIf(bb1,Sum(IIf(minitr,ls1-L==HHV(IIf(minitr,ls1-L,0),BarsSince(tr)),0),BarsSince(tr)),0);
lv=ValueWhen(pk,sm,0);lv=Ref(lv,-1);sm=IIf(minitr,sm,0);
furthestMinitr=bb1 AND sm==lv AND sm!=0;furthestMinitr=ExRem(furthestMinitr,pk);
if(lastMiniPivot) mp=lastMinitr; else mp=furthestMinitr;
ltr=ValueWhen(mp,L,0);ltr=ValueWhen(tr,ltr);vls1=ValueWhen(mp,ls1,0);vls1=ValueWhen(tr,vls1);
dv=vls1-ltr;ls2=ls1-dv;ls2=IIf(ls2<ValueWhen(tr,L),Null,ls2);Ls2=IIf(Ls2<0,Null,Ls2);
ls2e=ValueWhen(pk,ls2)+ValueWhen(pk,aa1)*(xx-px1);ls2e=IIf(ls2e>ValueWhen(pk,H),Null,ls2e);
Plot(ls1,"",colorBlue,styleThick,0,0,0,-1,2);
//PlotShapes(IIf(minitr AND bb1 AND BarsSince(tr)>1,shapeSmallCircle,shapeNone),ColorRGB(0,30,0),0,L,-10);
PlotShapes(IIf(mp,shapeHollowSmallCircle,shapeNone),colorWhite,0,L,-10);
Plot(ls2,"",colorBlue,styleDashed,0,0,0,-1,1);
Plot(IIf( (tx0>px1 AND tx1<px1) OR (px0==px1 AND tx0==tx1),ls2e,Null),"",colorBlue,styleDashed,0,0,0,-1,1);

aa1=IIf(tx0>px1,(tl0-ph1)/(tx0-px1),0);aa1=IIf(tr,Ref(aa1,-1),aa1);ls1=aa1*(xx-px1)+ph1;
bb1=IIf(tx0>px1 AND tx1<px1,1,0);bb1=bb1+Ref(bb1,-1);bb1=IIf(bb1,1,0);ls1=IIf(bb1,ls1,Null);
sm=IIf(bb1,Sum(minipk,BarsSince(pk)),0);lv=ValueWhen(tr,sm,0);lv=Ref(lv,-1);sm=IIf(minipk,sm,0);
lastMinipk=bb1 AND sm==lv AND sm!=0;
sm=IIf(bb1,Sum(IIf(minipk,H-ls1==HHV(IIf(minipk,H-ls1,0),BarsSince(pk)),0),BarsSince(pk)),0);
lv=ValueWhen(tr,sm,0);lv=Ref(lv,-1);sm=IIf(minipk,sm,0);
furthestMinipk=bb1 AND sm==lv AND sm!=0;furthestMinipk=ExRem(furthestMinipk,tr);
if(lastMiniPivot) mp=lastMinipk; else mp=furthestMinipk;
htr=ValueWhen(mp,H,0);htr=ValueWhen(pk,htr);vls1=ValueWhen(mp,ls1,0);vls1=ValueWhen(pk,vls1);
dv=htr-vls1;ls2=ls1+dv;ls2=IIf(ls2>ValueWhen(pk,H),Null,ls2);Ls2=IIf(Ls2<0,Null,Ls2);
ls2e=ValueWhen(tr,ls2)+ValueWhen(tr,aa1)*(xx-tx1);ls2e=IIf(ls2e<ValueWhen(tr,L),Null,ls2e);
Plot(ls1,"",colorOrange,styleThick,0,0,0,-1,2);
//PlotShapes(IIf(minipk AND bb1 AND BarsSince(pk)>1,shapeSmallCircle,shapeNone),ColorRGB(50,0,0),0,H,10);
PlotShapes(IIf(mp,shapeHollowSmallCircle,shapeNone),colorWhite,0,H,10);
Plot(ls2,"",colorOrange,styleDashed,0,0,0,-1,1);
Plot(IIf( (px0>tx1 AND px1<tx1) OR (px0==px1 AND tx0==tx1),ls2e,Null),"",colorOrange,styleDashed,0,0,0,-1,1);
}
if(dispTRENDLINES)
{
ll_h=IIf(ll,1,0);
hl_h=IIf(hl,2,0);
hh_h=IIf(hh,3,0);
lh_h=IIf(lh,4,0);
dt_h=IIf(dt,5,0);
db_h=IIf(db,6,0);

combi=ll_h+hl_h+lh_h+hh_h;

t0=ValueWhen(combi,combi,0);
t1=ValueWhen(combi,combi,1);
t2=ValueWhen(combi,combi,2);
t3=ValueWhen(combi,combi,3);
t4=ValueWhen(combi,combi,4);

// bullish pattern LH followed by HL
bullish_LH_HL=(t1==2 AND tr) AND t2==4;valid_LH_HL=Flip(bullish_LH_HL,pk);
//PlotShapes(shapeCircle*bullish_LH_HL,colorWhite,0,L,-50);

// bearisch pattern HL followed by LH
bearish_HL_LH=(t1==4 AND pk) AND t2==2;valid_HL_LH=Flip(bearish_HL_LH,tr);
//PlotShapes(shapeCircle*bearish_HL_LH,colorWhite,0,H,50);

upchan=Flip(tr,pk);
dnchan=Flip(pk,tr);
miny=LastVisibleValue(C)-LastVisibleValue(C)/100*10000;
maxy=LastVisibleValue(C)+LastVisibleValue(C)/100*10000;
ss=ValueWhen(tr,L,1);ss=IIf(ss>maxy OR ss<miny,Null,ss);
invalid_ss=IIf(BarsSince(tr)>0 AND ts AND upchan,ss,Null);
valid_ss1=IIf(BarsSince(tr)>0 AND tl AND upchan,ss,Null);
valid_ss2=IIf(BarsSince(tr)>0 AND tl AND dnchan,ss,Null);
valid_ss3=IIf(BarsSince(tr)>0 AND ts AND dnchan,ss,Null);
valid_ss=IIf(valid_ss1,valid_ss1,IIf(valid_ss2,valid_ss2,IIf(valid_ss3,valid_ss3,Null)));
rr=ValueWhen(pk,H,1);rr=IIf(rr>maxy OR rr<miny,Null,rr);
invalid_rr=IIf(BarsSince(pk)>0 AND tl AND dnchan,rr,Null);
valid_rr1=IIf(BarsSince(pk)>0 AND ts AND dnchan,rr,Null);
valid_rr2=IIf(BarsSince(pk)>0 AND ts AND upchan,rr,Null);
valid_rr3=IIf(BarsSince(pk)>0 AND tl AND upchan,rr,Null);
valid_rr=IIf(valid_rr1,valid_rr1,IIf(valid_rr2,valid_rr2,IIf(valid_rr3,valid_rr3,Null)));

for (i=1;i<=npivTL;i++)
{
y0=ValueWhen(tr,L,i-1); 
y1=ValueWhen(tr,L,i);
x0=ValueWhen(tr,xx,i-1);
x1=ValueWhen(tr,xx,i);
aa=(y0-y1)/(x0-x1);
ls1=aa*(xx-x1)+y1;
dls1=ls1-Ref(ls1,-1);
ls1=IIf(dls1<0,Null,ls1);

if(i>2) ls1=IIf(tr,Null,ls1);
if(i==1) Plot(ls1,"",colorBrightGreen,styleLine|styleNoRescale,0,0,0,-1);
if(i==2)
{
	Plot(IIf(invalid_ss,ls1,Null),"",colorLightGrey,styleNoLine|styleDots|styleThick|styleNoRescale,0,0,0,-1);
	Plot(IIf(valid_ss,ls1,Null),"",colorDarkGreen,styleNoLine|styleDots|styleThick|styleNoRescale,0,0,0,-1);
	vv=IIf(valid_ss,ls1,Null);
	Short=valid_HL_LH AND Cross(vv,C);Short=ExRem(Short,tr);ShortPrice=C;
	PlotShapes(IIf(Short,shapeSmallDownTriangle,shapeNone),colorRed,0,H,-15);
	PlotShapes(IIf(Short,shapeSmallCircle,shapeNone),colorWhite,0,ShortPrice,0);
}
if(i>2)
{
	Plot(ls1,"",colorDarkGreen,styleNoLine|styleDots|styleThick|styleNoRescale,0,0,0,-1);
}
y0=ValueWhen(pk,H,i-1); 
y1=ValueWhen(pk,H,i);
x0=ValueWhen(pk,xx,i-1);
x1=ValueWhen(pk,xx,i);
aa=(y0-y1)/(x0-x1);
hs1=aa*(xx-x1)+y1;
dhs1=hs1-Ref(hs1,-1);
hs1=IIf(dhs1>0,Null,hs1);

if(i>2) hs1=IIf(pk,Null,hs1);
if(i==1) Plot(hs1,"",colorRed,styleLine|styleNoRescale,0,0,0,-1);
if(i==2) 
{
	Plot(IIf(invalid_rr,hs1,Null),"",colorLightGrey,styleNoLine|styleDots|styleThick|styleNoRescale,0,0,0,-1);
	Plot(IIf(valid_rr,hs1,Null),"",colorOrange,styleNoLine|styleDots|styleThick|styleNoRescale,0,0,0,-1);
	vv=IIf(valid_rr,hs1,Null);
	Buy=valid_LH_HL AND Cross(C,vv);Buy=ExRem(Buy,pk);BuyPrice=C;
	PlotShapes(IIf(Buy,shapeUpArrow,shapeNone),colorDarkGreen,0,L,-15);
	PlotShapes(IIf(Buy,shapeSmallCircle,shapeNone),colorWhite,0,BuyPrice,0);
}
if(i>2) 
{
	Plot(hs1,"",colorOrange,styleNoLine|styleDots|styleThick|styleNoRescale,0,0,0,-1);
}
}
}
Buy=0;Short=0;
if(dispSR)
{
upchan=Flip(tr,pk);
dnchan=Flip(pk,tr);
miny=LastVisibleValue(C)-LastVisibleValue(C)/100*percSR;
maxy=LastVisibleValue(C)+LastVisibleValue(C)/100*percSR;
ss=ValueWhen(tr,L,1);ss=IIf(ss>maxy OR ss<miny,Null,ss);
invalid_ss=IIf(BarsSince(tr)>0 AND ts AND upchan,ss,Null);
valid_ss1=IIf(BarsSince(tr)>0 AND tl AND upchan,ss,Null);
valid_ss2=IIf(BarsSince(tr)>0 AND tl AND dnchan,ss,Null);
valid_ss3=IIf(BarsSince(tr)>0 AND ts AND dnchan,ss,Null);
valid_ss=IIf(valid_ss1,valid_ss1,IIf(valid_ss2,valid_ss2,IIf(valid_ss3,valid_ss3,Null)));
rr=ValueWhen(pk,H,1);rr=IIf(rr>maxy OR rr<miny,Null,rr);
invalid_rr=IIf(BarsSince(pk)>0 AND tl AND dnchan,rr,Null);
valid_rr1=IIf(BarsSince(pk)>0 AND ts AND dnchan,rr,Null);
valid_rr2=IIf(BarsSince(pk)>0 AND ts AND upchan,rr,Null);
valid_rr3=IIf(BarsSince(pk)>0 AND tl AND upchan,rr,Null);
valid_rr=IIf(valid_rr1,valid_rr1,IIf(valid_rr2,valid_rr2,IIf(valid_rr3,valid_rr3,Null)));

for (i=1;i<=npivSR;i++)
{
	if(i==1)
	{
		Plot(invalid_ss,"",colorLightGrey,styleNoLine|styleDots,0,0,0,-1);
		Plot(valid_ss,"",colorRed,styleNoLine|styleDots,0,0,0,-1);
		Plot(invalid_rr,"",colorLightGrey,styleNoLine|styleDots,0,0,0,-1);
		Plot(valid_rr,"",colorBlue,styleNoLine|styleDots,0,0,0,-1);
		Buy=Buy+(Cross(C,valid_rr) AND valid_rr);
		Short=Short+(Cross(valid_ss,C) AND valid_ss);		
    }
	else if(i>1)
	{
		rr=ValueWhen(pk,H,i);rr=IIf(rr>maxy OR rr<miny,Null,rr);
		ss=ValueWhen(tr,L,i);ss=IIf(ss>maxy OR ss<miny,Null,ss);	
		Plot(ss,"",colorRed,styleNoLine|styleDots,0,0,0,-1);
		Plot(rr,"",colorBlue,styleNoLine|styleDots,0,0,0,-1);    	
	}
}
}
PlotShapes(shapeSmallCircle*tr,colorGreen,0,L,-10);
PlotShapes(shapeSmallCircle*pk,colorRed,0,H,10);
Buy=Ref(Buy,-1);Short=Ref(Short,-1);
Buy=ExRem(Buy,tr);BuyPrice=O;
Short=ExRem(Short,pk);ShortPrice=O;
PlotShapes(IIf(Buy,shapeUpTriangle,shapeNone),colorBrightGreen,0,L,-15);
PlotShapes(IIf(Buy,shapeSmallCircle,shapeNone),colorWhite,0,BuyPrice,0);
PlotShapes(IIf(Short,shapeDownTriangle,shapeNone),colorOrange,0,H,-15);
PlotShapes(IIf(Short,shapeSmallCircle,shapeNone),colorWhite,0,ShortPrice,0);		
qq=Interval()/60;
if(qq < 60){tf=" min";tt=qq;}
else if(qq >= 60 AND qq < 1440){tf=" hrs";tt=qq/60;}
else if(qq >= 1440){tf=" days";tt=(qq/60)/24;}
qq=Max(tfrm/60,Interval()/60);
if(qq < 60){tfa=" min";tta=qq;}
else if(qq >= 60 AND qq < 1440){tfa=" hrs";tta=qq/60;}
else if(qq >= 1440){tfa=" days";tta=(qq/60)/24;}

Title = Name() + 
"\nChart TF: " + tt + tf + 
"\nZig TF: " + tta + tfa;

dxhm=14;dxlm=10;dxh=0;dxl=0;dyhm=5;dylm=3;dyh=18;dyl=29;hm=30;lm=30;
dyl2=42;dylm2=16;dyhm2=18;dyh2=31;
function GetVisibleBarCount() 
{
	lvb=Status("lastvisiblebar");
	fvb=Status("firstvisiblebar");
	return Min(lvb-fvb,BarCount-fvb);
} 
function GfxConvertPixelsToBarX(Pixels)
{
	lvb=Status("lastvisiblebar");
	fvb=Status("firstvisiblebar");
	pxchartleft=Status("pxchartleft");
	pxchartwidth=Status("pxchartwidth");
	fac=pxchartwidth/Pixels;
	bar=(lvb-fvb)/fac;
	return bar;
} 
function GfxConvertPixelToValueY(Pixels) 
{
	local Miny,Maxy,pxchartbottom,pxchartheight;
	Miny=Status("axisminy");
	Maxy=Status("axismaxy");
	pxchartbottom=Status("pxchartbottom");
	pxchartheight=Status("pxchartheight");
	fac=pxchartheight/Pixels;
	Value=(Maxy-Miny)/fac;
	return Value;
} 

miny=Status("axisminy");
maxy=Status("axismaxy");
AllVisibleBars=GetVisibleBarCount();
fvb=Status("firstvisiblebar");
LowMargin=Miny+GfxConvertPixelToValueY(lm);
HighMargin=Maxy-GfxConvertPixelToValueY(hm);
dyllm=GfxConvertPixelToValueY(dylm);
dyhhm=GfxConvertPixelToValueY(dyhm);
dyll=GfxConvertPixelToValueY(dyl);
dyhh=GfxConvertPixelToValueY(dyh);
dxllm=GfxConvertPixelsToBarX(dxlm);
dxhhm=GfxConvertPixelsToBarX(dxhm);
dxll=GfxConvertPixelsToBarX(dxl);
dxhh=GfxConvertPixelsToBarX(dxh);

dyllm2=GfxConvertPixelToValueY(dylm2);
dyll2=GfxConvertPixelToValueY(dyl2);
dyhhm2=GfxConvertPixelToValueY(dyhm2);
dyhh2=GfxConvertPixelToValueY(dyh2);

dyllv=GfxConvertPixelToValueY(dyl+26);
dyhhv=GfxConvertPixelToValueY(dyhm+39);

if(disp0)
{
for(i=0;i<AllVisibleBars;i++) 
{
	if(ll[i+fvb]) 
	{
		PlotText("LL",i+fvb+dxll,L[i+fvb]-dyll,colorWhite,colorDefault);
		PlotText(""+L[i+fvb],i+fvb+dxll,L[i+fvb]-dyll2,colorWhite,colorDefault);
	}
	if(hl[i+fvb]) 
	{
		PlotText("HL",i+fvb+dxll,L[i+fvb]-dyll,colorWhite,colorDefault);
		PlotText(""+L[i+fvb],i+fvb+dxll,L[i+fvb]-dyll2,colorWhite,colorDefault);
	}
	if(db[i+fvb]) 
	{
		PlotText("DB",i+fvb+dxll,L[i+fvb]-dyll,colorWhite,colorDefault);
		PlotText(""+L[i+fvb],i+fvb+dxll,L[i+fvb]-dyll2,colorWhite,colorDefault);
	}
	if(hh[i+fvb]) 
	{
		PlotText("HH",i+fvb+dxhh,H[i+fvb]+dyhh,colorWhite,colorDefault);
		PlotText(""+H[i+fvb],i+fvb+dxhh,H[i+fvb]+dyhh2,colorWhite,colorDefault);
	}
	if(lh[i+fvb]) 
	{
		PlotText("LH",i+fvb+dxhh,H[i+fvb]+dyhh,colorWhite,colorDefault);
		PlotText(""+H[i+fvb],i+fvb+dxhh,H[i+fvb]+dyhh2,colorWhite,colorDefault);
	}
	if(dt[i+fvb]) 
	{
		PlotText("DT",i+fvb+dxhh,H[i+fvb]+dyhh,colorWhite,colorDefault);
		PlotText(""+H[i+fvb],i+fvb+dxhh,H[i+fvb]+dyhh2,colorWhite,colorDefault);
	}
}
}