In answer to your questions... it sounds like you haven't fully grasped the 
main concept of AFL yet... i.e. that it operates on arrays.

You are still thinking along the lines of a traditional programming language 
where you iterate through the array bar by bar.

AFL functions operate on 'arrays'. You really need to study the manual a little 
more and hammer this point home in your head. It is the great gift of AFL that 
generally very little looping is required.

For example,

Buy = 1;

Sets every element of the Buy array to be 1.
Now if you said, 

Buy = IIf (Cross (TimeNum(), 093000), True, False);

This would set every element of the Buy array (no looping required) to a new 
value based on the outcome of IIf (Cross (TimeNum(), 093000), True, False); 
(the outcome of that is an array itself - not a number). In this case it would 
set every element to zero (false) except those where the current time cross 
09.30 am...

You just need to play around with it.

--- In [email protected], "pipadder" <pipad...@...> wrote:
>
> 
> 
> 
> 
> 
> Hi Mike, and thanks for taking the time to answer my questions and steer me 
> in the right direction. I have read the links you provided. I had already 
> read a couple of them but a more careful reading was clearly beneficial.
>  
> > I suspect that the lack of response is due to the fact that your post seems 
> > to span multiple areas of expertise. The scenarios of your questions 
> > suggest real time live trading. Yet, the questions themselves are phrased 
> > as backtesting.
> > 
> 
> Mmmm... yes, it appears I was a little clumsy in my explanations. Let me 
> clarify: initially, I am interested in Amibroker only as a backtesting 
> platform. I want to use it to develop/backtest/optimize my trading systems, 
> which I use for forex trading. I trade them live using a different platform 
> (MT4) which doesn't meet my backtesting needs anymore. For the time being 
> I'll keep on using it for live trading, but I clearly need something more 
> capable for system development.
> 
> Anyway, regarding some of my questions, I'll follow your advice and try to be 
> more clear and break them into smaller chunks.
> 
> > AmiBroker backtesting operates on a predefined range of fixed bars, first 
> > generating signals simultaneously for all bars (array manipulations 
> > dictated by your script), then linearly iterating over the bars to sort and 
> > process the signals, applying portfolio management along the way. Details 
> > of the second phase (sorting/applying of signals) are largely hidden from 
> > user, treated as a black box (though user is free to override all behavior).
> > 
> 
>  Ok... If I understand it correctly it will work like this: I have my whole 
> price history stored in a number of linear arrays, each one containing a 
> feature of the bars (open, close, high, low...). The first element of the 
> "close" array (index 0) is the closing price of my oldest bar. The last 
> element of the "close" array (index N-1 if I have N bars) is the closing 
> price of my last (most recent) bar. This is clear enough.
> 
> Now I start the backtest, and my first questions.
> 
> 1) We get to the first bar. All the code of my script is executed for the 
> prices corresponding to this bar to check whether any buy/sell conditions are 
> verified, etc. When we go to the next bar, my code will be executed again for 
> that bar. And so on and so forth. My script is executed for each new bar the 
> backtester runs through. Is that correct? 
> 
> 2) The amibroker functions in my script that don't need a specific bar index 
> as an input always refer to the current bar in the iteration. Correct? (I 
> realize there are also functions like moving averages that require to look 
> back a number of bars, and other like "ref" that let you access other bars, I 
> am just asking whether stuff like "Buy=..." always refers to the current 
> bar).   
> 
> 
> I think that is enough for now, once I am sure I am getting this right I can 
> hopefully follow up with more questions ;)
> 
> Thanks again!
>


Reply via email to