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" <[email protected]> To: <[email protected]> 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 [email protected], "Mike" <sfclimb...@...> 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 [email protected], "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 [email protected], "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: [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 >> > > } >> > > >> > >> > > > > ------------------------------------ > > **** 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 > > >
