• Get $40 off VIP by signing up for a free account! Sign Up

EVA -- Excess Volume Analysis For ThinkOrSwim

mashume

Expert
VIP
Lifetime

Excess Volume Analysis (EVA) Indicator

https://tos.mx/H1GND3K

THEORY
The idea that the market buys in when it thinks that the price will move higher and sells when it thinks the price will move lower is fundamental to this indicator making sense. We assume that there is always a seller at a given transaction price and ignore asks beyond the movement of a candle.

We have a plethora of good volume indicators which consider up and down candle volumes as sums, as ratios, as totals, as just about anything you can think of. There is an excellent new indicator (VPN -- Volume Positive Negative) here: https://usethinkscript.com/threads/volume-positive-negative-vpn-indicator.6101/ and many, many more. My own Psychology of Volume indicator: https://usethinkscript.com/threads/the-psychology-of-volume.5189/ among them.

While the idea of volume analysis is well rehashed, I hope to have found a new angle on it. If we could quantify the pressure that exists on the market at some point in time by looking at the driver (force) that pushes higher or lower (volume), we might be able to discern a direction (or moreover a change of direction) that the market would like to make. That predictive aspect is what intrigued me about this idea. Perhaps, as the driver of price action, volume might be persuaded to give some insights into what traders think is going to happen next.

I have worked with candle wicks before in attempts to tease out market sentiment from the extraneous movement that price action takes. Some have been more successful than others. I am also fascinated with the idea of the information contained in volume and the force it applies to the market's movements.

PRACTICE
The premise behind this indicator is that the volume for any candle can be divided into three pieces: The first is the volume that took the price from the open to the close -- This is the Active Volume. The rest of the volume is divisible between volume at prices that were too high, and volume at prices that were too low. While we can't get at data easily using ThinkOrSwim to look at exactly where volume and sales were made inside a given candle, we can divide the candle into body and wicks (upper and lower) and divide the Volume into bins by the percentage of the total movement (High - Low) each of the three portions of the candle represent.

Having divided each candle into 3 pieces, and each candle's volume proportionately as well, we create an oscillator from the data and watch the interplay of the lines. By the nature of volume where sometime things can be zero, this indicator is not really bound by 0 and 100, though most of the time it will be.

EYE CANDY and EXPLANATIONS
AfGXQ87.png

EVA Indicator on /ES 3m

A. Upside Unused Volume (Green Line) is above Active Volume (blue line) and the Downside Unused Volume Line (Red) indicating that there is a desire to move higher. Both mirror the 50 line though, and there is little actual movement in the approach to B.

B. The Downside Unused Volume (Red Line) has moved above the Upside Unused Volume line (Green), though the Active Volume Line is higher than the 50 line indicating that there is volume energy in the movement in the price.

C. DANGER! The Downside line has spiked higher and is flirting with the 50 line, indicating that a lot of traders or algos think that there may not be upward pressure (volume) to sustain the price levels. The drop during box C is then reinforced as Active Volume comes in and the price plunges until the Upside Unused Volume line crosses above the Downside Line just at the end of the box.



cmNqKWo.png

EVA Indicator on TSLA 3m with Used Volume Line

A. Upside Unused is above Active Volume, showing a desire to move upward, but no energy to do so until B.

B. Active Volume takes over, and both Upside and Downside Unused are indeterminate around the 25 line until C.

C. The Downside Unused Volume has started to outweigh the Upside Unused Volume, indicative of a coming fall as traders feel the price should be pulled back down.

D. Fight over future direction with BOTH Used and Unused above the Active Volume Line. Upside is in control when the Active Volume line crosses above to take the market somewhere out of chop.



a1RdsmR.png

EVA Indicator on TSLA 3m without Used Volume Line

A. Without the Active Volume (Blue line) showing, the interplay of Upside and Downside can sometimes be clearer. Here we see a period of indecision as both Upside and Downside vie for control and influence.

B. Downside Unused Volume has taken over and is fairly constant as we move through this period.

C. After a brief period of indecision once again, Downside Unused Volume is again clearly in control, and the price moves downward.

CODE
Code:
###############################
#
#           EVA
#  Excess Volume Analysis V1
#
#  Released to the UseThinkScript Community
#  2021-07-12
#  by @mashume
#
#  Released under GPLv2
#
###############################

declare lower;
input length = 14;
input average_type = AverageType.WEIGHTED;

def o = open;
def c = close;
def h = high;
def l = low;

def candle_range = h - l;
def candle_body_top = max(o, c);
def candle_body_bottom = min(o, c);

def upper_wick = h - candle_body_top;
def lower_wick = candle_body_bottom - l;

def upper_wick_percentage = upper_wick / candle_range;
def lower_wick_percentage = lower_wick / candle_range;

def overshoot_volume = upper_wick_percentage * volume;
def undershoot_volume = lower_wick_percentage * volume;

plot upper_bound = 50;
upper_bound.SetDefaultColor(GetColor(7));
upper_bound.SetStyle(CURve.MEDIUM_DASH);

plot lower_bound = 25;
lower_bound.SetDefaultColor(GetColor(7));
lower_bound.SetStyle(CURve.MEDIUM_DASH);

def used_volume = VOLUME - (undershoot_volume + overshoot_volume);

plot up_ratio = (sum(overshoot_volume, length) / MovingAverage(data = VOLUME, length = length, averageType = Average_Type)) / length * 100;
up_ratio.SetDefaultColor(GetColor(1));
up_ratio.SetLineWeight(2);

