// Downloaded From https://www.WiseStockTrader.com // AFL code by Edward Pottasch, Jan 2013 xx=BarIndex();x=xx;Lx=LastValue(x); rightStrength=Param("Fractal Pivot Right side Strength",5,0,50,1); leftStrength=Param("Fractal Pivot Left side Strength",10,0,50,1); CleanPivots=ParamToggle("Force Pivots to Alternate","Off|On",1); dispbe123=ParamToggle("Display bearish 123","Off|On",1); dispbu123=ParamToggle("Display bullish 123","Off|On",1); dispbeRetraceValues=ParamToggle("Display retrace value (Bearish)","Off|On",1); dispbuRetraceValues=ParamToggle("Display retrace value (Bullish)","Off|On",1); dispLabels=ParamToggle("Display Labels","Off|On",1); entryType=ParamToggle("Entry Type","Regular|Agressive",1); signalRangeCheck=ParamToggle("Signal Entry Range Limit","Off|On",1); extendRange=Param("Extended entry range",100,0,500,1); minRetrace=Param("Retrace Minimum",0.382,0,2,0.01); maxRetrace=Param("Retrace Maximum",0.88,0,6,0.01); pk=H>Ref(HHV(H,leftStrength),-1) AND Ref(HHV(H,rightStrength),rightStrength)<=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); if(CleanPivots) { pk=IIf((ph0>=ph1 AND tx0>px0 AND px0!=px1) OR (ph1tx1) OR (ph0>=ph1 AND tx0tx0 AND tx0!=tx1) OR (tl1>tl2 AND tx2>px1) OR (tl0<=tl1 AND px0tl2; hh=pk AND ph1>ph2; lh=pk AND ph1minRetrace AND beRetracebeCy; rr=BarsSince(be123)>=0 AND BarsSince(be123)minRetrace AND buRetrace=0 AND BarsSince(bu123)buDy; buTrendline=IIf(idx,aa*idx+bb,Null);buValidSignalArea=Flip(bu123,Ref(pk,-1)); if(signalRangeCheck) buTrendline=IIf(buValidSignalArea,buTrendline,Null); Buy=Cross(C,buTrendline) AND !IsEmpty(buTrendline);Buy=Ref(Buy,-1);BuyPrice=O; Buy=ExRem(Buy,bu123);Cover=0; GraphXSpace=5;SetChartBkColor(ColorRGB(0,0,0));SetChartOptions(0,chartShowDates); SetBarFillColor(IIf(C>O,colorGreen,IIf(C<=O,colorRed,colorLightGrey))); Plot(C,"Price",IIf(C>O,colorDarkGreen,IIf(C<=O,colorDarkRed,colorLightGrey)),64,0,0,0,0); PlotShapes(shapeSmallCircle*tr,IIf(Lx-ValueWhen(tr,x)>rightStrength,ColorRGB(0,100,0),colorWhite),0,L,-10); PlotShapes(shapeSmallCircle*pk,IIf(Lx-ValueWhen(pk,x)>rightStrength,ColorRGB(255,0,0),colorWhite),0,H,10); if(dispbe123) { Plot(beTrendline,"",ColorRGB(100,0,0),styleDots|styleNoLine,0,0,0,0); PlotShapes(IIf(Short,shapeSmallDownTriangle,shapeNone),colorRed,0,H,IIf(Short AND Sell,-30,-15)); PlotShapes(IIf(Short,shapeSmallCircle,shapeNone),colorWhite,0,ShortPrice,0); } if(dispbu123) { Plot(buTrendline,"",ColorRGB(0,100,0),styleDots|styleNoLine,0,0,0,0); PlotShapes(IIf(Buy,shapeUpArrow,shapeNone),colorDarkGreen,0,L,-15); PlotShapes(IIf(Buy,shapeSmallCircle,shapeNone),colorWhite,0,BuyPrice,0); } abcdy_up=27; abcdy_dn=15; 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 Nz(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 Nz(Value); } function GfxConvertBarToPixelX(bar) { lvb=Status("lastvisiblebar"); fvb=Status("firstvisiblebar"); pxchartleft=Status("pxchartleft"); pxchartwidth=Status("pxchartwidth"); return Nz(pxchartleft+bar*pxchartwidth/(lvb-fvb+1)); } function GfxConvertValueToPixelY(value) { local Miny,Maxy,pxchartbottom,pxchartheight; Miny=Status("axisminy"); Maxy=Status("axismaxy"); pxchartbottom=Status("pxchartbottom"); pxchartheight=Status("pxchartheight"); return Nz(pxchartbottom-floor(0.5+(Value-Miny)*pxchartheight/(Maxy-Miny))); } AllVisibleBars=GetVisibleBarCount(); fvb=Status("firstvisiblebar"); abcdy_up=GfxConvertPixelToValueY(abcdy_up); abcdy_dn=GfxConvertPixelToValueY(abcdy_dn); for(i=0;i