Works for me.
_____ From: [email protected] [mailto:[EMAIL PROTECTED] On Behalf Of Herman Sent: Friday, 25 July 2008 7:37 PM To: [email protected] Subject: RE: [SPAM]Re: [amibroker] How to save Metrics in Composites for Individual BTs Still NO GO. I am loading the code in the AA, select a watchlist, run an Individual backtest, and Refresh the WorkSpace. I get the BT report with individual results. I get two Composites in my Composites Group. One is named ~~~EQUITY, the other ~~~UI_~~~EQUITY. The first makes sense but the second indicates that the StaticVar does not return the ticker name. >> It appears that in this code the function Name() returns "~~~EQUITY" and does not return the name for the ticker being tested, it behaves as if the ~~~EQUITY composite is the ticker being tested. Can anyone confirm this? Thanks again! Herman // Demo trading system Short = Cover = 0; Buy = Cross( MACD(), Signal() ); Sell = Cross( Signal(), MACD() ); // Using the CBT to retrieve/save metrics StaticVarSetText( "Symbol", Name() ); SetOption( "UseCustomBacktestProc", True ); if ( Status( "action" ) == actionPortfolio ) { bo = GetBacktesterObject(); bo.PreProcess(); MyHistStat1 = Null; for ( bar = 0; bar < BarCount; bar++ ) { bo.ProcessTradeSignals( bar ); stats = bo.GetPerformanceStats( 0 ); MyHistStat1[ bar ] = stats.GetValue( "UlcerIndex" ); // any metric can be retrieved } bo.PostProcess(); AddToComposite( MyHistStat1, "~~~UI_" + StaticVarGetText( "Symbol" ), "X", atcFlagEnableInPortfolio | atcFlagDefaults ); } PlotForeign( "~~~UI_"+Name(), "UlcerIndex Historical", colorRed, styleLine ); -----Original Message----- From: [email protected] [mailto:amibroker@ <mailto:[email protected]> yahoogroups.com]On Behalf Of Tomasz Janeczko Sent: July 25, 2008 4:08 AM To: [email protected] Subject: [SPAM]Re: [amibroker] How to save Metrics in Composites for Individual BTs It will work OK. Individual backtest *is* portfolio backtest but just portfolio consisting of one symbol at a time. Note that one should select "Individual Backtest" (not "OLD" backtest) from AA->Backtest drop down. One correction though StaticVarSetText( "Symbol", Name() ); should be called only when NOT in portfolio mode so if( Status("action") == actionBacktest ) StaticVarSetText( "Symbol", Name() ); // Demo trading system Short = Cover = 0; Buy = Cross( MACD(), Signal() ); Sell = Cross( Signal(), MACD() ); // Using the CBT to retrieve/save metrics SetOption( "UseCustomBacktestProc", True ); if ( Status( "action" ) == actionPortfolio ) { bo = GetBacktesterObject(); bo.PreProcess(); MyHistStat1 = Null; for ( bar = 0; bar < BarCount; bar++ ) { bo.ProcessTradeSignals( bar ); stats = bo.GetPerformanceStats( 0 ); MyHistStat1[ bar ] = stats.GetValue( "UlcerIndex" ); // any metric can be retrieved } bo.PostProcess(); AddToComposite( MyHistStat1, "~~~UI_" + StaticVarGetText( "Symbol" ) + "_HISTORICAL", "X", atcFlagEnableInPortfolio | atcFlagDefaults ); } ----- Original Message ----- From: Paul Ho To: [email protected] Sent: Friday, July 25, 2008 4:45 AM Subject: RE: [amibroker] How to save Metrics in Composites for Individual BTs First of all. You use Status{"action") == actionPortfolio, individual backtest wont go through there. From: [email protected] [mailto:amibroker@ <mailto:[email protected]> yahoogroups.com] On Behalf Of Herman Sent: Friday, 25 July 2008 9:31 AM To: [email protected] Subject: Re: [amibroker] How to save Metrics in Composites for Individual BTs Thank you Tomasz, but this code still does not work. I changed the StaticVar to the Text type. Can you help some more ... ? or does anyone else see the problem? TIA, Herman StaticVarSetText( "Symbol", Name() ); // Demo trading system Short = Cover = 0; Buy = Cross( MACD(), Signal() ); Sell = Cross( Signal(), MACD() ); // Using the CBT to retrieve/save metrics SetOption( "UseCustomBacktestProc", True ); if ( Status( "action" ) == actionPortfolio ) { bo = GetBacktesterObject(); bo.PreProcess(); MyHistStat1 = Null; for ( bar = 0; bar < BarCount; bar++ ) { bo.ProcessTradeSignals( bar ); stats = bo.GetPerformanceStats( 0 ); MyHistStat1[ bar ] = stats.GetValue( "UlcerIndex" ); // any metric can be retrieved } bo.PostProcess(); AddToComposite( MyHistStat1, "~~~UI_" + StaticVarGetText( "Symbol" ) + "_HISTORICAL", "X", atcFlagEnableInPortfolio | atcFlagDefaults ); } PlotForeign( "~~~UI_HISTORICAL", "UlcerIndex Historical", colorRed, styleLine ); -----Original Message----- From: [email protected] [mailto:amibroker@ <mailto:[email protected]> yahoogroups.com]On Behalf Of Tomasz Janeczko Sent: July 24, 2008 3:00 PM To: [email protected] Subject: [SPAM]Re: [amibroker] How to save Metrics in Composites for Individual BTs The same code. The only distinction is that you need to run INDIVIDUAL backtest and use Static variable to save name StaticVarSet Text ("Symbol", Name() ); // Demo trading system Short = Cover = 0; Buy=Cross( MACD(), Signal() ); Sell=Cross( Signal(), MACD() ); // Using the CBT to retrieve/save metrics SetOption("UseCustomBacktestProc", True ); if( Status("action") == actionPortfolio ) { bo = GetBacktesterObject(); bo.PreProcess(); MyHistStat1 = Null; for(bar=0; bar < BarCount; bar++) { bo.ProcessTradeSignals( bar ); stats = bo.GetPerformanceStats( 0 ); MyHistStat1[ bar ] = stats.GetValue("UlcerIndex"); // any metric can be retrieved } bo.PostProcess(); AddToComposite( MyHistStat1, "~~~UI_" + StaticVarGet Text ("Symbol") + "_HISTORICAL", "X", atcFlagEnableInPortfolio | atcFlagDefaults ); } PlotForeign("~~~UI_HISTORICAL", "UlcerIndex Historical", colorRed, styleLine );