plot down_ratio = (sum(undershoot_volume, length) / MovingAverage(data = VOLUME, length = length, averageType = Average_Type)) / length * 100;
down_ratio.SetDefaultColor(GetColor(5));
down_ratio.SetLineWeight(2);

plot used_ratio = (sum(used_volume, length) / simpleMovingAvg(VOLUME, length)) / length * 100;
used_ratio.SetDefaultColor(GetColor(3));

As always, happy trading.

-mashume
 
Last edited:
Thanks man. I never really look into volume for futures on lower time frame, just scalp here and there. This study helps take into account the "danger" zones.
 
Update for those who use this on thinly traded (where price may not move at all for a bar) tickers:
Code:
def overshoot_volume = if candle_range != 0 then upper_wick_percentage * volume else overshoot_volume[1];
def undershoot_volume = if candle_range != 0 then lower_wick_percentage * volume else undershoot_volume[1];
this prevents generating NaN plots (no data plotted) where you would get a Divide by Zero error because the range is zero. Open the study and paste in the changes above to replace lines 33 and 34.

This change will eventually make it in with a batch of fixes and alerts and labels for the first revision, but it's here for those who might need it sooner than that.

-mashume
 
This is really interesting, thanks for sharing it. Do you have any recommendations about what length input works best for different time frames? I'm experimenting with using this on the Day, 30M, and 1M time frames. Currently I still have the length at 14 for all three of these time frames, but I imagine that adjustment to the length might be necessary for best results.

One thing I've noticed about this indicator is that sometimes a major change in the value of either the positive or negative line is a good sign that the stock is approaching a pivot point (sometimes the negative line shoots way up before the stock pumps, which may seem counter-intuitive, but it may be that it's showing that the negative line going up still didn't break the support or trend and that's why the stock is pumping after that).
 
Sounds interesting . I am very interested in adding volume for my trading as a confirm to other indicators on my charts for day trading. I have been using Volume Weighted MACD, Money Flow, Trade Volume Index and Chaikin Money Flow on a chart for a few months now to help minimize whipsaws. Added CMF in last week...seems to add some value. I have three separate charts to view for each security ( daily, 3 min and a separate chart for Tick Volume set at 250 and 800 ticks for 3 minutes). What do you think of the best way to analyze or add to a tick chart?
 
This is really interesting, thanks for sharing it. Do you have any recommendations about what length input works best for different time frames? I'm experimenting with using this on the Day, 30M, and 1M time frames. Currently I still have the length at 14 for all three of these time frames, but I imagine that adjustment to the length might be necessary for best results.

One thing I've noticed about this indicator is that sometimes a major change in the value of either the positive or negative line is a good sign that the stock is approaching a pivot point (sometimes the negative line shoots way up before the stock pumps, which may seem counter-intuitive, but it may be that it's showing that the negative line going up still didn't break the support or trend and that's why the stock is pumping after that).
I haven't really played around with it on different time frames. I use it on 3m and 1m for ES and CL futures for the most part. If you find good settings, please do share back here.

I think there might be something to your observation... I'll check it out! Thanks for the feedback. I really appreciate knowing people find these indicators I come up with are interesting and or useful to them in some way.

-Mashume
 
Sounds interesting . I am very interested in adding volume for my trading as a confirm to other indicators on my charts for day trading. I have been using Volume Weighted MACD, Money Flow, Trade Volume Index and Chaikin Money Flow on a chart for a few months now to help minimize whipsaws. Added CMF in last week...seems to add some value. I have three separate charts to view for each security ( daily, 3 min and a separate chart for Tick Volume set at 250 and 800 ticks for 3 minutes). What do you think of the best way to analyze or add to a tick chart?
Hmmmmm... Interesting question. I'll have to think about that
 
It would be interesting to discover if expanding this indicator to a Close-Close[1] basis might expose additional insights, capturing both Open-Close and Close[1]-Open (gap) volume. More complex to code, but perhaps worth the challenge. :)
 

Join useThinkScript to post your question to a community of 21,000+ developers and traders.

Similar threads

Not the exact question you're looking for?

Start a new thread and receive assistance from our community.

87k+ Posts
325 Online
Create Post

Similar threads

Similar threads

The Market Trading Game Changer

Join 2,500+ subscribers inside the useThinkScript VIP Membership Club
  • Exclusive indicators
  • Proven strategies & setups
  • Private Discord community
  • ‘Buy The Dip’ signal alerts
  • Exclusive members-only content
  • Add-ons and resources
  • 1 full year of unlimited support

Frequently Asked Questions

What is useThinkScript?

useThinkScript is the #1 community of stock market investors using indicators and other tools to power their trading strategies. Traders of all skill levels use our forums to learn about scripting and indicators, help each other, and discover new ways to gain an edge in the markets.

How do I get started?

We get it. Our forum can be intimidating, if not overwhelming. With thousands of topics, tens of thousands of posts, our community has created an incredibly deep knowledge base for stock traders. No one can ever exhaust every resource provided on our site.

If you are new, or just looking for guidance, here are some helpful links to get you started.

What are the benefits of VIP Membership?
VIP members get exclusive access to these proven and tested premium indicators: Buy the Dip, Advanced Market Moves 2.0, Take Profit, and Volatility Trading Range. In addition, VIP members get access to over 50 VIP-only custom indicators, add-ons, and strategies, private VIP-only forums, private Discord channel to discuss trades and strategies in real-time, customer support, trade alerts, and much more. Learn all about VIP membership here.
How can I access the premium indicators?
To access the premium indicators, which are plug and play ready, sign up for VIP membership here.
Back
Top