// Downloaded From https://www.WiseStockTrader.com SetBarsRequired(100000,100000); //------------------------------------------------------------------+ // Block 1 | //------------------------------------------------------------------+ VR=ParamToggle("View Renko","Bricks|Lines/Bars",0); FV=Param("Initial size volatility",0.5,0.001,50,0.001); MV=Param("Method calculation volatility",0,0,2,1); PeriodVol=Param("Period calculation volatility",14,2,100,1); Multiplier=Param("Multiplier volatility",1,0.1,10,0.1); MR=ParamToggle("Method Renko","floating|fixed",1); SG=ParamToggle("Show gap","No|Yes",1); CG=ParamColor("Colour show gap",11); MaxBS=Param("Maximum size brick",0,0,10,0.1); MinBS=Param("Minimum size brick",0,0,10,0.1); RenkoUp=ParamColor("Colour Renko upwards",colorBlack); RenkoDown=ParamColor("Colour Renko downwards",colorBlack); SB=ParamStyle("View bars",defaultval=styleCandle,mask=maskPrice); color3=ParamColor("Colour bars",colorBlack); History=Param("History size",5000,2,BarCount-1,1); //------------------------------------------------------------------+ // Block 2 | //------------------------------------------------------------------+ i=Max(BarCount-1-History,PeriodVol+1); r=j=0; direction=0; iGapUp=iGapDown=0; rOpen[0]=rHigh[0]=rLow[0]=rClose[0]=jUp=jDown=Open[i]; //------------------------------------------------------------------- switch(MV) { case 0: Volatility=FV; break; case 1: Volatility=ATR(PeriodVol)*Multiplier; break; case 2: Volatility=StDev(Open,PeriodVol)*Multiplier; break; } BrickSize=Volatility[i-1]; //-------------------------------------------------------------------+ // Block 3 | //-------------------------------------------------------------------+ while(i<=BarCount-1) { if(SG==1) { if(High[i-1]High[i]) { iGapDown[i]=1; } } } //------------------------------------------------------------------- if(MR==0) { BrickSize=Volatility[i-1]; if(MaxBS>0) {BrickSize=Min(MaxBS,BrickSize);} if(MinBS>0) {BrickSize=Max(MinBS,BrickSize);} } //------------------------------------------------------------------+ // Block 4 | //------------------------------------------------------------------+ if(direction==0) { if(Open[i]-rClose[r]>BrickSize) { rClose[r]=rOpen[r]+BrickSize; rHigh[r]=rClose[r]; direction=1; //------------------------------------------------------------------- BrickSize=Volatility[i]; if(MaxBS>0) {BrickSize=Min(MaxBS,BrickSize);} if(MinBS>0) {BrickSize=Max(MinBS,BrickSize);} //------------------------------------------------------------------- if(iGapUp[i]==1|iGapDown[i]==1) { color[r]=CG; } else { color[r]=RenkoUp; } continue; } //------------------------------------------------------------------- else { if(rClose[r]-Open[i]>BrickSize) { rClose[r]=rOpen[r]-BrickSize; rLow[r]=rClose[r]; direction=2; //------------------------------------------------------------------- BrickSize=Volatility[i]; if(MaxBS>0) {BrickSize=Min(MaxBS,BrickSize);} if(MinBS>0) {BrickSize=Max(MinBS,BrickSize);} //------------------------------------------------------------------- if(iGapUp[i]==1|iGapDown[i]==1) { color[r]=CG; } else { color[r]=RenkoDown; } continue; } } } //------------------------------------------------------------------+ // Block 5 | //------------------------------------------------------------------+ else { if(direction==1) { if(rOpen[r]-Open[i]>BrickSize) { r++; rOpen[r]=rOpen[r-1]; rHigh[r]=rOpen[r]; rClose[r]=rOpen[r]-BrickSize; rLow[r]=rClose[r]; direction=2; //------------------------------------------------------------------- BrickSize=Volatility[i]; if(MaxBS>0) {BrickSize=Min(MaxBS,BrickSize);} if(MinBS>0) {BrickSize=Max(MinBS,BrickSize);} //------------------------------------------------------------------- if(iGapUp[i]==1|iGapDown[i]==1) { color[r]=CG; } else { color[r]=RenkoDown; } continue; } //------------------------------------------------------------------- else { while(Open[i]-rClose[r]>BrickSize) { r++; rOpen[r]=rClose[r-1]; rLow[r]=rOpen[r]; rClose[r]=rOpen[r]+BrickSize; rHigh[r]=rClose[r]; //------------------------------------------------------------------- BrickSize=Volatility[i]; if(MaxBS>0) {BrickSize=Min(MaxBS,BrickSize);} if(MinBS>0) {BrickSize=Max(MinBS,BrickSize);} //------------------------------------------------------------------- if(iGapUp[i]==1|iGapDown[i]==1) { color[r]=CG; } else { color[r]=RenkoUp; } } } } //------------------------------------------------------------------+ // Block 6 | //------------------------------------------------------------------+ else { if(direction==2) { if(Open[i]-rOpen[r]>BrickSize) { r++; rOpen[r]=rOpen[r-1]; rLow[r]=rOpen[r]; rClose[r]=rOpen[r]+BrickSize; rHigh[r]=rClose[r]; direction=1; //------------------------------------------------------------------- BrickSize=Volatility[i]; if(MaxBS>0) {BrickSize=Min(MaxBS,BrickSize);} if(MinBS>0) {BrickSize=Max(MinBS,BrickSize);} //------------------------------------------------------------------- if(iGapUp[i]==1|iGapDown[i]==1) { color[r]=CG; } else { color[r]=RenkoUp; } continue; } //------------------------------------------------------------------- else { while(rClose[r]-Open[i]>BrickSize) { r++; rOpen[r]=rClose[r-1]; rHigh[r]=rOpen[r]; rClose[r]=rOpen[r]-BrickSize; rLow[r]=rClose[r]; //------------------------------------------------------------------- BrickSize=Volatility[i]; if(MaxBS>0) {BrickSize=Min(MaxBS,BrickSize);} if(MinBS>0) {BrickSize=Max(MinBS,BrickSize);} //------------------------------------------------------------------- if(iGapUp[i]==1|iGapDown[i]==1) { color[r]=CG; } else { color[r]=RenkoDown; } } } } } } //------------------------------------------------------------------+ // Block 7 | //------------------------------------------------------------------+ if(VR==1) { jOpen[j]=Open[i]; jHigh[j]=High[i]; jLow[j]=Low[i]; jClose[j]=Close[i]; //------------------------------------------------------------------- if(direction==1) { jUp[j]=rClose[r]; jDown[j]=rOpen[r]; color2[j]=color[r]; } else { if(direction==2) { jUp[j]=rOpen[r]; jDown[j]=rClose[r]; color2[j]=color[r]; } } j++; } i++; } //------------------------------------------------------------------+ // Block 8 | //------------------------------------------------------------------+ if(VR==1) { delta=BarCount-j; jOpen=Ref(jOpen,-delta); jHigh=Ref(jHigh,-delta); jLow=Ref(jLow,-delta); jClose=Ref(jClose,-delta); jUp=Ref(jUp,-delta); jDown=Ref(jDown,-delta); color2=Ref(color2,-delta); SetChartOptions(0,chartShowArrows|chartShowDates); _N(Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, Close %g (%.1f%%) {{VALUES}}", O, H, L, C, SelectedValue( ROC( C, 1 ) ) )); PlotOHLC(jOpen,jHigh,jLow,jClose,"SRI",color3,SB); Plot(jUp,"Up",color2,styleThick); Plot(jDown,"Down",color2,styleThick); } //------------------------------------------------------------------- else { delta=BarCount-1-r; rOpen=Ref(rOpen,-delta); rHigh=Ref(rHigh,-delta); rLow=Ref(rLow,-delta); rClose=Ref(rClose,-delta); color=Ref(color,-delta); PlotOHLC(rOpen,rHigh,rLow,rClose,"SRI",color,styleCandle); }