// Downloaded From https://www.WiseStockTrader.com // AFL code by Edward Pottasch, Jan 2013 // 123 pattern (as part of uncompleted ABCD pattern) RequestTimedRefresh(0.1,True); xx=BarIndex();x=xx;Lx=LastValue(x); nbar=Param("N Pivot Bars",5,2,50,1); tf=Param("Time Frame (min)",5,1,1440,1);tfrm=in1Minute*tf; CleanPivots=ParamToggle("Use Clean Pivots","Off|On",1); PivotSymmetry=ParamToggle("Use Symmetric Pivots","Off|On",0); 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);   TimeFrameSet(tfrm); 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); 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);   if(CleanPivots) {     tr=IIf((tr==1 AND pk==1) AND px2tx2 AND Lx!=BarCount-1,False,pk);           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);             tr=IIf(tr AND ((tx0tl0) OR (tx2>px1 AND tl1>tl2) OR (px0==px1 AND tl1>tl0) OR (tl1>tl0 AND px0==tx0)),False,tr);     pk=IIf(pk AND ((px0tx1 AND ph1tl0) OR (tx2>px1 AND tl1>tl2) OR (px0==px1 AND tl1>tl0) OR (tl1>tl0 AND px0==tx0)),False,tr);     pk=IIf(pk AND (((px0tx1 AND ph11) {     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); }   ll=tr AND tl1tl2; 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); Plot(pkh,"",colorRed,styleThick,0,0,0,-1); Plot(trl,"",colorBrightGreen,styleThick,0,0,0,-1); PlotShapes(shapeSmallCircle*tr,IIf(Lx-ValueWhen(tr,x)>nbar*fact,ColorRGB(0,100,0),colorWhite),0,L,-10); PlotShapes(shapeSmallCircle*pk,IIf(Lx-ValueWhen(pk,x)>nbar*fact,ColorRGB(255,0,0),colorWhite),0,H,10);   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() + "\nNbar: " + nbar + "\nChart TF: " + tt + tf + "\nTrend TF: " + tta + tfa;   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 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; } function GfxConvertBarToPixelX(bar) {     lvb=Status("lastvisiblebar");     fvb=Status("firstvisiblebar");     pxchartleft=Status("pxchartleft");     pxchartwidth=Status("pxchartwidth");     return 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 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