----- Original Message -----
Sent: Wednesday, September 03, 2008
11:00 AM
Subject: Re: [amibroker] Backtest -
Number of positions
Ara,
I did this a while back. I extracted this
information by looping through the trades using the CBT. Then I saved the
info in a composite. Added code below. You just need to call this code
inside your main program using SetCustomBacktestProc( ) but I think you
know the drill:
rgds, Ed
SetCustomBacktestProc("");
if( Status("action") == actionPortfolio )
{
bo = GetBacktesterObject();
// perform default portfolio
backtest
bo.Backtest();
//
initialisations
longTrades = 0;
shortTrades =
0;
// store the DateTime() in a STRING
array.
fdatetime = DateTime();
// loop through
trades
for( trade = bo.GetFirstTrade(); trade ; trade =
bo.GetNextTrade() )
{
//
find the entry datetime of the trade
entry_datetime =
trade.EntryDateTime;
// find the exit datetime of the
trade
exit_datetime =
trade.ExitDateTime;
// locate the array index
at entry
index_entry = IIF(entry_datetime == fdatetime, 1,
0);
// locate the array index at
exit
index_exit = IIF(exit_datetime == fdatetime, 1,
0);
// indicate bars where the trade
occurs
index_trade =
flip(index_entry,index_exit);
//
accumulate long and short trades
if (trade.IsLong)
{
longTrades =
longTrades + index_trade;
//} else if (!trade.IsLong)
{
} else {
shortTrades =
shortTrades + index_trade;
}
}
// loop through open
positions
for( Openpos = bo.GetFirstOpenPos(); Openpos ;
Openpos = bo.GetNextOpenPos() )
{
// find the entry datetime of the
trade
entry_datetime =
Openpos.EntryDateTime;
// find the exit datetime of the
trade
exit_datetime =
Openpos.ExitDateTime;
// locate the
array index at entry
index_entry = IIF(entry_datetime ==
fdatetime, 1, 0);
// locate the array index
at exit
index_exit = IIF(exit_datetime == fdatetime, 1,
0);
// indicate bars where the trade
occurs
index_trade =
flip(index_entry,index_exit);
//
accumulate long and short trades
if (Openpos.IsLong)
{
longTrades = longTrades +
index_trade;
//} else if (!Openpos.IsLong)
{
} else {
shortTrades =
shortTrades + index_trade;
}
}
AddToComposite(longTrades,"~longTrades","C",atcFlagDeleteValues
| atcFlagEnableInPortfolio
);
AddToComposite(shortTrades,"~shortTrades","C",atcFlagDeleteValues
| atcFlagEnableInPortfolio);
}
----- Original Message -----
Sent: Wednesday, September 03, 2008
7:39 PM
Subject: [amibroker] Backtest -
Number of positions
Is there a way to determine (get a chart) of
the number of positions over time
Tx
Ara