PureBytes Links
Trading Reference Links
|
The custom commission table unfortunately doesn't allow me to do what I want, which is to slip exits by an amount that varies according to market time. The example I am pasting here is simplified. I'm trying to model based on what I am seeing in live trades.
Thanks on ProcessTradeSignals. But I still must be doing something wrong, because no effect:
if ( Status( "action" ) == actionPortfolio )
{
bo = GetBacktesterObject();
for( sig = bo.GetFirstSignal(); sig; sig = bo.GetNextSignal() )
{
sig.ProcessTradeSignals();
if( sig.IsExit() )
{
if ( sig.IsLong() ) // Exit Long
{
ExitTrue = sig.Price - Slippage;
sig.Price = ExitTrue;
}
else // Exit Short
{
ExitTrue = sig.Price + Slippage;
sig.Price = ExitTrue;
}
}
}
}
--- In amibroker@xxxxxxxxxxxxxxx, "Tomasz Janeczko" <groups@xxx> wrote: > > Hello, > > You need to call ProcessTradeSignals. > > BTW: it is easier to just define custom commission table (AA->Settings "Commission table: Define...") > that includes slippage than wresting with code. > > Best regards, > Tomasz Janeczko > amibroker.com > ----- Original Message ----- > From: ozzyapeman > To: amibroker@xxxxxxxxxxxxxxx > Sent: Thursday, March 19, 2009 2:31 AM > Subject: [amibroker] Re: Simple slippage implemented in CBT generates COM error > > > Okay on #1, I realize that the COM error was due to the bit of legacy code: SetCustomBacktestProc( "" ); > > However, the slippage code seems to have no effect whatsoever on the backtest trade report. > > What might I be doing wrong? > > > > --- In amibroker@xxxxxxxxxxxxxxx, "ozzyapeman" zoopfree@ wrote: > > > > Hello, hoping someone can help on this. I am using ApplyStop, which does > > not have a slippage factor. I'm trying to avoid using a BarCount loop to > > implement slippage on exits and instead am trying to modify the signal > > list of the CBT to implement slippage, before the backtester engine > > processes the trades. > > > > But I am running into two problems, namely: > > > > > > 1. Get error COM method/function 'GetFirstSignal' call failed, on the > > for loop line, even though that line and prior ones were copied and > > pasted direct from the reference guide. > > > > > > 2. More of a question at this point: What if my calculation of ExitTrue > > price is below the Low, or above the High of the bar? Will the > > backtester engine simply ignore that signal? Or is there some way I can > > filter out that possibility directly in the code below? > > > > > > > > In this example, Slippage = 0.0002 elsewhere in my code, backtesting on > > Forex: > > > > > > SetCustomBacktestProc( "" ); > > > > if ( Status( "action" ) == actionPortfolio ) > > { > > bo = GetBacktesterObject(); > > > > for( sig = bo.GetFirstSignal(); sig; sig = bo.GetNextSignal() ) > > { > > if( sig.IsExit() ) > > { > > if ( sig.IsLong() ) // Exit Long > > { > > ExitTrue = sig.Price - Slippage; > > sig.Price = ExitTrue; > > } > > > > else // Exit Short > > { > > ExitTrue = sig.Price + Slippage; > > sig.Price = ExitTrue; > > } > > > > } > > } > > } > > >
__._,_.___
**** IMPORTANT PLEASE READ ****
This group is for the discussion between users only.
This is *NOT* technical support channel.
TO GET TECHNICAL SUPPORT send an e-mail directly to
SUPPORT {at} amibroker.com
TO SUBMIT SUGGESTIONS please use FEEDBACK CENTER at
http://www.amibroker.com/feedback/
(submissions sent via other channels won't be considered)
For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
http://www.amibroker.com/devlog/
__,_._,___
|