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

Re: [amibroker] Addcustommetric for length of drawdown



PureBytes Links

Trading Reference Links

SetCustomBacktestProc("");

if (Status("action") == actionPortfolio)

{

bo = GetBacktesterObject();

bo.Backtest();

Eqty = Foreign("~~~Equity", "C");

MaxEq = Highest(Eqty);

FlatEq = BarsSince(MaxEq > Ref(MaxEq,-1));

MaxFlat = LastValue(Highest(FlatEq));

bo.AddCustomMetric("Max Flat Eq Bars", MaxFlat);

}


----- Original Message -----
From: jmdeacon
Date: Sunday, November 23, 2008 8:03 pm
Subject: [amibroker] Addcustommetric for length of drawdown
To: amibroker@xxxxxxxxxxxxxxx

> I am having trouble getting my code to output to me the length
> of the
> drawdown from portfolio equity high to the next equity high.
> Everytime I run the backtest, the report always list MaxDDdays =
> 0.
> Any help would be appreciated.
>
> Thanks,
>
> John
>
> //Entry signals before sell signals
> //Calculate length of drawdown
> SetCustomBacktestProc("");
> if( Status("action") == actionPortfolio )
> {
> bo = GetBacktesterObject();
> Eqty = bo.Equity();
> Cash = bo.Cash();
> MaxEqty = bo.InitialEquity();
> DDdays = 0;
> MaxDDdays = 0;
> bo.PreProcess();
> for( bar = 0; bar < BarCount; bar++ )
> {
> //Handle ENTRY signals
> for ( sig=bo.GetFirstSignal(bar); sig;
> sig=bo.GetNextSignal(bar) )
> {
> if( sig.IsEntry() && sig.Price != -1 )
> {
> //determine if cash is less than 10% of equity, if so, do not
> enter trade
> if( Cash> {
> sig.Price = -1;
> }
> else
> {
> bo.EnterTrade( bar, sig.symbol, sig.IsLong(), sig.Price,
> sig.PosSize, sig.PosScore );
> }
> //calculate the length of the drawdown from portfolio equity high
> to next portfolio equity high
> if (Eqty> {
> DDdays = DDdays+1;
> if (DDdays>MaxDDdays) //Is this a new max for length of drawdown?
> {
> MaxDDdays = DDdays; //reset to a new MaxDDdays
> }
> }
> else
> {
> MaxEqty = Eqty; //Since today is a new equity high,
> increase the
> MaxEqty to todays equity
> DDdays = 0;
> }
> }
> }
> bo.UpdateStats(bar, 0);
> bo.UpdateStats(bar, 1);
> //handle EXIT signals
> for ( sig=bo.GetFirstSignal(bar); sig;
> sig=bo.GetNextSignal(bar) )
> {
> if (sig.IsExit() && sig.Price != -1 )
> {
> bo.ExitTrade(bar,sig.symbol,sig.Price);
> }
> }
> //update stats after closing trades
> bo.UpdateStats(bar, 2);
> }
> bo.PostProcess();
> bo.addcustommetric("MaxDDdays",MaxDDdays);
> }
>
>
>
__._,_.___

**** IMPORTANT ****
This group is for the discussion between users only.
This is *NOT* technical support channel.

*********************
TO GET TECHNICAL 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

*********************************




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

__,_._,___