// Downloaded From https://www.WiseStockTrader.com _SECTION_BEGIN("Price "); SetBarsRequired(10000,10000); GraphXSpace = 3; SetChartBkColor(ParamColor("Background Colour",colorWhite)); Plot( C, "Close", ParamColor("Color", colorDefault ), styleNoTitle | ParamStyle("Style") | GetPriceStyle() ); Chartscale=ParamToggle("Chart Scale","Linear|Logarithmic",0); if( ChartScale == 0 ) SetChartOptions(1,chartShowDates); else SetChartOptions(1,chartShowDates|chartLogarithmic ); ///// GFX Functions /////// function GetVisibleBarCount() { lvb = Status( "lastvisiblebar" ); fvb = Status( "firstvisiblebar" ); return Min( Lvb - fvb, BarCount - fvb ); } function GfxConvertValueToPixelY( Value ) { local Miny, Maxy, pxchartbottom, pxchartheight; Miny = Status( "axisminy" ); Maxy = Status( "axismaxy" ); pxchartbottom = Status( "pxchartbottom" ); pxchartheight = Status( "pxchartheight" ); return pxchartbottom - floor( 0.5+ ( Value - Miny ) * pxchartheight / ( Maxy - Miny ) ); } function GfxConvertValueToPixelYlog( Value ) { local Miny, Maxy, pxchartbottom, pxchartheight; pxchartheight = Status( "pxchartheight" ); pxchartbottom = Status( "pxchartbottom" ); Miny = Status( "axisminy" ); Maxy = Status( "axismaxy" ); x = log( Value / Miny ) / log( Maxy / Miny ); return pxchartbottom - round( pxchartheight * x); } _SECTION_BEGIN( "Support and Resistance" ); // AFL code by Edward Pottasch, Jan 2013 procedure alternate_proc(pk,tr,sumpk,sumtr) { global pkg; global trg; pkg=pk;trg=tr; idxpk=0; idxtr=0; flgtr=0; flgpk=0; for(i=1;i1 AND !tr[i]) OR (pk[i] AND flgpk==1) ) { if(H[i]>=H[idxpk]) { pkg[idxpk]=0; idxpk=i; flgpk=0; } else if(H[i]1 AND !pk[i]) OR (tr[i] AND flgtr==1) ) { if(L[i]<=L[idxtr]) { trg[idxtr]=0; idxtr=i; flgtr=0; } else if(L[i]>L[idxtr]) { trg[i]=0; flgtr=0; } } else if(pk[i] AND tr[i]) { if(sumpk[i-1]>sumtr[i-1]) { pkg[i]=0; flgtr=1; idxtr=i; } else if(sumtr[i-1]>sumpk[i-1]) { trg[i]=0; flgpk=1; idxpk=i; } } } } procedure calculatePivots(tfrm,PivotSymmetry,nbar,CleanPivots,x) { TimeFrameSet(tfrm); global tr;global pk;global px0;global px1;global px2;global ph0;global ph1;global ph2; global trl;global pkh;global tx0;global tx1;global tx2;global tl0;global tl1;global tl2; global fact; if(PivotSymmetry) { fc=1; pk=H>Ref(HHV(H,nbar*fc),-1) AND Ref(HHV(H,nbar),nbar)<=H; tr=L=L; } else { fc=2; pk=H>Ref(HHV(H,nbar*fc),-1) AND Ref(HHV(H,nbar),nbar)<=H; tr=L=L; } 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); sumpk=Sum(pk,BarsSince(tr));sumtr=Sum(tr,BarsSince(pk)); if(CleanPivots) { alternate_proc(pk,tr,sumpk,sumtr); pk=pkg; tr=trg; 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); px3=ValueWhen(pk,x,3); tx3=ValueWhen(tr,x,3); 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); ph3=ValueWhen(pk,H,3); tl3=ValueWhen(tr,L,3); } pkh=IIf(pk,H,Null); trl=IIf(tr,L,Null); TimeFrameRestore(); fact=Nz(Max(tfrm/60,Interval()/60)/(Interval()/60)); if(fact==0)fact=1; Lkbk=Nz(tfrm/Interval()); if(Lkbk>1) { pk=TimeFrameExpand(pk,tfrm,expandFirst); pkh=TimeFrameExpand(pkh,tfrm,expandFirst); pkhs=IIf(!IsEmpty(pkh),1,0);pkhs=pkhs-Ref(pkhs,-1); pk=pk AND H==pkh; cond1=Sum(pk,BarsSince(pkhs==1)+1)==1 AND pk; pk=pk AND cond1; tr=TimeFrameExpand(tr,tfrm,expandFirst); trl=TimeFrameExpand(trl,tfrm,expandFirst); trls=IIf(!IsEmpty(trl),1,0);trls=trls-Ref(trls,-1); tr=tr AND L==trl; cond1=Sum(tr,BarsSince(trls==1)+1)==1 AND tr; tr=tr AND cond1; 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); px3=ValueWhen(pk,x,3); tx3=ValueWhen(tr,x,3); 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); ph3=ValueWhen(pk,H,3); tl3=ValueWhen(tr,L,3); } } function displayLines(pk,tr,lnColorRes,lnColorSup,lnWidthRes,lnWidthSup) { pxchartright=Status("pxchartright"); AllVisibleBars=GetVisibleBarCount(); for(i=0;ihval) { DisplayRes=0; break; } } if(DisplayRes) { x0=i; y0=H[i]; x1=BarCount; y1=H[i]; Plot(LineArray(x0,y0,x1,y1,1),"",lnColorRes,styleLine|styleNoRescale|styleNoLabel,0,0,0,0,lnWidthRes); if(Chartscale==0) YPos=GfxConvertValueToPixelY(y1); else YPos=GfxConvertValueToPixelYLog(y1); GfxSetTextAlign(0); GfxSetBkColor(colorWhite); GfxSelectFont("Tahoma",8,650); YValue = StrRight( NumToStr( y1, 4.3,0 ), 9 ); GfxSetTextColor(colorLightGrey); //GfxTextOut(""+YValue,pxchartright-60,YPos-12); RequestTimedRefresh( 0.1 ); } } if(tr[i]) { lval=L[i]; for(j=i;j