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