The reason for " the amalgamation of two consecutive Buy signals." is that you have specifically REQUESTED SCALING-IN in your formula:
Buy = IIf(Buy, sigScaleIn, 0); // allow pyramidding, recorded Did you read the manual: http://www.amibroker.com/guide/h_pyramid.html "Scaling size is defined by PositionSize variable which in case of scaling defines not absolute positionsize but dollar increase or decrease IMPORTANT: Please note that backtester treats trade that you scale-in/out as SINGLE trade (i.e. will show single row in trade list).." Best regards, Tomasz Janeczko amibroker.com ----- Original Message ----- From: "Graham Johnson" <[EMAIL PROTECTED]> To: <[email protected]> Sent: Wednesday, January 02, 2008 8:52 AM Subject: [amibroker] Re: Erroneous Position Size and Entry Price > Hi Graham & Dave > > I now know what the issue is - it is the amalgamation of two > consecutive Buy signals. > > Now, I can investigate the cause and if I am stuck I will come back > to the forum. > > Thanks > > Graham >> >> Thanks Graham >> >> The values in vaLimitEntry had already been rounded. >> >> For the first trade the values (as per _TRACE) are vaLimitEntry - >> $11.59, Open - $11.36. I cannot fathom the origin of 11.1357 that > is >> in the backtest report for open price, and it is also odd that it > is >> 4 decimal places. >> >> Additionally, the position size for this trade is virtually double >> what it should be - and then the 2nd & 3rd trades do not have any >> errors. >> >> Cheers >> >> Graham >> > >> > You have BuyPrice = Min(Open, Ref(vaLimitEntry, -1));, so can only >> > assume that in this case Open is higher than the vaLimitEntry > value, >> > and thus vaLimitEntry is used. >> > To get this rounded to correct tick prices then you need to round >> the >> > vaLimitEntry, either up(ceil), down(floor) or closest(round) tick >> > eg something like this rounding up to higher round tick price > level >> > ticksize = 0.01; >> > BuyPrice = Min(Open, Ceil( Ref(vaLimitEntry, -1) / ticksize ) * >> ticksize ); >> > >> > The actual trade size in backtest uses the roundlotsize, default > is >> 1, >> > so the trade will buy whole shares as happens in normal equity >> > markets. If you trade funds then typically define roundlotsize=0; >> > which allows part shares and trade size to equal the dollars >> required. >> > >> > >> > -- >> > Cheers >> > Graham Kav >> > AFL Writing Service >> > http://www.aflwriting.com >> > >> > >> > On 02/01/2008, Graham Johnson <grahamj@> wrote: >> > > As part of the migration process from Wealth-Lab, I've been >> running >> > > some parallel backtesting. >> > > >> > > Symbol currently used is JBH(ASX) for period 01/07/2007 to >> 31/12/2007. >> > > >> > > Both AB & WLD open long trades on 26/07/2007, 13/11/2007 & >> > > 19/12/2007, and the exit dates match. >> > > >> > > The 2nd & 3rd trades have matching Entry & Exit Prices and the >> > > position sizes are within tolerance. >> > > >> > > Trade for 26/07/2007 is the problem, the AB report shows entry >> price >> > > $11.1357 and Position Size of $19988.60, whereas it should have >> been >> > > $11.36 and $10000.00. >> > > >> > > I've been using _TRACE to follow the calculations and the logic >> > > appears to be correct so, ther must be something that I haven't >> got >> > > quite right. Any ideas, please? >> > > >> > > The relevant code is >> > > //================== Position Size ================== >> > > vMaxPosn = 10000; >> > > vMaxRisk = 2000; >> > > vMaxTOPc = 3; >> > > vaPosnSize = vMaxRisk / Ref(vaIStopVal, -1) * Ref > (vaLimitEntry, - >> 1); >> > > vaPosnSize = Min(vaPosnSize, vMaxPosn); >> > > vaPosnSize = Min(vaPosnSize, Ref(vaAvgTO, -1) * vMaxTOPc / 100); >> > > SetPositionSize(vaPosnSize, spsValue); >> > > //_TRACE("Position Size: " + vaPosnSize); >> > > >> > > //================== Trade ================== >> > > Buy = Ref(vaValidEntry,-1) AND Low <= Ref(vaLimitEntry, -1); >> > > Buy = IIf(Buy, sigScaleIn, 0); // allow pyramidding, recorded > as >> one >> > > position >> > > BuyPrice = Min(Open, Ref(vaLimitEntry, -1)); >> > > //_TRACE("Open: " + Open + " | Limit Entry: " + Ref >> (vaLimitEntry, -1) >> > > + " | Buy Price: " + BuyPrice + " | T/O: " + Ref(vaAvgTO, -1) > + " >> | >> > > PosnSize: " + VaPosnSize); >> > >> > > > > > Please note that this group is for discussion between users only. > > To get support from AmiBroker please send an e-mail directly to > SUPPORT {at} amibroker.com > > For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG: > http://www.amibroker.com/devlog/ > > For other support material please check also: > http://www.amibroker.com/support.html > > Yahoo! Groups Links > > > > >
