Volume Price Confirmation Indicator (VPCI)

I have been looking for volume indicators that help me to identify the right minimum volumes to place long position, but by the moment I was not success.

This time I found this VPCI in tradingview, so let’s see how it works. The notes are very interesting basis of knowledge.

Volume Price Confirmation Indicator (VPCI)

Developed by Buff Dormeier, VPCI won 2007 Charles H Dow award by the MTA. VPCI plots the relationship between price trend and the volume , as either being in a state of confirmation or contradiction.

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.

The 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”)
shortTerm=input(5)
longTerm=input(20)

src=close
vpc = vwma(src, longTerm) – sma(src, longTerm)
vpr = vwma(src, shortTerm)/sma(src, shortTerm)
vm = sma(volume, shortTerm)/sma(volume, longTerm)

vpci = vpc*vpr*vm
hline(0)
plot(vpci, color=orange, linewidth=2)

DrawMA = input(true, type=bool, title=”Draw MA on VPCI?”)
lengthMA=input(8, “VPCI MA Length”)
s=sma(vpci, lengthMA)
plot(DrawMA?s:na, color=teal)

// Uncomment this line to enable histogram
// plot(DrawMA?(vpci-s):na, color=blue, style=histogram)

DrawBands = input(false, type=bool)
HighlightBreaches = input(true, type=bool)
length=input(20, title=”BB Length”)
mult=input(2.5)
bb_s = vpci
basis = sma(bb_s, length)
dev = (mult * stdev(bb_s, length))
upper = (basis + dev)
lower = (basis – dev)

plot(DrawBands?basis:na, color=gray, style=line)
p1 = plot(DrawBands?upper:na, color=gray)
p2 = plot(DrawBands?lower:na , color=gray)
fill(p1, p2, blue)

b_color = (bb_s > upper) ? red : (bb_s < lower) ? green : na
offs_v = 0.3
breach_pos = (bb_s >= upper) ? (bb_s+offs_v) : (bb_s <= lower ? (bb_s – offs_v) : 0)
Breached=(bb_s >= upper) or (bb_s <= lower)
plot(HighlightBreaches and Breached ? breach_pos : na, style=cross, color=b_color,linewidth=3)

Leave a Comment