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

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



PureBytes Links

Trading Reference Links

I've read the manual. And I've always had that SetOption in my code when using custom backtest procedure. But I still get a COM error in this particular case. That's my point.

Maybe I am doing something else that's equally careless, but it's not the SetOption.

Below is a larger portion of my code, including all the backtester settings, with SetOption("UseCustomBacktestProc", True );

It still generates an error:



//--------------------------------------------------------------------
// GET SIGNAL LIST OF BACKTESTER, AND SUBTRACT SLIPPAGE FROM EXITS
//--------------------------------------------------------------------


SetCustomBacktestProc("");

if ( Status( "action" ) == actionPortfolio )
{
bo =
GetBacktesterObject();
bo.PreProcess();
// Initialize backtester

for(bar=0; bar < BarCount; bar++)
{
for( sig = bo.GetFirstSignal(); sig; sig = bo.GetNextSignal() )
{
if( sig.IsExit() )
{
if ( sig.IsLong() ) ExitTrue = sig.Price - Slippage;
else ExitTrue = sig.Price + Slippage;
sig.Price = ExitTrue;
}
}
bo.ProcessTradeSignals( bar );
}

bo.PostProcess();
// Finalize backtester
}




//----------------------------------------------------
// BackTester Settings
//----------------------------------------------------

tradeDelay          =
0;
maxContractsPerPair =
1;
maxPairsTraded      =
1;                          // Increase to the size of the watchlist when trading a watchlist
TickSize            = 0.0001;                     // The minimum price move of symbol
SlippagePips        =
2;
Slippage            =
TickSize * SlippagePips;    // In real-world trading there may be slippage of 1-2 pips.
BarsExit            =
18;
Stop                =
TickSize * 10;
Profit              =
TickSize * 20;

SetOption("UseCustomBacktestProc", True);
SetBarsRequired(10000, 0);                    
SetOption("AllowPositionShrinking", False);      
SetOption("AllowSameBarExit", True);                
SetOption("FuturesMode", 1);                      // Treat backtest as regular shares for Interactive Brokers (IB)        
SetOption("InitialEquity", 100000);              
SetOption("InterestRate",0);                      
SetOption("MaxOpenPositions", maxContractsPerPair * maxPairsTraded);
SetOption("MinPosValue", 0);                    
SetOption("MinShares", 100000);                        
SetOption("PriceBoundChecking", True );          
SetOption("ReverseSignalForcesExit", False);
SetOption("UsePrevBarEquityForPosSizing", False );
SetTradeDelays(0, 0, 0, 0);
SetPositionSize( 100000, spsShares );             // One share   = 1 Euro for EUR.USD, and we buy in groups of 100,000 shares

MarginDeposit = -2.5;                             // -2.5 = 2.5% = 40:1 margin. IB goes by percentage.

baseCurrency  =
StrLeft(Name(), 3);               // eg. EURJPY gives EUR.
quoteCurrency =
StrRight(Name(),3);               // eg. EURJPY gives JPY.
                          
PointValue    = 1;

if ( QuoteCurrency == "JPY" )                     // Adjust tick size for Japanese yen
{
    
TickSize    = 0.01;
    
SetPositionSize( 900, spsShares);            
    
SetOption("MinShares", 900);
}







--- In amibroker@xxxxxxxxxxxxxxx, "Tomasz Janeczko" <groups@xxx> wrote:
>
> Hello,
>
> Is reading the manual really that complicated?
>
> http://www.amibroker.com/guide/a_custombacktest.html
>
> You MUST use SetCustomBacktestProce or SetOption("UseCustomBacktestProc", True );
> to use custom backtester.
> Otherwise it is NOT enabled, therefore will have no impact. That is pretty obvious.
>
> Best regards,
> Tomasz Janeczko
> amibroker.com
> ----- Original Message -----
> From: "ozzyapeman" zoopfree@xxx
> To: amibroker@xxxxxxxxxxxxxxx
> Sent: Thursday, March 19, 2009 4:50 PM
> Subject: [amibroker] Re: Simple slippage implemented in CBT generates COM error
>
>
> > Still does not work. I get a COM error if the first line, SetCustomBacktestProc("");, is included for some reason. And if I take
> > that line out, it runs but has no effect. Exit prices remain unchanged.
> >
> >
> >
> > --- In amibroker@xxxxxxxxxxxxxxx, Graham kavemanperth@ wrote:
> >>
> >> you still need to loop through the signals as I think you originally
> >> had, not trades.
> >> then have bo.ProcessTradeSignals( bar ); after the signal loop
> >> I was just trying to show the additional lines of code you needed to include
> >>
> >>
> >> SetCustomBacktestProc("");
> >>
> >> if ( Status( "action" ) == actionPortfolio )
> >> {
> >> bo = GetBacktesterObject();
> >> bo.PreProcess(); // Initialize backtester
> >>
> >> for(bar=0; bar < BarCount; bar++)
> >> {
> >> for( sig = bo.GetFirstSignal(); sig; sig = bo.GetNextSignal() )
> >> {
> >> if( sig.IsExit() )
> >> {
> >> if ( sig.IsLong() ) ExitTrue = sig.Price - Slippage;
> >> else ExitTrue = sig.Price + Slippage;
> >> sig.Price = ExitTrue;
> >> }
> >> }
> >> bo.ProcessTradeSignals( bar );
> >> }
> >>
> >> bo.PostProcess(); // Finalize backtester
> >> }
> >>
> >>
> >>
> >> --
> >> 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
> >
> >
> >
>


__._,_.___


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





Your email settings: Individual Email|Traditional
Change settings via the Web (Yahoo! ID required)
Change settings via email: Switch delivery to Daily Digest | Switch to Fully Featured
Visit Your Group | Yahoo! Groups Terms of Use | Unsubscribe

__,_._,___