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 > > > > > >
