I do currently try to integrate slippage amounts into commissions.
However, what I really want to do is a build a model that mimics the
real world as much as possible.

It would be nice in the future if AB had a setoption() that allowed us
to integrate slippage into all exit and entries, whether we use
ApplyStop or regular sell/cover. Such a setoption could also have the
ability to set some 'randomness' in the slippage, allowing it to vary
from trade to trade, within a range the use could set.


--- In [email protected], "huanyanlu" <huanyan2...@...> wrote:
>
> Hi
> 
> Have you considered making slippage a part of the commision and 
> adjust it in the backtester commision settings beforehand, thus avoid 
> doing complicated calculations with the signal object of custom 
> backtester ?
> 
> Huanyan
> 
> 
> --- In [email protected], "ozzyapeman" <zoopfree@> wrote:
> >
> > Hello, hoping someone can help out with this code. Aron was kind 
> enough
> > to post a version of some code that is meant to inject some slippage
> > when using ApplyStop(). However, I can't seem to get it to work. 
> All I
> > want it to do is reduce Long exits by 2 pips (I'm backtesting 
> Forex) and
> > increase Short exits by 2 pips, when using ApplyStop.
> > 
> > Here is the code. At present, it only ends up blanking out my 
> backtest
> > report - no trades taken. Without the code, dozens or hundreds of 
> trades
> > taken, depending on which system I test. As far as I can tell, this 
> code
> > should work, but doesn't. Any input appreciated:
> > 
> > 
> > SetCustomBacktestProc( "" );
> > if ( Status( "action" ) == actionPortfolio )
> > {
> >      TickSize = 0.0001;           // Forex
> >      bo = GetBacktesterObject();
> >      bo.PreProcess();
> >      slipage = TickSize;
> >      spread = 2 * TickSize;
> > 
> >      for ( bar = 0; bar < BarCount; bar++ )
> >      {
> >            for ( sig = bo.GetFirstSignal(bar); sig; sig =
> > bo.GetNextSignal(bar) )
> >            {
> >             symbol = sig.symbol;
> >             hi = Foreign(symbol, "H");
> >             lo = Foreign(symbol, "L");
> > 
> >               if ( sig.IsExit() )
> >               {
> >                 if ( sig.isLong)
> >                 {
> >                   realexitprice = sig.price - slipage;
> >                    if( realexitprice >= lo[bar] && realexitprice <=
> > hi[bar])
> >                    {
> >                      sig.price = realexitprice;
> >                      bo.ExitTrade(bar,sig.symbol,sig.Price);  // 
> I'm not
> > sure if it is needed
> >                     }
> >                    else
> >                      sig.price = -1;
> >                  }
> >                  else
> >                 {
> >                  ealexitprice = sig.price + slipage;
> >                    if (realexitPrice >= lo[bar]+ spread && 
> realexitprice
> > <= hi[bar]+spread)
> >                    {
> >                      sig.price = realexitprice;
> >                      bo.ExitTrade(bar,sig.symbol,sig.Price); // I'm 
> not
> > sure if it is needed
> >                     }
> >                    else
> >                      sig.price = -1;
> >                  }
> > 
> >                }
> >              }
> > 
> >          bo.ProcessTradeSignals( bar );
> >      }
> >    }
> >
>


Reply via email to