Volume Price Confirmation Indicator (VPCI) for ThinkorSwim

BenTen

Administrative
Staff member
Staff
VIP
Lifetime
VPCI or known as Volume Price Confirmation Indicator was developed by Buff Dormeier. It plots the relationship between the price trend and the volume.

Fundamentally, the VPCI reveals the proportional imbalances between price trends and volume-adjusted price trends. An uptrend with increasing volume is a market characterized by greed supported by the fuel needed to grow. An uptrend without volume is complacent and reveals greed deprived of the fuel needed to sustain itself. Investors without the influx of other investors ( volume ) will eventually lose interest and the uptrend should eventually breakdown. A falling price trend reveals a market driven by fear. A falling price trend without volume reveals apathy, fear without increasing energy. Unlike greed, fear is self-sustaining, and may endure for long time periods without increasing fuel or energy. Adding energy to fear can be likened to adding fuel to a fire and is generally bearish until the VPCI reverses. In such cases, weak-minded investor's, overcome by fear, are becoming irrationally fearful until the selling climax reaches a state of maximum homogeneity. At this point, ownership held by weak investor’s has been purged, producing a type of heat death capitulation. These occurrences may be visualized by the VPCI falling below the lower standard deviation of a Bollinger Band of the VPCI, and then rising above the lower band, and forming a 'V' bottom.

In the Dow Award-winning paper, the test results are impressive and do demonstrate that the VCPI can increase trade reliability.
The author wisely notes that this is a tool that can help improve your performance, but it is not the Holy Grail.

hQFtFM4.png


You may find this excerpt interesting (full article):

thinkScript Code

Per author: the shortTerm/longTerm lengths need tuning for your instrument. The default 5/20 is not optimal
Rich (BB code):
#//
#// @author LazyBear
#//
#// If you use this code in its orignal/modified form, do drop me a note.
#//
#study("Volume Price Confirmation Indicator [LazyBear]", shorttitle="VPCI_LB" )
# Converted to TOS by Rigel 2018.
#
declare lower;
input shortTerm = 5;
input longTerm = 20;
input agg=aggregationPeriod.Hour;
input src = close;
input BBlength = 20; #, title="BB Length"
input mult = 2.5;
def vpc = vwap(period=agg) - Average(src, longTerm);
def vpr = vwap(period=agg) / Average(src, shortTerm);
def vm = Average(volume, shortTerm) / Average(volume, longTerm);

plot vpci = vpc * vpr * vm;
vpci.setDefaultColor(color.green);
plot zero=0;
zero.setdefaultColor(color.cyan);

input lengthMA=8 ; #, "VPCI MA Length"
plot MA = Average(vpci, lengthMA);
MA.setdefaultColor(color.pink);

def bb_s = vpci;
plot basis = Average(bb_s, BBlength);
def dev = (mult * StDev(bb_s, BBlength));
plot upper = (basis + dev);
plot lower = (basis - dev);
basis.setdefaultColor(color.white);
basis.setPaintingStrategy(PaintingStrategy.line);
basis.setStyle(curve.SHORT_DASH);

This indicator was converted to ThinkorSwim by rigel from the TradingView version developed by LazyBear.
 
Last edited by a moderator:
@
VPCI or known as Volume Price Confirmation Indicator was developed by Buff Dormeier. It plots the relationship between the price trend and the volume.

hQFtFM4.png


You may find this excerpt interesting (full article):



thinkScript Code

Per author: the shortTerm/longTerm lengths need tuning for your instrument. The default 5/20 is not optimal
Rich (BB code):
#//
#// @author LazyBear
#//
#// If you use this code in its orignal/modified form, do drop me a note.
#//
#study("Volume Price Confirmation Indicator [LazyBear]", shorttitle="VPCI_LB" )
# Converted to TOS by Rigel 2018.
#
declare lower;
input shortTerm = 5;
input longTerm = 20;
def agg=aggregationPeriod.MIN;
input src = close;
input BBlength = 20; #, title="BB Length"
input mult = 2.5;
def vpc = vwap(period=longTerm*agg) - Average(src, longTerm);
def vpr = vwap(period=shortTerm*agg) / Average(src, shortTerm);
def vm = Average(volume, shortTerm) / Average(volume, longTerm);

plot vpci = vpc * vpr * vm;
vpci.setDefaultColor(color.green);
plot zero=0;
zero.setdefaultColor(color.cyan);

input lengthMA=8 ; #, "VPCI MA Length"
plot MA = Average(vpci, lengthMA);
MA.setdefaultColor(color.pink);

def bb_s = vpci;
plot basis = Average(bb_s, BBlength);
def dev = (mult * StDev(bb_s, BBlength));
plot upper = (basis + dev);
plot lower = (basis - dev);
basis.setdefaultColor(color.white);
basis.setPaintingStrategy(PaintingStrategy.line);
basis.setStyle(curve.SHORT_DASH);

Shareable Link

https://tos.mx/DbMSRi

This indicator was converted to ThinkorSwim by rigel from the TradingView version developed by LazyBear.
Are the 5/20 lengths good for short term or long term? This looks like a good lil tool to look at. @MerryDay @BenTen

The lengths I honestly don't know what they really mean or is supposed to determine 😅 @MerryDay
 
Last edited by a moderator:
The lengths I honestly don't know what they really mean or is supposed to determine 😅 @MerryDay
This indicator is definitely geared toward more experienced technical chartists.
It can NOT be used until you optimize the lengths!

To find out how lengths affect your chart analysis.
Put in a much higher number in the 1st length variable. Analyze it over different timeframes, across history and with multiple instruments.
What difference did it make? Now make it a much lower number. Ask yourself the same questions.
Now do the same with the 2nd length variable.

