Ed, Got your code to work OK ... had to replace "LongTrades" with "index_Trade" in the ATC.
Also replaced: longTrades = longTrades + index_trade; with longTrades = longTrades + 1; This gives me the total count Thanks for sharing. Ara ----- Original Message ----- From: Edward Pottasch To: [email protected] 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 ----- From: Ara Kaloustian To: AB-Main 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
