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:
amibroker@xxxxxxxxxps.com [mailto:amibroker@yahoogroups.com]On
Behalf Of Tomasz Janeczko
Sent: July 25, 2008 4:08 AM
To:
amibroker@xxxxxxxxxps.com
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:
amibroker@xxxxxxxxxps.com
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: amibroker@xxxxxxxxxps.com [mailto:amibroker@yahoogroups.com]
On Behalf Of Herman
Sent: Friday, 25 July 2008 9:31 AM
To:
amibroker@xxxxxxxxxps.com
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:
amibroker@xxxxxxxxxps.com [mailto:amibroker@yahoogroups.com]On
Behalf Of Tomasz Janeczko
Sent: July 24, 2008 3:00 PM
To:
amibroker@xxxxxxxxxps.com
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 );