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

[amibroker] Re: Adding a Custom Metric to Backtest Report



PureBytes Links

Trading Reference Links

Hi,

Note that your loop will iterate until 'a' equals 5, at which point 
the looping will terminate. In your backtest code, you are referring 
to the value of 'a' which we've just established will always be 5. 
The custom backtest code is run *after* the rest of the script code 
has been run for all symbols.

Mike

--- In amibroker@xxxxxxxxxxxxxxx, "ozzyapeman" <zoopfree@xxx> wrote:
>
> Thank you for pointing out that specific example. That helps me add 
the
> column to the backtest report.
> 
> But I am still at a loss in feeding back the actual "Condition" 
value to
> the custom metric. If I was building that custom metric from other
> metrics already in the report, it would be easy (and I have done so 
in
> the past).
> 
> But how do I pass back the value of an actual variable from my 
trading
> AFL, each time a Buy is true?
> 
> This is what I now have, but the Condition column always shows "5" 
in
> the backtest report :
> 
> 
> //------------------------------------------------------------------
----\
> --
> // SIMPLE TRADING SYSTEM BASED ON VARIOUS CONDITIONS
> //------------------------------------------------------------------
----\
> --
> 
> FastMA       =    MA( C, 10 );
> SlowMA       =    MA( C, 20 );
> 
> Condition1   = Cross(FastMA, SlowMA);
> Condition2   = Cross(SlowMA, FastMA);
> Condition3   = Cross(C,      SlowMA);
> Condition4   = Cross(SlowMA, C     );
> 
> for(a = 1; a < 5; a++)
> {
> Condition    = VarGet( "Condition" + NumToStr( a, 1.0, 0 ) );
> Buy          = Condition;
> Sell         = BarsSince(Buy) > 12;
> }
> 
> 
> //------------------------------------------------------------------
----\
> -----
> // WANT TO ADD THE CUSTOM COLUMN, "CONDITION" TO BACKTEST REPORT
> //------------------------------------------------------------------
----\
> -----
> 
> SetCustomBacktestProc("");
> 
> if( Status("action") == actionPortfolio )
> {
>      bo = GetBacktesterObject();
> 
>      bo.Backtest(1); // run default backtest procedure
> 
>     // iterate through closed trades first
>     for( trade = bo.GetFirstTrade(); trade; trade = bo.GetNextTrade
() )
>     {
>         trade.AddCustomMetric("Condition", a  );
>     }
> 
>      bo.ListTrades();
> }
> 
> 
> 
> 
> 
> --- In amibroker@xxxxxxxxxxxxxxx, "Tomasz Janeczko" <groups@> wrote:
> >
> > Everything is explained with examples in the User's Guide
> > http://www.amibroker.com/guide/a_custommetrics.html
> >
> > See example 3.
> > ============
> >
> > Best regards,
> > Tomasz Janeczko
> > amibroker.com
> >   ----- Original Message -----
> >   From: ozzyapeman
> >   To: amibroker@xxxxxxxxxxxxxxx
> >   Sent: Friday, December 26, 2008 1:26 AM
> >   Subject: [amibroker] Adding a Custom Metric to Backtest Report
> >
> >
> >   I have been able to add custom metrics to the Optimization 
Reports,
> but for some reason can't add a column to the Trade List Backtest
> report. Hoping someone might be able to chime in here, as the custom
> backtester confuses me.
> >
> >   What I want to do is fairly simple. In my actual trading 
system, I
> cycle through hundreds of possible conditions per bar. If any one
> condition is true, then I Buy. I want to add a custom metric to the
> backtest report that lists which condition generated the Buy signal.
> >
> >   For the sake of debugging, below is a very simplified AFL (not 
my
> actual system). I simply want to feedback the condition number into 
the
> backtester. But it does not work. If I add an optimize statement at 
the
> top, it will add the custom metric to the Optimization report. But 
even
> then that column does not reflect correct values.
> >
> >   So how do I add the column to the Backtest report? I would have
> thought the below code would do the trick. And how do I feedback the
> correct values? Perhaps I need to FPUT each condition, during the 
loop,
> to an external file, then FGET the file for every trade in the
> backtester? That might work, but feels inefficient:
> >
> >
> >  
> //------------------------------------------------------------------
----\
> --
> >   // SIMPLE TRADING SYSTEM BASED ON VARIOUS CONDITIONS
> >  
> //------------------------------------------------------------------
----\
> --
> >
> >   FastMA       =    MA( C, 10 );
> >   SlowMA       =    MA( C, 20 );
> >
> >   Condition1   = Cross(FastMA, SlowMA);
> >   Condition2   = Cross(SlowMA, FastMA);
> >   Condition3   = Cross(C,      SlowMA);
> >   Condition4   = Cross(SlowMA, C     );
> >
> >   for(a = 1; a < 5; a++)
> >   {
> >   Condition    = VarGet( "Condition" + NumToStr( a, 1.0, 0 ) );
> >   Buy          = Condition;
> >   Sell         = BarsSince(Buy) > 12;
> >   }
> >
> >
> >  
> //------------------------------------------------------------------
----\
> -----
> >   // WANT TO ADD THE CUSTOM COLUMN, "CONDITION" TO BACKTEST REPORT
> >  
> //------------------------------------------------------------------
----\
> -----
> >
> >   SetCustomBacktestProc( "" );
> >
> >   if ( Status( "action" ) == actionPortfolio )
> >   {
> >   bo = GetBacktesterObject();
> >   bo.Backtest( 1 );                                    // Call
> Backtest but set NoTradeLists to true
> >   bo.AddCustomMetric( "Condition", a, 0,0,0 );         // Add the
> custom metric
> >   bo.ListTrades();                                     // Now 
generate
> the backtest report with custom metric
> >   }
> >
>



------------------------------------

**** IMPORTANT ****
This group is for the discussion between users only.
This is *NOT* technical support channel.

*********************
TO GET TECHNICAL SUPPORT from AmiBroker please send an e-mail directly to 
SUPPORT {at} amibroker.com
*********************

For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
http://www.amibroker.com/devlog/

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

*********************************
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/amibroker/

<*> Your email settings:
    Individual Email | Traditional

<*> To change settings online go to:
    http://groups.yahoo.com/group/amibroker/join
    (Yahoo! ID required)

<*> To change settings via email:
    mailto:amibroker-digest@xxxxxxxxxxxxxxx 
    mailto:amibroker-fullfeatured@xxxxxxxxxxxxxxx

<*> To unsubscribe from this group, send an email to:
    amibroker-unsubscribe@xxxxxxxxxxxxxxx

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/