Hello,

Initial Equity is used to INITIALIZE equity at the start of the backtest,
nothing more. So even if you write to it, it has no effect because
Equity is already initialized when you call GetBacktesterObject.

If you want to affect the equity (including equity at the start of backtest)
use Equity property instead.

Best regards,
Tomasz Janeczko
amibroker.com
----- Original Message ----- 
From: "markhoff" <[EMAIL PROTECTED]>
To: <[email protected]>
Sent: Thursday, May 01, 2008 2:36 PM
Subject: [amibroker] CBI: bo.InitialEquity to set value not working?


> Hi,
> 
> I wonder if the CBI property bo.InitialEquity cannot be used to set
> the initial equity. At least for me it does not work and I must use
> the SetOption("InitialEquity", ...) command, although the
> documentation does not say that the bo.InitialEquity is read-only.
> 
> Please see the code below:
> 
> --- cut ---
> 
> defaultPosSize = 1000;
> 
> InitialEquity = 123456;
> 
> Buy = Sell = Short = Cover = 0;
> 
> SetOption("UseCustomBacktestProc", True);
> 
> //SetOption("InitialEquity", InitialEquity);
> 
> SetCustomBacktestProc(""); 
> 
> // the trading rules
> TwentyBarHHV = Ref(HHV(High, 20), -1);
> Buy = High > TwentyBarHHV;
> Sell = Ref(Buy, -10);
> // cleanup excessive signals
> Buy = ExRem( Buy, Sell );
> Sell = ExRem( Sell, Buy );
> 
> if( Status("action") == actionPortfolio )
> {
> bo = GetBacktesterObject();
> 
> _TRACE("# bo.InitialEquity (default) = " + bo.InitialEquity);
> _TRACE("# bo.Equity (default) = " + bo.Equity);
> 
> bo.InitialEquity = InitialEquity;
> 
> _TRACE("# bo.InitialEquity (updated) = " + bo.InitialEquity);
> _TRACE("# bo.Equity (updated) = " + bo.Equity);
> 
> bo.PreProcess();
> 
> _TRACE("# bo.InitialEquity (after bo.PreProcess) = " + bo.InitialEquity);
> _TRACE("# bo.Equity (after bo.PreProcess) = " + bo.Equity);
> 
> for( bar = 0; bar < BarCount; bar++ )
> {
> for( sig = bo.GetFirstSignal( bar ); sig; sig = bo.GetNextSignal(
> bar ) )
> {
> // cash and equity are only correct if SetOption() is used to set
> InitialEquity
> _TRACE("# " + sig.Symbol + " : Cash = " + bo.Cash);
> _TRACE("# " + sig.Symbol + " : Equity = " + bo.Equity);
> 
> if(sig.IsEntry())
> {
> sig.PosSize = defaultPosSize ;
> }
> }
> bo.ProcessTradeSignals( bar );
> }
> bo.PostProcess();
> }
> 
> --- cut ---
> 
> Do you have any idea why bo.InitialEquity cannot be used to write a value?
> 
> Thanks in advance and best regards,
> Markus
> 
> 
> 
> ------------------------------------
> 
> Please note that this group is for discussion between users only.
> 
> To get support from AmiBroker please send an e-mail directly to 
> SUPPORT {at} amibroker.com
> 
> For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
> http://www.amibroker.com/devlog/
> 
> For other support material please check also:
> http://www.amibroker.com/support.html
> Yahoo! Groups Links
> 
> 
> 

Reply via email to