// Downloaded From https://www.WiseStockTrader.com SetBarsRequired(sbrAll,sbrAll); xx=BarIndex();x=xx;Lx=LastValue(x); lvb=Min(Lx,Status("lastvisiblebarindex")); rightStrength=Param("Right Strength",5,1,50,1); leftStrength=Param("Left Strength",5,1,50,1); rightStrength_mini=Param("Right Strength (Mini Pivot)",1,1,50,1); leftStrength_mini=Param("Left Strength (Mini Pivot)",1,1,50,1); showUpGap=ParamToggle("Display Up Gap","No|Yes",1); showDnGap=ParamToggle("Display Dn Gap","No|Yes",1); minimumGapFactor=Param("Minimum Gap Factor",0.5,0,5,0.01); tf=Param("Time Frame (Minutes)",5,1,1440,1);tfrm=in1Minute*tf; cp=ParamToggle("Clean Mini Pivots","No|Yes",0); chartArea=ParamToggle("Display Area","Visible Chart|Complete Chart",0); if(chartArea==0)fvb=Status("firstvisiblebarindex"); if(chartArea==1)fvb=0; GfxSetOverlayMode(1); GfxSetCoordsMode(1); GfxSetBkMode(1); cc=Random(); cntDnGap=valDnGapHi=valDnGapLo=idxDnGapStart=idxDnGapEnd=0; cntUpGap=valUpGapHi=valUpGapLo=idxUpGapStart=idxUpGapEnd=0; function pkID(rightStrength,leftStrength) { pk=H>Ref(HHV(H,leftStrength),-1) AND H>=Ref(HHV(H,rightStrength),rightStrength); return pk; } function trID(rightStrength,leftStrength) { tr=L1) { 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; } pkm=pkID(rightStrength_mini,leftStrength_mini); trm=trID(rightStrength_mini,leftStrength_mini); function cleanMiniPivots() { pkidx=tridx=0; for(i=0;i=H[pkidx]) { pkm[pkidx]=0; pkidx=i; } else if(pkidx!=0 AND H[i]L[tridx]) { trm[i]=0; } else { tridx=i; } pkidx=0; } } } if(cp) cleanMiniPivots(); pkHigh1=Ref(ValueWhen(pk,H,1),-(rightStrength+1)); trLow1=Ref(ValueWhen(Tr,L,1),-(rightStrength+1)); pkHigh0=ValueWhen(pkm,H,0); trLow0=ValueWhen(trm,L,0); minimumGap=minimumGapFactor*Ref(ATR(5),-1); upGap=Cross(C,pkHigh1) AND pkHigh1minimumGap; dnGap=Cross(trLow1,C) AND trLow1>pkHigh0 AND (trLow1-pkHigh0)>minimumGap; gapBaseUp=ValueWhen(upGap,pkHigh1); gapBaseDn=ValueWhen(dnGap,trLow1); gapExtrUp=ValueWhen(upGap,trLow0); gapExtrDn=ValueWhen(dnGap,pkHigh0); function drawRectangle(x1,y1,x2,y2,clr) { GfxSelectPen(clr); GfxSelectSolidBrush(clr); GfxPolygon(x1,y1,x2,y1,x2,y2,x1,y2); } function locateUpGapArea() { for(i=fvb;i=valUpGapLo[cntUpGap]) { idxUpGapEnd[cntUpgap]=j; break; } else if(j==(BarCount-1)) { idxUpGapEnd[cntUpgap]=j; break; } } cntUpGap=cntUpGap+1; } } } function locateDnGapArea() { for(i=fvb;ivalDnGapHi[cntDnGap] AND H[j-1]<=valDnGapHi[cntDnGap]) { idxDnGapEnd[cntDngap]=j; break; } else if(j==(BarCount-1)) { idxDnGapEnd[cntDngap]=j; break; } } cntDnGap=cntDnGap+1; } } } function drawUpGapZones() { for(i=0;iO,colorGreen,IIf(C<=O,colorRed,colorLightGrey))); Plot(C,"Price",IIf(C>O,colorDarkGreen,IIf(C<=O,colorDarkRed,colorLightGrey)),64,null,null,0,0,1); PlotShapes(shapeCircle*tr,IIf(Lx-ValueWhen(tr,x)>rightStrength,ColorRGB(0,255,0),colorWhite),0,L,-10); PlotShapes(shapeCircle*pk,IIf(Lx-ValueWhen(pk,x)>rightStrength,ColorRGB(255,0,0),colorWhite),0,H,10); PlotShapes(shapeSmallCircle*trm,IIf(Lx-ValueWhen(tr,x)>rightStrength_mini,ColorRGB(0,70,0),colorWhite),0,L,-10); PlotShapes(shapeSmallCircle*pkm,IIf(Lx-ValueWhen(pk,x)>rightStrength_mini,ColorRGB(70,0,0),colorWhite),0,H,10); Plot(pkHigh1,"",colorBlue,1,Null,Null,0,2,1); Plot(trLow1,"",colorRed,1,Null,Null,0,2,1); if(showDnGap) { locateDnGapArea(); drawDnGapZones(); } if(showUpGap) { locateUpGapArea(); drawUpGapZones(); }