Thanks Ed,

I have not got to CBT yet ... but on my list

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

   

Reply via email to