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
>


Reply via email to