This is how you become intimate with your indicators, you have to ask it questions and learn from its answers.
Doing this, will provide you a much deeper understanding of what your chart is telling you.

For more information about the VPCI:
https://cmtassociation.org/video/volume-price-confirmation-indicator/
https://www.stockfetcher.com/forums/General-Discussion/VPCI-indicator/52357/20
 
Last edited:
To find out how lengths effect your chart analysis.
Put in a much higher number in the 1st length variable. Analyze it over different timeframes, across history and with multiple instruments.
What difference did it make? Now make it a much lower number. Ask yourself the same questions.
Now do the same with the 2nd length variable.

This is how you become intimate with your indicators, you have to ask it questions and learn from its answers.
Doing this, will provide you a much deeper understanding of what your chart is telling you.

https://cmtassociation.org/video/volume-price-confirmation-indicator/
https://www.stockfetcher.com/forums/General-Discussion/VPCI-indicator/52357/20
The links are good info, you've convinced me to let my indicator seduce me, you should teach a class "Getting up close and personal with your indicators" I would pay for it 😁
 
VPCI or known as Volume Price Confirmation Indicator was developed by Buff Dormeier. It plots the relationship between the price trend and the volume.

The author states:
I believe a falling trend and falling VPCI is a bullish indication.
A falling trend and a rising VPCI is a bearish indication.

Additional signals can come from VCPI crossing its own moving average.
The indicator crossing above and below zero can offer useful signals to traders.
The indicator can be used over any timeframe with varying inputs.

In the Dow Award-winning paper, the test results are impressive and do demonstrate that the VCPI can increase trade reliability.
The author wisely notes that this is a tool that can help improve your performance, but it is not the Holy Grail.

View attachment 4360

You may find this excerpt interesting (full article):



thinkScript Code

Per author: the shortTerm/longTerm lengths need tuning for your instrument. The default 5/20 is not optimal
Rich (BB code):
#//
#// @author LazyBear
#//
#// If you use this code in its orignal/modified form, do drop me a note.
#//
#study("Volume Price Confirmation Indicator [LazyBear]", shorttitle="VPCI_LB" )
# Converted to TOS by Rigel 2018.
#
declare lower;
input shortTerm = 5;
input longTerm = 20;
def agg=aggregationPeriod.MIN;
input src = close;
input BBlength = 20; #, title="BB Length"
input mult = 2.5;
def vpc = vwap(period=longTerm*agg) - Average(src, longTerm);
def vpr = vwap(period=shortTerm*agg) / Average(src, shortTerm);
def vm = Average(volume, shortTerm) / Average(volume, longTerm);

plot vpci = vpc * vpr * vm;
vpci.setDefaultColor(color.green);
plot zero=0;
zero.setdefaultColor(color.cyan);

input lengthMA=8 ; #, "VPCI MA Length"
plot MA = Average(vpci, lengthMA);
MA.setdefaultColor(color.pink);

def bb_s = vpci;
plot basis = Average(bb_s, BBlength);
def dev = (mult * StDev(bb_s, BBlength));
plot upper = (basis + dev);
plot lower = (basis - dev);
basis.setdefaultColor(color.white);
basis.setPaintingStrategy(PaintingStrategy.line);
basis.setStyle(curve.SHORT_DASH);

Shareable Link

https://tos.mx/DbMSRi

This indicator was converted to ThinkorSwim by rigel from the TradingView version developed by LazyBear.
The VPCI will not work for me. It does not display anything in charts
 
@MerryDay
I need some guidance on application of this indicator.

I have applied this to the ES futures chart (/ES) and can only get it to appear on the 1-minute and 5-minute charts.

Regardless of going into the code and changing the aggregation period to various other timeframes and/or changing the chart timeframe it will only show on a 1-minute or 5-minute timeframe.

Yes, I have extended hours activated.
Yes, I have tried it on other symbols (SPY, TSLA, etc)

I can't seem to identify how/why it is limiting the output and how to modify the code to have it function on other aggregation periods and other chart timeframes?

Any help is always greatly appreciated.
 
Thanks for the shared chart link: http://tos.mx/!dlyYTdlW , it works. Any document on how to use this indicator? Links provided by @MerryDay and @BenTen doesn't work.

QS86KtW.png

The indicator is superior in many ways. However, it takes considerable analysis to optimize the moving average lengths.
Read more:
https://usethinkscript.com/threads/...ndicator-vpci-for-thinkorswim.97/#post-107192

In the example of above, NVDA with high volatility, high liquidity is optimized to lengths of 10 and 50 for a 30-min timeframe.

After that, the study works like all trend indicators.
When VPCI (green line) crosses above its signal line (pink--moving average) it is considered trending.
Mean reversion traders look for entry before trend.
They make entry when the VPCI (green) crosses above oversold (blue)

It is considered confirmed when VPCI crosses the midpoint (zero -- cyan line).
The trend is considered over when VPCI crosses below its signal line.

(the above chart does not use the MTF option).
However, as trend is not discernible on timeframes less than 30-min; for lower timeframes; MTF option must be used.


http://traders.com/Documentation/FEEDbk_docs/2007/07/Abstracts_new/DORMEIER/dormeier.html#:~:text=This is the objective of,relationship between price and volume.&text=The VPCI exposes the relationship,or contradicting the price trend.

https://cmtassociation.org/video/volume-price-confirmation-indicator-2/
https://joapen.com/blog/2018/04/01/volume-price-confirmation-indicator-vpci/

And here is a strategy that incorporates the VPCI:
https://usethinkscript.com/threads/volume-confirmation-for-a-trend-system-for-thinkorswim.19278/

Hope this helps.
 
Last edited:

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
287 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