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 [email protected], "Tomasz Janeczko" <gro...@...> 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: [email protected]
>   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
>   }
>

Reply via email to