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

[amibroker] Re: Is Custom Backtester "reentrant" safe?



PureBytes Links

Trading Reference Links

Half way there. I think the code below will stop trading when your 
equity is down by 5%. But how do you resume trading when the equity 
(of the underlying trading system) goes back up again? What I'm 
trying to do is first calculate a "shaddow" equity as if all trades 
are taken regardless of equity situation - and then do the "real" run 
with stop/resume trading based on the previous calculated equity. 

Any ideas on how to achieve that?

(in an ideal situation, gain would remain the same, but dropdown 
would be less, thereby maximizing CAR/MDD)

--- In amibroker@xxxxxxxxxxxxxxx, "oceanchimes" <oceanchimes@xxx> 
wrote:
>
> Jens,
> Hope this helps
> fe
> 
> // MONITOR PORTFOLIO EQUITY ROUTINE
> 
> // Equity Level is from Highest Equity since start of backtest
> // OR from last 'Sell all' Signal
> 
> // this statement turns ON custom portfolio backtester procedure 
> SetOption("UseCustomBacktestProc", True ); 
> 
> Perc = 0.95;   //Optimize("Perc",0.925,0.90,0.99,0.005);
> 
> if( Status("action") == actionPortfolio ) 
> {
>  bo = GetBacktesterObject(); 
>  bo.PreProcess(); 
>  StoredEquity[0] = CurrentPortfolioEquity[0] = bo.InitialEquity;
> 
>  for( bar = 1; bar < BarCount; bar++ ) 
>  { 
>   CurrentPortfolioEquity[bar] = bo.Equity;
> 
>   //determine the highest portfolio value
>   if( CurrentPortfolioEquity[bar] > StoredEquity[bar-1] )
>   { storedEquity[bar] = CurrentPortfolioEquity[bar]; }
>   else
>   { StoredEquity[bar] = StoredEquity[bar-1]; }
> 
>   //this is low-level  method to exit trades
>   //if yesterdays folio open equity is below perc %, ignore all at
> todays open
>   if( CurrentPortfolioEquity[bar-1] < StoredEquity[bar-1]*perc ) 
>   {
>    StoredEquity[bar] = CurrentPortfolioEquity[bar]; //new equity 
level
>   
> //------------------------------------------------------------------
------------
>    //ignore new buy signals
>    for ( sig=bo.GetFirstSignal(bar); sig; sig=bo.GetNextSignal
(bar) ) 
>    {
>     if( sig.IsEntry() && sig.Price != -1 ) { sig.Price = -1; }
>    }
>   }//if portfolio value
>   bo.ProcessTradeSignals(bar);
> 
>  }//for bar 
>  bo.PostProcess(); 
> }//if backtester 
> 
> 
> 
> 
> 
> --- In amibroker@xxxxxxxxxxxxxxx, "tiedemj" <home@> wrote:
> >
> > bump - still found no resolution on this...
> > 
> > --- In amibroker@xxxxxxxxxxxxxxx, "tiedemj" <home@> wrote:
> > >
> > > Hello - trying to stop trading activity when portfolio equity 
is 
> > > below maxEquity by some pct, and resume trading when "equity" 
rises 
> > > above previous maxEquity (where "equity" is as if trading had 
not 
> > > been suspended)
> > > 
> > > Using custom backttest as follows:
> > > 
> > > // first run to collect when to stop/resume trading
> > > bo.PreProcess(); 
> > > for( bar = 0; bar < BarCount; bar++ ) 
> > > {
> > > bo.ProcessTradeSignals(bar); 
> > > ...some algorithm collecting when to stop/start trading
> > > }
> > > bo.PostProcess(); 
> > > 
> > > // second run to do the actual trading with equity based 
> > stops/resumes
> > > bo.PreProcess(); 
> > > for( bar = 0; bar < BarCount; bar++ ) 
> > > {
> > > ...algorithm to scaleout/in of trades according to previous 
> > collected 
> > > info
> > > bo.ProcessTradeSignals(bar); 
> > > }
> > > bo.PostProcess(); 
> > > 
> > > However, on the second call to bo.ProcessTradeSignals(bar) 
above, I 
> > > get "COM method/function failed: Internal application error". 
Can I 
> > > use custom backtest in this "reentrant" way? - or is there 
anothor 
> > > way to stop/resume trading based on portfolio equity (of the 
> > > underlying trading algorithm)...?
> > > 
> > > best regards
> > > Jens Tiedemann
> > >
> >
>



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

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

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