/*[[ Name := ROC with Price Author := Alejandro Galindo (original version from SPECULATOR) Link := Notes := Separate Window := no First Color := CornflowerBlue First Draw Type := Line First Symbol := 217 Use Second Data := no ]]*/ input: vPeriod(10); var: shift(0),loopbegin(0),ROC(0); var: first(True),prevbars(0); var: cnt(0); SetLoopCount(0); //*********************************************************************************** // check for additional bars loading or total reloading If Bars < prevbars or Bars-prevbars>1 Then first = True; prevbars = Bars; // loopbegin1 prevent couning of counted bars exclude current If first Then { loopbegin = Bars-vPeriod-2; If loopbegin < 0 Then Exit; // not enough bars for counting first = False; // this block is to be evaluated once only } Else { loopbegin = Bars - (Bars-vPeriod-2); } //*********************************************************************************** loopbegin = loopbegin+1; // current bar is to be recounted too for shift = loopbegin downto 0 { //ROC= (((Close[shift]-Close[shift+vPeriod])/Close[shift+vPeriod]*100)+Point);// /Close[shift+vPeriod] ROC= (((Close[shift]-Close[shift+vPeriod])/Close[shift+vPeriod])+Point);// /Close[shift+vPeriod] if ROC>0 then SetIndexValue(shift, ROC+close[shift]) else SetIndexValue(shift,close[shift]+ROC); loopbegin = loopbegin-1; // prevent to previous bars recounting };