[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

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@xxx> 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

*********************************




Your email settings: Individual Email|Traditional
Change settings via the Web (Yahoo! ID required)
Change settings via email: Switch delivery to Daily Digest | Switch to Fully Featured
Visit Your Group | Yahoo! Groups Terms of Use | Unsubscribe

__,_._,___