Video: How to Use Volume Profile for Sniper Entries (STEAL THIS)
Creator: Ara Kerbabian
Original Video: Watch the original video
Difficulty: Advanced
The Big Idea
Two entry levels can fit the same directional idea while offering different chances of filling and different risk distances. Volume profile supplies another way to describe the chosen range: where the available feed records concentrated activity, and where relatively little activity appears.
What the Profile Measures
A volume profile groups activity by price over a selected interval. The point of control, or POC, identifies the price row with the greatest recorded volume under that profile’s calculation. High-volume and low-volume nodes describe the distribution around it.
The source uses a custom range extending beyond the immediately marked high and low into earlier price action. That detail matters: a different time window, row size, feed, or allocation method can produce a different POC. The tallest row is not an instrument-wide constant.
For the creator, the profile supplements an existing checklist of higher-timeframe alignment, a structure break, a failed breakout or sweep, and an imbalance. Each item contributes to a displayed score. A score of 100 is completion of that checklist, not a 100% probability of success.
Separate Recorded Activity From Current Orders
Historical volume shows that trading occurred under the feed’s definition. It does not prove that the same participants will defend the area later, that their orders remain, or that new orders cannot overwhelm the previous concentration.
The source treats dense nodes as potential resistance to a retracement and sparse nodes as potential areas of faster travel. Those are hypotheses about future behavior. A high-volume area may also attract rotation or acceptance; a low-volume boundary can still produce a reaction. Do not discard every sparse area as irrelevant.
| Observation | What it establishes | What it does not establish |
|---|---|---|
| Highest-volume row | The largest measured allocation in the selected profile | A guaranteed future defense |
| Sparse row | Less recorded activity under this calculation | No orders or no possible reaction |
| POC near an entry reference | Two defined observations overlap | A calibrated increase in win probability |
The Real Decision Is Fill Rate Versus Entry Quality
The examples compare retracement entries around 67% and 75% of a bearish range. A higher short entry may reduce distance to the same protective reference and increase room to the same objective, but the market may turn before filling it.
The creator uses the profile to help decide which candidate deserves attention and when a concentration near the stop is a warning. This is a selection process to investigate, not evidence that the profile can reliably choose the perfect limit price.
Worked Example: Two Short Limits
Fictional bearish range
Assume a decline from 100.00 to 80.00. Both hypothetical short plans use a 100.00 protective reference and 80.00 objective, before costs.
| Step | Calculation or observation | Meaning |
|---|---|---|
| 67% retracement | 80 + 0.67 × 20 = 93.40 | Risk 6.60; reward 13.40: approximately 2.03R. |
| 75% retracement | 80 + 0.75 × 20 = 95.00 | Risk 5.00; reward 15.00: 3R. |
| Candidate profile | The measured POC lies near 93.40 | This may motivate observing the earlier entry, but does not prove it will hold. |
| Fill tradeoff | Price reaches 93.60, then turns lower | The 95.00 limit might remain unfilled; it earns no hypothetical profit simply because its drawn R is larger. |
For a fair comparison, retain the opportunities that reached neither level, one level, or both. Do not award each entry method its favorable fills and quietly remove the missed winners. Record actual or conservatively modeled execution rather than assuming a touched line guarantees queue priority.
Why a Concentration Near Invalidation Matters
If the activity concentration lies close to the planned stop, a return toward that area can leave little buffer. Spread changes, slippage, and ordinary volatility may matter more than the visual precision of the entry.
This does not mean the market is being pulled there by a known collection of orders. It means the proposed trade exposes a particular price-distance problem. The useful question is whether such candidates behave differently across a predefined sample.
The source includes an open trade whose final outcome is not supplied and selected examples of both appealing and unappealing alignments. Treat the pending trade as pending. A screenshot and a favorable narrative do not establish its eventual result.
Feed Choice Is Part of the Method
Exchange-reported volume, broker-specific activity, and tick volume are not interchangeable. Tick volume may count price updates rather than the number of units exchanged. A decentralized spot-forex chart need not represent the whole market’s transactions.
TradingView’s volume-profile documentation (paid link) describes its use of lower-timeframe information and feed-dependent volume types. The source’s custom platform may use a different method. Agreement between screenshots is not a substitute for matching the data definition.
An OHLCV Estimate Needs an Honest Label
A completed candle provides a high, low, close, and aggregate volume. It does not reveal exactly how much traded at every price inside its range. The included indicator distributes each bar’s volume uniformly across the price rows it overlaps, a deliberately coarse estimate.
For example, a bar spanning 100–102 with volume 100 contributes 50 to each of two equal one-point rows under this assumption. That allocation is not a recovered transaction record. Real activity might have been heavily concentrated near one end.
Changing the chart timeframe changes those assumed distributions. This is why a coarse chart-bar estimate can disagree with a platform profile built from finer data. Use the tool to study the measurement problem and inspect approximate concentrations, not to claim exact hidden liquidity.
A Reproducible Profile Record
- Feed: name the symbol, venue, and volume type.
- Window: freeze start, end, and session selection.
- Rows: record price resolution and allocation method.
- Candidate levels: mark entries, invalidation, and objective before reviewing the reaction.
- Alignment: define the maximum permitted distance from the POC.
- Execution: keep missed fills, costs, and stop proximity visible.
Pine Script Indicator
View Pine Script Indicator Code
//@version=6
// Guide: https://candlechasers.com/volume-profile-poc-entry-selection/
// Coarse OHLCV allocation estimate; NOT true transaction-level volume-at-price.
indicator("CC Rolling Volume Allocation Estimate", overlay=true, max_bars_back=500, max_boxes_count=50, max_lines_count=5)
length = input.int(100, "Completed chart bars in profile", minval=10, maxval=300)
rows = input.int(24, "Price rows", minval=8, maxval=40)
width = input.int(30, "Maximum histogram width in chart bars", minval=5, maxval=100)
var array<box> drawings = array.new<box>()
var line pocLine = na
var table status = table.new(position.top_right, 1, 3, bgcolor=color.new(color.black, 15))
if barstate.islast
while array.size(drawings) > 0
box.delete(array.pop(drawings))
line.delete(pocLine)
int endOffset = barstate.isconfirmed ? 0 : 1
int available = math.min(length, bar_index - endOffset + 1)
float lo = na
float hi = na
int usable = 0
if available > 0
for j = 0 to available - 1
int k = j + endOffset
lo := na(lo) ? low[k] : math.min(lo, low[k])
hi := na(hi) ? high[k] : math.max(hi, high[k])
float stepSize = not na(hi) ? math.max(syminfo.mintick, (hi - lo) / rows) : na
array<float> allocated = array.new_float(rows, 0.0)
if available > 0 and not na(stepSize)
for j = 0 to available - 1
int k = j + endOffset
if not na(volume[k]) and volume[k] > 0
usable += 1
float spread = high[k] - low[k]
if spread == 0
int bucket = math.max(0, math.min(rows - 1, int(math.floor((close[k] - lo) / stepSize))))
array.set(allocated, bucket, array.get(allocated, bucket) + volume[k])
else
for r = 0 to rows - 1
float lower = lo + r * stepSize
float upper = lower + stepSize
float overlap = math.max(0.0, math.min(high[k], upper) - math.max(low[k], lower))
array.set(allocated, r, array.get(allocated, r) + volume[k] * overlap / spread)
float peak = array.max(allocated)
float poc = na
if peak > 0
int winner = array.indexof(allocated, peak)
poc := lo + (winner + 0.5) * stepSize
for r = 0 to rows - 1
float value = array.get(allocated, r)
if value > 0
int barsWide = math.max(1, int(math.round(width * value / peak)))
color shade = r == winner ? color.orange : color.new(color.teal, 55)
array.push(drawings, box.new(bar_index + 2, lo + (r + 1) * stepSize, bar_index + 2 + barsWide, lo + r * stepSize, border_color=shade, bgcolor=shade))
// Draw forward from the current observation, not backward as a historical signal.
pocLine := line.new(bar_index, poc, bar_index + 2 + width, poc, color=color.orange, width=2)
table.cell(status, 0, 0, peak > 0 ? "Current rolling allocation ESTIMATE" : "No usable positive volume / insufficient bars", text_color=color.white)
table.cell(status, 0, 1, "Bars with volume: " + str.tostring(usable) + "/" + str.tostring(available), text_color=color.white)
table.cell(status, 0, 2, na(poc) ? "POC estimate unavailable" : "POC estimate: " + str.tostring(poc, format.mintick), text_color=color.white)
What This Indicator Shows
The indicator immediately draws a rolling histogram to the right of the latest chart bar and a current estimated POC. It uses up to one hundred completed chart bars and twenty-four rows by default. A developing live candle is excluded. Bars without positive available volume are skipped, and the status table reports usable coverage.
Volume is allocated by the overlap of each candle’s high-low interval with each row; zero-range bars are assigned to one row. The lowest-price row wins an exact tie. The POC line starts at the current observation rather than being drawn backward as a historical entry signal.
What This Indicator Does Not Show
This is not the creator’s proprietary profile, a true tick-level volume-at-price reconstruction, or a resting-liquidity map. It does not produce trade signals, calculate a value area, or grade the full checklist. The rolling profile changes as completed bars enter and leave; its current POC must not be applied to past entries as though known then.
Setup and Validation
Paste the complete code into TradingView’s Pine Editor, save it, and add it to a standard candlestick chart with sufficient history. Check the visible status table and the reference plots before expecting a marker. Review the inputs and symbol session rather than changing several settings at once.
Validation status: Structurally reviewed for completed-bar decisions, future-data use, reference lifecycle, and display behavior. This code has not been compiled or chart-tested in TradingView here. No profitability or live-execution validation is claimed. Use replay to verify the described behavior and report any compiler message exactly.
Practice and Review
- Window sensitivity: compare fixed one-hundred- and two-hundred-bar windows on the same feed, noting how the POC changes.
- Incremental selection: collect an existing setup sample first, then compare a predeclared POC-distance filter without changing entries or management.
- Fill audit: compare the two retracement candidates per eligible opportunity, including unfilled limits, costs, and room near the stop.
Check Your Understanding
Does a 100 checklist score mean 100% success? No. It records checklist completion.
Is historical volume resting liquidity? No. Current orders are a different data object.
Why can profiles disagree? Feeds, windows, row sizes, and allocation methods differ.
Final Takeaway
Use the profile to ask a sharper selection question, while preserving the data definition and fill tradeoff. A concentration is an observation to evaluate, not proof that an entry must work.
Risk Disclosure
This guide is educational and is not personalized financial, investment, or trading advice. Trading can result in substantial losses, including losses beyond a planned stop because of gaps, slippage, leverage, or execution failures. Examples and source-reported results are not promises of future performance. Hypothetical calculations omit costs unless stated otherwise. Indicators can be incomplete, data-dependent, and unsuitable for a particular instrument or session. Evaluate any approach with appropriate data, realistic costs, and risk limits before considering live use. Only commit funds whose loss you can afford.
Independence: CandleChasers is not affiliated with the source creator, channel, or TradingView. This is an independent educational companion, not an endorsement or an official reproduction of a proprietary tool.