Hi, Read "AmiBroker Custom Backtester Interface.pdf" found in the Files section of this group.
Normal AFL code does not know whether a trade was ever taken or not. The best that you can do is generate *signals*. Only the backtester knows whether those signals were ever acted on (based on such factors as account funds, max positions, etc.). Any time your strategy depends on knowing if a specific position has been taken, then you must use custom backtesting code. Your normal AFL code should just generically issue signals and assign a PositionScore to those signals. The backtester will then process the signals ordered by PositionScore (highest first). Buy = CondBuy; Short = CondShort; ... PositionScore = ...; So, in custom backtesting code, you simply cancel all signals after the first one (i.e. set PosSize property to 0 or Price to -1). If you need to take orders in a specific sequence (e.g. toggle between buy/short), then you can examine the trades list and/or open position list. Mike --- In amibroker@yahoogroups.com, "raskoks" <rask...@...> wrote: > > I 've got code like below. But i don't know how to limit sum of short, buy > transaction to 1. At whis moment i can do it seperatly to short and seperetly > to buy. But i need to do it for sum of them - both them together and morover > i need them interchangebly ( next possible transaction after buy have to be > sell/short). > Thanks for any help :) > > tradesperday=1; > dn = DateNum(); > newDay=Ref(dn,-1)!= dn; > bsnd=BarsSince(newDay); > CondBuy=..; > CondShort=..; > > LongSignalSum=IIf(newDay,CondBuy,Sum(CondBuy,bsnd)); > ShortSignalSum=IIf(newDay,CondShort,Sum(CondShort,bsnd)); > > Buy= LongSignalSum<=tradesperday AND CondBuy ; > Sell=ShortSignalSum<=tradesperday AND CondShort ; > > Buy = ExRem(Buy, Sell); > Sell = ExRem(Sell, Buy); > Short=Sell; > Cover=Buy; > > -- > Best regards > raskoks >