Perhaps it's a problem with my AmiBroker setup. Can anyone else replicate my problem?
Thanks Craig --- In [email protected], "sancra01" <sancr...@...> wrote: > > Hi > > I'm trying to learn how to use AmiBroker's Custom Backtester as I believe the > system I'm coding will need to use the low level interface. > > In order to understand the CBT fully I'm starting off simple, running trace's > etc to see how it works. I have a very simple trading system which buys on > the open and sells on the close. I'm trading index futures and for > backtesting purposes I only want to trade a single contract. > > The problem I'm experiencing is that when I run a backtest on the code below > in Automatic Analysis no trades appear in the trade list. However, if I > comment out the line ... > > PositionSize = MarginDeposit = 1; // Trade size will be a single contract > > ... then I get a trade everyday although the position size is all wrong as > it's not trading one futures contract. > > I've spent a couple of days trying different ways of trading just one > contract but I'm not getting anywhere. Does anyone have any idea what I'm > doing wrong? Any help would be appreciated. > > Thanks > > Craig > > > // Money Management > InitialEquity = 10000; > SetOption( "InitialEquity", InitialEquity ); // Set initial equity > SetOption( "FuturesMode", True ); // Ensures trade accounting is done using > margin deposit and point value > SetOption( "CommissionMode", 2 ); > SetOption( "CommissionAmount", 25); // Commission amount per trade (dollars) > PositionSize = MarginDeposit = 1; // Trade size will be a single contract > PointValue = 25; > > // Entry/Exit Signals > BuyPrice = Open; > SellPrice = Close; > Buy = Open; > Sell = Close; > Short = 0; > Cover = 0; > > SetCustomBacktestProc(""); > if( Status("action") == actionPortfolio ) > { > bo = GetBacktesterObject(); // Get backtester object > bo.PreProcess(); // Do pre-processing > for( i = 0; i < BarCount; i++ ) // Loop through all bars > { > > for( sig = bo.GetFirstSignal(i); sig; sig = bo.GetNextSignal(i) ) > { // Loop through all signals at this bar > if( sig.IsEntry() && sig.IsLong() ) // Process long entries > { > bo.EnterTrade( i, sig.Symbol, True, sig.Price, sig.PosSize ); > _TRACE("Entry signal = " + i); > } > > else > { > if( sig.IsExit() && sig.IsLong() ) // Process long exits > bo.ExitTrade( i, sig.Symbol, sig.Price ); > _TRACE("Exit signal = " + i); > } > > } // End of for loop over signals at this bar > bo.HandleStops(i); // Handle programmed stops at this bar > bo.UpdateStats(i, 1); // Update MAE/MFE stats for bar > bo.UpdateStats(i, 2); // Update stats at bar's end > } // End of for loop over bars > bo.PostProcess(); // Do post-processing > } >
