Note that you could also just choose to pass the values as parameters 
rather than using the global keyword.

e.g. DoBacktest(MaxPositions);

Mike

--- In [email protected], "Mike" <[EMAIL PROTECTED]> wrote:
>
> Hi,
> 
> There may be a better way, but the following will achieve what 
you're 
> trying to do. 
> 
> In your main.afl, #include an external file which contains your 
> custom backtest logic. Initialize all the variables that you need 
to 
> use before starting the backtest. You'll still start the backtest 
> from main.afl, but simply defer all processing to the external file 
> via a procedure call. e.g.
> 
> main.afl
> --------
> 
> #include<backtest.afl>
> 
> MaxPositions = 20;
> 
> SetCustomBacktestProc("");
> if (Status("action") == actionPortfolio) {
>   DoBacktest();
> }
> 
> Buy = Cover = IIF(DayOfWeek() == 1, 1, 0);
> Sell = Short = IIF(DayOfWeek() == 4, 1, 0);
> 
> 
> backtest.afl
> ------------
> 
> procedure DoBacktest() {
>   global MaxPositions;
> 
>   bo = GetBacktesterObject();
>   bo.backtest();
>   bo.addCustomMetric("Max Positions", MaxPositions);
> }
> 
> 
> Mike
> 
> --- In [email protected], "Graham Johnson" <grahamj@> 
> wrote:
> >
> > For the sake of code re-use, I wish to have CBT code in its own 
AFL 
> and 
> > access it using SetCustomBacktestProc("<filename>");
> > 
> > That works fine except that in the Main.afl there is a variable 
set 
> for 
> > Max Open Positions and I want to pass that value to CBT.afl for 
> > inclusion in the backtest report using AddCustomMetric.
> > 
> > Tried using Global but that didn't get a result - CBT.afl didn't 
> > recognise the variable name.
> > 
> > I presume that from Main.afl I could write the value to a file 
and 
> then 
> > retrieve the file in CBT.afl.  Gets a bit messy when wanting to 
> pass 
> > the values of several variables.
> > 
> > Is there a better way, please?
> > 
> > Graham
> >
>


Reply via email to