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

Re: Geitzen's Reactivity Indicator



PureBytes Links

Trading Reference Links

sstyers <sstyers@xxxxxxx> wrote
>  This was coded by Dave DeLuca and came from Omega's old BBS about 1994. 
>Both text code and .ela, as well as notes on usage are included. 
>Sorry, I don't have any personal experience with it.
> 
>Sherrill Styers
>

I'm happy to see that some people have been getting some use out of
the Reactivity indicator I coded some years ago, but here's a few
things to consider when using it:

First, the code is not well written. It is susceptible to divide by
zero errors. Also, the code would be hard to understand if you didn't
have Gietzen's book "Real-Time Futures Trading" (and maybe even if you
did). I've appended a re-write of the user function "Reactivity" to
the end of this message. It returns the same values as the older
function but it has more descriptive variable names, a little better
documentation and it checks for zero divisors. You may want to paste
it over the text of the older function if you have already imported
the older version into the PowerEditor. 

Also, the original ELA has a function named "Mean" included in the
archive. If you already have a function with that name it should warn
you before overwriting it. If you follow through and import the Mean
function I would suggest you  paste over the implementation as it is
coded with the following:

Mean = (High + Low) * 0.5;

The original version from 1994 was 

Mean = (High + Low) / 2; 

Whenever possible it is better to use muliplication over division
because using division can be up to 10 times more CPU intensive. If
you use Mean in a lot of your EasyLanguage functions this could save
you some time. 

Another thing to consider is that the indicator is very dependent on
volume, and may reference volume values quite a few bars back (up to 8
times the value of the "Len" parameter). Unless you are using some
form of continous or perpetual contract you should make sure you are
dealing with solid volume numbers for the forward contract. In this
respect I think the indicator may be more suited to trading stocks.

For the person who asked about how to calculate the cycle lengths,
that is pretty much up to you. Gietzen goes into detrending data to
observe the cycles, but it all seems to be quite subjective. 

I spent some time tonight reviewing the original description of the
Reactivity indicator and I'm satisfied that the original code (as well
as the improved code below) does produce the indicator the author
describes. I hadn't looked at the book for awhile (probably not since
1994 when I wrote the original code) but he does have some interesting
ideas in there, including some discussion of money flow and other
stuff. None of it is difficult or complicated and it might appeal to
traders who prefer a simpler approach to trading. I have never traded
using this method however, so you need to do your own testing. 

Good trading. 

Dave DeLuca

========  Improved Reactivity Function  ==============
{Pasted as quote to avoid word-wrap mess.}

>{	
>  User function : Reactivity as in Al Gietzen's book "Real-Time Futures Trading".
>
>  Inputs: Len(numeric); Lookback period. Gietzen suggests this value should be the 
>                        identified cycle period divided by 2.5. For example if cycle 
>                        period is 15, "Len" should be 6. 
>
>  Vars : 
>    AspectRatio(0) -  Normalized range for Len bars back div the normalized vol for Len bars back;
>    Range_Len(0)   -  The difference between the highest high and the lowest low for Len bars back;
>    Vol_Len(0)     -  The summation of the volume for Len bars back;
>    NormRange(0)   -  The normalized range (Range_Len);
>    NormVolume(0)  -  The normalized volumne (Vol_Len);
>    Mom(0)         -  The difference between the Mean price of current bar and Mean price Len bars back.
>
>  The normalized range and normalized volume are the averaged range and 
>  averaged total volume calculated over a lookback period of 8 * Len 
>  as per Gietzen's suggestion.
>
>  by Dave DeLuca 01/05/99
>}	
>
>Inputs: Len(numeric);
>
>Vars: AspectRatio(0), Range_Len(0), Vol_Len(0), NormRange(0), NormVolume(0), Mom(0);
>
>Range_Len = Highest(High, Len) - Lowest(Low, Len);
>NormRange = Range_Len / RMean(Len); 
>Vol_Len = Summation(Volume, Len);
>
>if Vol_Len <> 0 then 
>    NormVolume = Vol_Len / XAverage(Summation(Volume, Len), 8 * Len);
>
>if NormVolume <> 0 then
>    AspectRatio = NormRange/NormVolume;
>
>Mom = Mean - Mean[Len]; 
>Reactivity = AspectRatio * Mom;
>