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

[amibroker] coding Ensign's volatility stop - help



PureBytes Links

Trading Reference Links

Hey all,

I'm trying to implement the volatility stop study from Ensignsoftware:
 http://charts.dacharts.com/2007-01-22/opm8-33.png

The idea is that if price close above the VS_upper line then only the
VS_lower line should be drawn. Similarly, if price closes below the
VS_lower line then only VS_upper should be drawn. Here I've colored
them orange (VS_lower) and blue (VS_upper) to tell them apart for
debugging.

This is the working code, but there is one thing I still can not get
to work.

ATRxMultiplier = Prec(EMA(ATR(1), 9) * 2.5, 1);  // 9 per. EMA of
ATR_Ensign, x multiplier, 2 sigdigs
VS_lower = HHV(Close, 9) - ATRxMultiplier;  // for longs, VS line is
below price
VS_upper = LLV(Close, 9) + ATRxMultiplier;  // for shorts, VS line is
above price
downwave = ExRem(C <= VS_lower, C >= VS_upper); // = 1 on ARRAY1 true,
then 0 until ARRAY2 true.
upwave = ExRem(C >= VS_upper, C <= VS_lower);
in_downwave = Flip(downwave, upwave);  // = 1 on ARRAY1 true, 0 on
ARRAY2 true, then 1 on ARRAY1 true...
in_upwave = Flip(upwave, downwave);
   //VS_lower = HHV( C, BarsSince( in_downwave )) - ATRxMultiplier;
   //VS_upper = LLV( C, BarsSince( in_upwave )) + ATRxMultiplier;
Plot(VS_lower, "VS_lower", in_upwave * colorOrange, styleThick);
Plot(VS_upper, "VS_upper", in_downwave * colorBlue, stylethick);
Plot(C, "price_dv", colorWhite, styleBar);


The lower volatility stop line, VS_lower is supposed to be this (it's
commented out):
VS_lower = HHV( C, BarsSince( start_of_upwave )) - ATRxMultiplier;

which means that it's using the highest close from the point where
price closed above the upper volatility stop line, VS_upper.

Same thing for VS_upper, which should be:
VS_upper = LLV( C, BarsSince( start_of_downwave )) + ATRxMultiplier;

The problem is that when I enable these 2 changes my VS lines look all
weird.  However, if I look at what the values are supposed to be in
the Interpretation window they're correct.  For some reason they're
not being plotted correctly.  Here's what I used to compare:

printf("VS_upper_should_be: %g\n", LLV( C, BarsSince(
start_of_downwave )) + ATRxMultiplier);
printf("VS_lower_should_be: %g\n", HHV( C, BarsSince( start_of_upwave
)) - ATRxMultiplier);
printf("VS_upper: %g\n", VS_upper);
printf("VS_lower: %g\n", VS_lower);

It's kind of a conceptual problem because how do I plot a line which
starts being drawn when another is crossed?  Thanks for your help.

opm8

PS: I posted this already to the amibroker-ts yahoo group but that one
is completely dead with next to no activity.


Content-Description: "AVG certification"
No virus found in this incoming message.
Checked by AVG Free Edition.
Version: 7.5.432 / Virus Database: 268.17.12/655 - Release Date: 1/28/2007 1:12 PM