EasyLanguage Relative Volume Indicator

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.

I include relative volume in each day's mid-day chart post and often refer to it. You may get a better feel for the metric by perusing these past Market Rewind posts:
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);

Array: VolArray[200](0);

If Date > Date[1] Then Begin
NumDay = NumDay + 1;
NumBar = 0;
End;

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);
End;

Plot1(jtHMA(average(RelVol,6),6), "RelVol", Iff( Time > 1310, Black, White)) ; //Local Time

End;

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
Market News and Data brought to you by Benzinga APIs
Comments
Loading...
Benzinga simplifies the market for smarter investing

Trade confidently with insights and alerts from analyst ratings, free reports and breaking news that affects the stocks you care about.

Join Now: Free!