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)
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.
// @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”)
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
plot(vpci, color=orange, linewidth=2)
DrawMA = input(true, type=bool, title=”Draw MA on VPCI?”)
lengthMA=input(8, “VPCI MA Length”)
// 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”)
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)