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 );
}
}