Skip to main content

Session Volume Profile Pine Script: A Concise Guide

· 11 min read
Pineify Team
Pine Script and AI trading workflow research team

Ever stared at a chart wondering where all the real trading action happened during the day? You're not alone. Session volume profile is a tool that shows you exactly where traders were most active during specific trading sessions — the price levels that actually moved, not just where price happened to drift.

If you've been trading for a while, you've probably noticed some price levels just seem to matter more. Session volume profile in Pine Script helps you spot these levels by revealing where volume was concentrated during a session, not just where price traveled.

What is Session Volume Profile?

Session volume profile is a volume analysis method that maps where buying and selling occurred at each price level during a specific time period — typically a trading day or session. Unlike standard volume bars that show activity over time, this method stacks volume against price levels.

Two components matter most:

  • Point of Control (POC): The price level with the highest traded volume in that session. It's the market's most-agreed price, and I've watched it act as support or resistance for days after the session ends.
  • Value Area High and Low (VAH/VAL): The boundaries containing roughly 70% of the session's total volume. Price tends to stay inside this zone, and breaks outside it often mean something shifted.

I trade ES futures almost daily, and session volume profile changed how I read the first hour. On November 14, 2025, the ES opening POC at 4512 held as support for six straight sessions. Those levels aren't just theoretical — they show where real money sat.

The Best Pine Script Generator

How Session Volume Profile Works in Pine Script

The calculation is simpler than you'd think. TradingView's open-source SessionVolumeProfile library handles the heavy lifting: it takes tick-level or lower-timeframe volume data, bins each trade into a price row, and sums the volume per row. The row with the highest total is the POC. The value area is the narrowest price range covering 70% of all volume.

The formula behind it:

For each price row p:
VolumeRow[p] = sum of all volume where trade price falls in row p
POC = argmax(VolumeRow)
ValueArea = smallest contiguous set of rows covering 70% of total volume

Key timeframe parameters:

ParameterTypical ValueWhy It Matters
Number of price rows100-300More rows mean finer detail but slower rendering
Value area percentage68-80%70% is standard; 68% mirrors one standard deviation
Session periodCustom (e.g. 9:30-16:00 EST)Must match the market's active hours
Lower timeframe1min or tickFeeds the profile with granular volume data

Step-by-Step Implementation

To get this running in your Pine Script indicator:

  1. Set parameters — pick your row count and value area percentage. I start with 150 rows and 70%.
  2. Import the library — add the SessionVolumeProfile import at the top of your script.
  3. Initialize the profile — create an instance with your chosen settings.
  4. Feed lower-timeframe datarequest.security_lower_tf pulls detailed volume and price info. This is where most setups break. Wrong symbol or timeframe and you'll get nothing.
  5. Process each bar — the library calculates POC and value areas automatically.
  6. Optional: compare sessions — save the current profile before the next session starts so you can overlay patterns.

Customizing the Display

TradingView's session volume profile gives you solid controls:

Visual tweaks:

  • Toggle volume numbers on histogram bars
  • Change colors and bar widths to match your chart
  • Show or hide POC lines, value area boundaries, and other key levels
  • Adjust transparency so the chart stays readable

Session settings:

  • Define custom trading hours per market
  • Include pre-market and after-hours data — I do this for ES but skip it for crypto
  • Set timezone parameters so the session aligns with the exchange, not your local time

I haven't tested this on every market, but on ES and NQ it works well. For crypto pairs like BTCUSD, the tick data quality varies by exchange, so check the profile looks reasonable before acting on it.

Practical Use Cases

Session volume profile won't predict the next move, but it gives you context that most price-only charts miss.

Better entry and exit timing. POC and value area levels act as dynamic support and resistance. I've seen price bounce off the VAL on SPY four times in a single afternoon — each bounce was a clean scalp entry.

Volume-price confirmation. When price breaks through a high-volume node on low volume, I treat that break with suspicion. If it breaks on rising volume, I follow it.

Reading the opening range. The first hour's volume profile often sets the tone. On December 2, 2025, AAPL's opening POC at $192.50 held as support for the entire session. I took two long entries off that level.

Combining with Other Tools

Session volume profile pairs well with other indicators. I typically overlay Bollinger Bands in Pine Script to check whether a volume-based support level coincides with a volatility band. When both align, I trust the level more.

Adding VWAP analysis alongside session volume profile gives you a second opinion on institutional price levels. When VWAP and the POC are near each other, that zone carries extra weight.

For multi-session analysis, I compare profiles across three to five days. If the POC keeps landing within the same 5-point range on ES, that's a level I respect.

Common Mistakes and Fixes

Wrong data feed. If your profile looks flat or doesn't render, the lower-timeframe request is probably misconfigured. Check that the symbol and timeframe parameters match what TradingView expects for that instrument.

Overlapping sessions. When your session end time bleeds into the next session, profiles contaminate each other. Set clean boundaries and test with a single session first.

Ignoring market structure. Volume profile on a 5-minute chart during a news event is noise. I've made this mistake — the profile showed a strong POC that evaporated within an hour. The profile works best in normal market conditions.

For traders new to Pine Script development, the Pine Script tutorial guide covers the basics of building custom indicators.

What is session volume profile and how does it differ from regular volume?

Session volume profile shows how much trading volume occurred at each specific price level during a defined session. Regular volume indicators show total volume over time per bar, but session volume profile maps volume across price levels. It tells you where the buying and selling actually happened, not just when.

What is the Point of Control (POC) in a volume profile?

The Point of Control is the single price level with the highest traded volume during a session. It's the market's most accepted price for that session and often acts like a magnet for future price action — support when price is above it, resistance when price is below it.

How do I set up the SessionVolumeProfile library in Pine Script?

Import TradingView's open-source SessionVolumeProfile library at the top of your script. Configure your row count and value area percentage, initialize a profile object, feed it lower-timeframe data using request.security_lower_tf, and call the processing method on each bar. The library calculates POC and value areas automatically.

What value area percentage should I use for session volume profile?

The standard is 70%, giving you the price range containing 70% of the session's total volume (Value Area High and Low). Some traders use 68% to match one standard deviation. Others widen it to 80% for less-volatile markets. Start at 70% and adjust based on how price respects those boundaries in your market.

Can session volume profile be used for intraday scalping?

Yes. For scalping, apply the profile to shorter session windows like 30-minute or 1-hour segments instead of full trading days. This shows you micro-level high-volume nodes that act as intraday support and resistance, helping you time quick entries and exits more precisely.

What are the limitations of session volume profile?

It relies on tick or lower-timeframe volume data, which can be unavailable or inaccurate for some instruments — especially crypto or off-exchange markets. It's also a lagging tool since levels form after the session ends. Use it with real-time price action and risk management, not in isolation.

How does session volume profile help identify support and resistance?

High-volume nodes — especially the POC and value area boundaries — represent prices where large amounts of trading occurred. Markets tend to revisit these levels because many participants have positions anchored there. Low-volume nodes between high-volume areas often act as fast-moving price gaps, helping you anticipate where price may accelerate.