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

RE: [amibroker] Logic for MaxDD while in a Buy Period



PureBytes Links

Trading Reference Links

Terry: many thanks.  As a result of your note, I was able to successfully
complete my code.  What you wrote did not work, but some slight
modifications (shown below) made the thing work just fine.  Thanks for
taking the time to respond; your response helped me get past my problem.
 
Ken
 
X        =  BarsSince(NOT Buystate);

CurEq2   =  Gain2chrt;

MaxEq2   =  HHV(CurEq2,X);

CurDD2   =  IIf(BIR, 100 * (MaxEq2 - CurEq2) / MaxEq2, 0);

MaxDD2   =  Highest(CurDD2);


  _____  

From: amibroker@xxxxxxxxxxxxxxx [mailto:amibroker@xxxxxxxxxxxxxxx] On Behalf
Of Terry
Sent: Saturday, January 20, 2007 1:44 PM
To: amibroker@xxxxxxxxxxxxxxx
Subject: RE: [amibroker] Logic for MaxDD while in a Buy Period



Ken,

 

I missed that. Hopefully this is somewhat on track with your request :-)

 

Try using BarsSince(Buy,1) as the length of your HHV lookback. You may
further want to qualify and only calculate this only on a Sell signal. It
would look something like this:

 

X = IIf(Sell,HHV(CurEq2, BarsSince(Buy,1), 0);

 

Then to pick the highest from within these choices:

 

MaxEq2 = Highest(MaxEq2);

 

Without testing, it seems that the net of this is the same as your original
statement, just without the intermediate step of computing the highest value
during each buy period. 

 

If you want the DD in % since a Buy, then add a calculation to compute the
DD during the buy periods first:

 

PeriodDD = (CurEq2 - ValueWhen(Buy, CurEq2,1)) / ValueWhen(Buy, CurEq2,1); 

X        = IIf(Sell,HHV(PeriodDD, BarsSince(Buy,1), 0); 

MaxEq2   = Highest(MaxEq2);

--

Terry

-----Original Message-----
From: amibroker@xxxxxxxxxxxxxxx [mailto:amibroker@xxxxxxxxxxxxxxx] On Behalf
Of Ken Close
Sent: Saturday, January 20, 2007 10:23
To: amibroker@xxxxxxxxxxxxxxx
Subject: RE: [amibroker] Logic for MaxDD while in a Buy Period

 

Terry: thanks for commenting, but that is not what I want.  As I said, I am
trying to determine the Largest (Max) drawdown from within all of the Buy
periods.  Each Buy period will see some amount of drawdown while the Buy is
on.   I want to determine the largest of these drawdowns from within each
Buy period.  See my other reply to Fred for still another way of describing
what I am trying to calculate.

 

Ken

 

  _____  

From: amibroker@xxxxxxxxxxxxxxx [mailto:amibroker@xxxxxxxxxxxxxxx] On Behalf
Of Terry
Sent: Saturday, January 20, 2007 11:39 AM
To: amibroker@xxxxxxxxxxxxxxx
Subject: RE: [amibroker] Logic for MaxDD while in a Buy Period

Highest includes the current bar and all past bars for each bar. If it
included the NEXT bar you would be looking into the future which, unless you
are on the last bar of data, is not "known" yet. However, if this is what
you want just do this:

 

MaxEq2      =     LastValue(Highest(CurEq2));

 

--

Terry

-----Original Message-----
From: amibroker@xxxxxxxxxxxxxxx [mailto:amibroker@xxxxxxxxxxxxxxx] On Behalf
Of Ken Close
Sent: Saturday, January 20, 2007 08:06
To: amibroker@xxxxxxxxxxxxxxx
Subject: [amibroker] Logic for MaxDD while in a Buy Period

 

I can not get the logic written to take care of a special case.

 

My objective is to determine the MaxDD in an equity curve (or the Close
Price line) while a signal is on a Buy.

 

I have used the following code snippit:

 

CurEq2      =     Gain2chrt;

MaxEq2      =     Highest(CurEq2);

CurDD2      =     IIf(BIR, 100 * (MaxEq2 - CurEq2) / MaxEq2, 0);

MaxDD2      =     Highest(CurDD2);

 

 

In most cases this is producing the correct answer, but I have discovered
certain cases where it delivers the wrong answer.

 

If the price (or Equity curve) has a down period in the NEXT buy period, the
code will still have as the HIGHEST value, the value from the PREVIOUS buy
period. This produces an incorrect value.   The Highest function is looking
for the highest value in the array MaxEq2 no matter when it occurred.   I
have not been able to figure out how to use the HHV function as the length
of the buy periods varies. 

 

How can I write this logic so that the MaxEq2 variable will "reset" after
each Buy period expires, and be ready to determine the largest value in each
new Buy Period?

 

Thanks for any help.

 

Ken

 

 

 

 

Content-Description: "AVG certification"
No virus found in this incoming message.
Checked by AVG Free Edition.
Version: 7.5.432 / Virus Database: 268.17.2/641 - Release Date: 1/20/2007 10:24 AM