Skip to main content
On this page

Session Volume Profile in Pine Script: Data, POC, and Value Area

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

A session volume profile groups volume by price row within a defined session. It describes the supplied data for that period. It does not identify institutional owners or prove that a high-volume level will hold as support or resistance.

Define POC and value area precisely​

The Point of Control (POC) is the profile row with the greatest volume. Value Area High and Low bound the rows selected by the profile's value-area algorithm. The selected percentage is commonly 70%, but it is a configurable target, not a forecast that price will stay inside the area.

TradingView's volume-profile reference describes an algorithm that starts at the POC and considers neighboring rows. It is not simply a search for the globally narrowest interval containing a target volume. Row size and boundary/tie rules affect the result.

Do not equate a 68% volume area with one standard deviation unless a separate statistical model justifies that claim. A volume distribution need not be normal, and a volume-area algorithm is not a standard-deviation calculation.

Distinguish built-in tools from a community library​

TradingView provides session volume-profile chart and indicator features. Their session controls include different session groupings and custom time settings. Those product controls do not automatically describe the API of a Pine library.

The public SessionVolumeProfile library by jmosullivan is a community publication hosted on TradingView. Its name alone is not a complete import statement. Check the author, published version, exported types/functions, dependencies, and release notes before integrating it. This guide does not invent an import signature or promise that every library version matches the built-in profile.

Know what your data contains​

Lower-timeframe OHLCV bars are not a tape of every individual trade price. A script distributing bar volume among price rows uses an allocation rule; that approximation matters when comparing profiles. Likewise, up/down bar volume should not automatically be described as exact aggressive buy/sell volume.

TradingView documents lower-timeframe requests and their availability limits. Missing intrabars, unavailable volume, and feed differences can affect results. Check the volume type and exchange coverage for the selected symbol rather than assuming all assets provide the same information.

More rows increase resolution but do not create more precise input data. Comparing two profiles requires matching both the row layout and the underlying data assumptions.

Establish session boundaries before implementation​

InputWhat to verify
SessionRegular, extended, overnight, or a specified custom interval
Time zoneExchange or explicit zone, including daylight-saving behavior
Profile rowsFixed row count or price/tick row size
Value-area targetPercentage and the algorithm used to select rows
Intrabar sourceRequested timeframe, feed, coverage, and missing values
Reset behaviorWhen the current session finalizes and the next begins

Use a timezone definition that matches the intended market calendar. A fixed EST offset is not interchangeable with New York local time throughout the year. Inspect overnight sessions, holidays, and the transition between two sessions before evaluating a trading rule.

Keep developing and completed levels separate​

A developing POC or value area can move while the session receives new data. A completed session's final profile was not fully available at its opening. A backtest that uses final session levels for earlier decisions leaks information from later bars.

If you want to test reactions to the previous session's POC, freeze that completed profile and specify the first eligible trading time. If you want a developing-level strategy, preserve the level as it existed at each decision. A later screenshot cannot reconstruct that history reliably.

Validate a custom profile​

Start with one completed session and reconcile the included bars and total volume. Inspect row boundaries, zero-volume rows, ties at the POC, and session resets. Compare against another implementation only after aligning its data and settings; disagreement does not automatically mean one is broken.

Then specify any entry and exit rule independently of the profile display. Include costs and avoid presenting a few bounces as a verified edge. A concentration of historical volume is descriptive evidence, not a guarantee of future liquidity or a measured profitable setup.

Pineify can assist with drafting Pine code, but library compatibility and calculation behavior still need review. No personal ES, SPY, or AAPL trade result is claimed here.

Is SessionVolumeProfile an official TradingView Pine library?

The linked publication is by community author jmosullivan. Distinguish that library and its versioned API from TradingView's built-in profile products.

Does a volume profile reveal institutional buying?

It groups the supplied volume data. It does not identify the participant or the purpose of a trade.

Can a session's final POC be used at the session open?

No. It includes information from the rest of that session. Use previously completed levels or timestamped developing levels for a causal test.

The Best Pine Script Generator