PureBytes Links
Trading Reference Links
|
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
<*> 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/
|