[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [amibroker] Re: AFL drives me nuts



PureBytes Links

Trading Reference Links

Hello Daniel - I didn't try to understand what you understand, but hope this helps. 

As an indicator or/and explore exercise,  Try the indicator.  Uses the native AFL CUM function

and compares it with accumulating the hits in a loop while plotting the result.

Best regards

Joe

 

 

// Using native AFL CUM function rather than looping through an array

//

Accum[0] = 0;

// Build array of 1's and 0's based on the logic

Array = Volume > EMA(V,50);

for (i = 1; i <= BarCount-1; i++)

{

if (array[i]==1)

{

Accum[i] = Accum[i-1] + 1;

}

else

accum[i] = accum[i-1];

}

// AFL

Accum2 = Cum(array);

Title = "Counting all the hits where vol > than 50 day moving average = " + WriteVal(accum) + "\n" +"Using the AFL function Cum= " + WriteVal(Accum2);

Plot(accum2,"accum2",colorBlue,styleThick);

Filter =1;

AddColumn(array,"Vol Hits");

AddColumn(accum,"Accum",1.0);

AddColumn(accum2,"Accum2",1.0);

----- Original Message -----
Sent: Sunday, April 09, 2006 12:19 PM
Subject: Re: [amibroker] Re: AFL drives me nuts

OK, now I understand what I was confused about.  AFL is much simpler than I
had imagined.   

I thought that the script is executed once completely for each bar, from the
first bar to the last.  To allow this, I thought the array expressions were
interpreted relative to the current bar, so that A + B means A[currentBar] +
B[currentBar].   This seemed reasonable because every bar should only depend
on previously calculated data, either earlier in the script or in previous
bars.

Moreover, doing the calculation that way would allow realtime processing to
run the script on just the very last bar, rather than repeat it for all bars
in the time range (or required bars).  I really think AFL should have this
feature somehow. 

Never mind how I imagined the script got ahold of future data, which shouldnt
be allowed anyway.  Another contradiction was how explicit loops relate to
the array operations.

So the correct model (I believe) is that A + B iterates through the entire
array(s) at that time.  And Ref(A, -1) creates a new array that shifts the
entire array of A forward one bar before doing anything else.   That's why
you can't do the equivalent of accumulating across all bars without an
explicit loop or by using the Cum function (or maybe faking it with some
other function that has the effect of accumulating).

Cum(x):
  Cum[0] = x;
  for (i = 1; i < lastBar; i++)
    Cum[i] = Cum[i-1] + x;


I'd like to see clear documentation on all this in the reference manual. 


On Thursday 06 April 2006 01:05 am, Graham wrote:
> You will not get a cumulative effext by referencing the variable
> within itself like this
> Result1 = Ref(Result1, -1) +
>        Iif( Higher, Iif( Close > Open, 1.5, 1),
>         Iif( Lower, Iif( Close < Open, -1.5, 1),  0));
>
> If you do not want to use loops which is far better you could try
> this.

Do you mean that it is far better to use loops, or to not use loops?  I
assumed it was better to not use loops, to let AmiBroker internals do the
looping, instead of interpreting the loop in script code.

> From what I can see your results will be different because you
> ahve added a different value for result1 with the added conditions and
> values
>
> Result1 = cum(
>        Iif( Higher, Iif( Close > Open, 1.5, 1),
>         Iif( Lower, Iif( Close < Open, -1.5, 1),  0)) );

You are correct -I made a mistake.  The "1" in the last line should be "-1".

The results are still different between the explicit loop and using the AFL
array calculations.  The explicit loop seems to not start at the beginning of
the data, when viewing the charts.  I guess this is caused by the "quick"
mode.



Please note that this group is for discussion between users only.

To get support from AmiBroker please send an e-mail directly to
SUPPORT {at} amibroker.com

For other support material please check also:
http://www.amibroker.com/support.html





SPONSORED LINKS
Investment management software Real estate investment software Investment property software
Software support Real estate investment analysis software Investment software


YAHOO! GROUPS LINKS