[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [amibroker] Re: Simple slippage implemented in CBT generates COM error



PureBytes Links

Trading Reference Links

You have not included all the required control functions and method
for getting the signals, here is example from knowledge base, you can
see what is missing. This example does a different actual change to
the trades, but the whole process is the same.

if( Status("action") == actionPortfolio )
{
  bo = GetBacktesterObject();

  bo.PreProcess(); // Initialize backtester
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

  for(bar=0; bar < BarCount; bar++)
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
  { //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
   bo.ProcessTradeSignals( bar );
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

   CurEquity = bo.Equity;

   for( pos = bo.GetFirstOpenPos(); pos; pos = bo.GetNextOpenPos() )
   {
    posval = pos.GetPositionValue();

    diff = posval - 0.01 * EachPosPercent * CurEquity;
    price = pos.GetPrice( bar, "O" );

    // rebalance only if difference between desired and
    // current position value is greater than 0.5% of equity
    // and greater than price of single share
    if( diff != 0 AND
        abs( diff ) > 0.005 * CurEquity AND
        abs( diff ) > price )
    {
     bo.ScaleTrade( bar, pos.Symbol, diff < 0, price, abs( diff ) );
    }
   }
  } //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
  bo.PostProcess(); // Finalize backtester
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
}

2009/3/19 ozzyapeman <zoopfree@xxxxxxxxxxx>:
> 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;
>> > }
>> >
>> > }
>> > }
>> > }
>> >
>>
>
>
> 



-- 
Cheers
Graham Kav
AFL Writing Service
http://www.aflwriting.com


------------------------------------

**** 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/

Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/amibroker/

<*> Your email settings:
    Individual Email | Traditional

<*> To change settings online go to:
    http://groups.yahoo.com/group/amibroker/join
    (Yahoo! ID required)

<*> To change settings via email:
    mailto:amibroker-digest@xxxxxxxxxxxxxxx 
    mailto:amibroker-fullfeatured@xxxxxxxxxxxxxxx

<*> To unsubscribe from this group, send an email to:
    amibroker-unsubscribe@xxxxxxxxxxxxxxx

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/