Bistrader provided some code the other day that has been helpful to understand 
CBT and Trace. Its been modified to look at closed trades as well as open 
positions. The below CBT AFL, places ExitPrice in the closed Trade list even 
though the trade is "Long Open". For Example, running QQQQ, from  6/1/2009 to 
9/17/2009, gives this result in AA

    QQQQ    Long            7/15/2009    36.92    8/10/20009    39.6
    QQQQ    OpenLong    9/9/2009     41.09     9/17/2009      42.41

The entire Trace log is attached. The part of interest is 9/10/2009  and below. 
At this point, LongOpen occurs with EntryPrice 41.09 ( from Open Position List) 
and ExitPrice 39.60( from Close Trade List). These two prices then begin 
alternating on subsequent days. I suspect from comments made earlier from Bruce 
Robinson, that LongOpen forces a "close daily" which can be problematic. But in 
addition,  it holds the previous ExitPrice, 39.60, from 8/10/2009, not current 
ExitPrice. 

I speculate that this ExitPrice is the one used by CBT in all metrics 
associated with LongOpen positions. Is this true? Does it make sense?
This has been long winded. If its not clear please let me know. 
Thanks
Dave


SetCustomBacktestProc("");
if ( Status( "action" ) == actionPortfolio ) //2nd phase of portfolio backtest

{

bo = GetBacktesterObject();

bo.PreProcess();

barDates = DateTime();

for ( bar = 0; bar < BarCount; bar++ )

{

bardate = bardates[bar];

for ( trade = bo.GetFirstOpenPos(); trade; trade = bo.GetNextOpenPos() ) 
//TRade obj from Open Position List

{

_TRACE(NumToStr( barDate, formatDateTime ) +" EntryPrice " + NumToStr( 
trade.EntryPrice, 8.2 )+" " );

}

for(trade = bo.GetFirstTrade(); trade ; trade = bo.GetNextTrade() ) //Trade Obj 
from Closed Trade List

{

_TRACE( NumToStr(barDate,formatDateTime ) +" ExitPrice "+ NumToStr( 
trade.ExitPrice, 8.2) );

} 

bo.ProcessTradeSignals( bar );

}

bo.PostProcess();

}

Short = Cover = 0;

Buy = Cross( MACD(), Signal() );

Sell = Cross( Signal(), MACD() );




Reply via email to