Allan,

Writing loops offers ultimate control. For the rare case that array processing 
is unable to do the job, loops are the only alternative.

For developers accustomed to languages such as C, C++, Java, etc. loops are 
also more familiar than working with arrays. However, AFL is built upon array 
processing and choosing an array based solution will almost always be faster 
than a looping version.

That being said, I believe that the looping example that you quote was written 
by Tomasz. As such, there almost certainly is some subtlety of the particular 
example that could not be done using arrays. Or perhaps an array implementation 
would have involved too much indirection as to be overly confusing.

Generally speaking, the vast majority of looping code can be replaced by use of 
Flip, ExRem, ValueWhen. The one exception is when later elements of an array 
are dependent upon previous elements of that same array. Even then, AMA and 
AMA2 can often handle it.

In the end, what's most important is that you understand the code. So, go with 
whichever approach that you find most natural, while still accomplishing the 
task at hand.

Mike

--- In [email protected], "matrix10014" <alla...@...> wrote:
>
> Thank you Mike..
> 
> I do have a couple of questions.Amibroker gives an example of scaling out of 
> trades and uses code such as the following snippet.
> 
> -------------------------------------------
> priceatbuy=0; 
> highsincebuy = 0; 
> 
> exit = 0; 
> 
> for( i = 0; i < BarCount; i++ ) 
> { 
>    if( priceatbuy == 0 AND Buy[ i ] ) 
>     { 
>        priceatbuy = BuyPrice[ i ]; 
>     } 
> 
>    if( priceatbuy > 0 ) 
>     { 
> -------------------------------------------
> 
> I have a better chance of running a 3 minute mile than coding something like 
> that.I noticed in the examples you sent me,the code was more digestable..Here 
> is a snippet of what you sent
> 
> ------------------------------------------------------------------
> "Buy = firstTrigger + (secondTrigger * sigScaleIn) + (thirdTrigger * 
> sigScaleIn)
> + (fourthTrigger * sigScaleIn);
> //SetPositionSize(IIf(firstTrigger, 100, IIf(secondTrigger, 200,
> IIf(thirdTrigger, 300, 400))), spsShares);
> SetPositionSize(IIf(firstTrigger, 1000, IIf(secondTrigger, 2000,
> IIf(thirdTrigger, 3000, 4000))), spsValue);"
> -----------------------------------------------------------------
> 
> What are the differences between the two approaches?
> 
> If I understand FLIP,EXREM,VALUEWHEN,SIGSCALEIN and other functions in your 
> code,does that serve as a workoaround for the code at the top of the 
> page??Are those functions intended for mere mortals such as myself??
> 
> Thanks for the help,
> 
> 
> Allan
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> --- In [email protected], "Mike" <sfclimbers@> wrote:
> >
> > Hi,
> > 
> > There have been a couple of complete examples in the last week or so:
> > 
> > http://finance.groups.yahoo.com/group/amibroker/message/146956
> > http://finance.groups.yahoo.com/group/amibroker/message/146976
> > 
> > Mike
> > 
> > --- In [email protected], "matrix10014" <allansn@> wrote:
> > >
> > > Would anyone be so kind to post code to scale in to a position.I have a 
> > > bear of a time coding in AFL and would like to purchase 50% of my 
> > > position on a signal,and the other 50% xATR's lower i.e 
> > > entry price - optimized value x ATR..
> > > 
> > > 
> > > Thanks in advance
> > > 
> > > Allan
> > >
> >
>


Reply via email to