Herman,

You forgot the CORRECTION I mentioned:

StaticVarSetText( "Symbol", Name() ); must NOT be called unconditionally, but 
THIS way:

=====================================================================
if( Status("action") == actionBacktest ) StaticVarSetText( "Symbol", Name() );
==============================================================

Best regards,
Tomasz Janeczko
amibroker.com
  ----- Original Message ----- 
  From: Herman 
  To: [email protected] 
  Sent: Friday, July 25, 2008 11:36 AM
  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:[EMAIL PROTECTED] 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:[EMAIL PROTECTED] 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:[EMAIL PROTECTED] 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 
);



   

Reply via email to