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

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



PureBytes Links

Trading Reference Links

You need to pass that in either
a) series (set) of static variables
or
b) addtocomposite/foreign
or
c) files (fopen/fputs/fgets/fclose)
or
d) unused trade/position variable (can be for example margindeposit if you don't use it). 

Best regards,
Tomasz Janeczko
amibroker.com
----- Original Message ----- 
From: "ozzyapeman" <zoopfree@xxxxxxxxxxx>
To: <amibroker@xxxxxxxxxxxxxxx>
Sent: Friday, December 26, 2008 5:50 PM
Subject: [amibroker] Re: Adding a Custom Metric to Backtest Report


> Thanks Mike. I eventually figured as much. 
> 
> Still trying to figure out a way to dynamically pass the correct "a"
> value to the backtester.
> 
> Any ideas on a general approach to this? I need to somehow collect an
> "a" value each time there is a Buy, and store those somewhere so they
> can be read back by the custom backtester code.
> 
> 
> --- In amibroker@xxxxxxxxxxxxxxx, "Mike" <sfclimbers@xxx> wrote:
>>
>> 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@> 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
> 
> 
> 

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

**** 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/