EasyLanguage Relative Volume Indicator
The following article is from one of our external contributors. It does not represent the opinion of Benzinga and has not been edited.
Several years ago, Dr. Brett Steenbarger proposed the idea of "Relative Volume" on Traderfeed. In this case, the core concept was to adjust intraday volume bars for the smile effect, whereby opening and closing volume are greater than the mid-session trade (see Predicting SPY Volume). Only in this way can the trader assess the normalized significance of volume bars irrespective of the time of day.
In the graph below, you can see the importance of tracking volume as a confirming indicator for prospective peaks and valleys in price action. As long as relative volume is building over and above significant historical levels, it's generally safe to assume that either fear or greed are having their way with momentum. Only when that volume subsides can a new equilibrium said to have been established for a potential pause -or- reversion.
That's what I call "stopping power", and while it doesn't always work so cleanly, it should be a strong alert for day traders, especially when used in conjunction with volatility measures. Furthermore, astute observers may discern a cumulative supportive or resistive effect on price by these spikes.
TradeStation EasyLanguage Code
Finally, by popular request, below is my code for relative volume as programmed in Tradestation's EasyLanguage. While experience is a good teacher of what represents significance, an obvious improvement to this example would convert the raw score with a z-score or percentrank. Meanwhile, note both the normalizing and smoothing elements below:
//Relative Volume (c) Market Rewind 2010 inspired by Traderfeed
//Used on SPY 3-min Bars; Requires 20-Days of Data
Variable: NumDay(1), NumBar(0), RelVol(0);
If Date > Date Then Begin
NumDay = NumDay + 1;
NumBar = 0;
If Time > 0630 AND Time < 1315 Then Begin //Local Time (PST)
If Volume > 0 Then Begin
NumBar = NumBar + 1;
VolArray[NumBar] = VolArray[NumBar] + Volume;
RelVol = Volume / (VolArray[NumBar]/ NumDay);
Plot1(jtHMA(average(RelVol,6),6), "RelVol", Iff( Time > 1310, Black, White)) ; //Local Time
If you don't have the Hull Moving Average function (search jtHMA on the TS forums), the plot line may be changed as follows:
Plot1(average(RelVol,8), "RelVol", Iff( Time > 1310, Black, White)) ; //Local Time
(c) 2013 Benzinga.com. Benzinga does not provide investment advice. All rights reserved.