Hi, You are missing a set of parenthesis. Since division takes precedence over subtraction, your calculation is doing:
C - Ref(C, -5)/Ref(C, -5)*100 What you want is: (C - Ref(C, -5)) / Ref(C, -5)*100 Parenthesis take precendence over division. http://www.amibroker.com/guide/a_language.html Note that since Ref(C, -5) is positive (Close is always positive), there is no difference between passing true or false for the abs argument. As for ROC(C, 5, true) vs. ROC(C, -5, true), the first one compares against the value 5 bars ago, the second one compares against the value 5 bars into the future! Looking at the definition of ROC, we see that the second argument (periods) is negated and used as the functional equivalent of a Ref statement to the effect Ref(array, -periods). http://www.amibroker.com/guide/afl/afl_view.php?id=126 Giving a negative number would result in a double negative (equals a positive) which means looking into the future according to Ref. http://www.amibroker.com/guide/afl/afl_view.php?id=122 Mike --- In [email protected], Radek Simcik <radek.sim...@...> wrote: > > Hi, > > I tried to figure out why below AFL code doen't give me the same > results. The value calculated using REF and ROC are different. > > AddColumn(C-Ref(C,-5)/Ref(C,-5)*100, "ROC -5 using ref", format=1.3); > AddColumn(ROC(C,5,False), "ROC 5 using ROC false", format=1.3); > AddColumn(ROC(C,5,True), "ROC 5 using ROC true", format=1.3); > > But the AFL manual says that > > if absmode = False the value returned is ( array - ref( array, > -periods ) )/ref( array, -periods ) > if absmode = True the value returned is ( array - ref( array, -periods > ) )/abs( ref( array, -periods ) ) > > Another question is what is the difference in results between > > ROC(C,5,True) and ROC(C,-5,True) > > Thank you, > > Radek >
