----- 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