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
>


Reply via email to