The volume profile range v6 indicator builds a horizontal histogram beside the chart. It takes one session, splits its price range into `Rows` bins, and shares each bar tick volume across the bins that bar touched. The busiest row becomes the point of control.
This build ships as a compiled .ex4 for MT4 and .ex5 for MT5; the screenshots below come from EURUSD H1.
| Platforms | MT4 (.ex4) + MT5 (.ex5) |
|---|---|
| Chart window | Main price chart |
| Plots | 0 |
| Alerts | popup, push notification, email, sound |
| Inputs | 21 |
What the Volume Profile Range V6 Indicator draws on the chart
OBJ_RECTANGLE rows form the profile, sitting `ProfileGapBars` to the right of the last candle.
Value area rows draw in `ColValueArea` and rows outside it in `ColOutside`.
OBJ_TREND rays mark the point of control and the two value area edges.
A session box outlines the range when `ShowSessionBox` is on.

How the Volume Profile Range V6 Indicator calculates its values
Defining the session
`StartHour` `0` and `EndHour` `24` bound the window in server time. `SessionDaysBack` `0` picks today. The code then finds the highest high and lowest low inside that window.
Filling the bins
binSize takes the session range over `Rows` `50`. Each bar spans a number of bins from its low to its high, and its tick volume gets divided evenly across them. So a wide bar spreads its volume rather than dumping it in one row.
Finding the value area
The busiest bin becomes the point of control. The code then grows outward from it, always taking the fuller neighbour, until the accumulated volume reaches `ValueAreaPercent` `70.0` of the session total.
How to read the signals
The point of control is where the session traded most heavily.
The value area covers seventy percent of that activity by default.
A thin row means price passed through quickly.
Tick volume is a proxy for activity, not a record of contracts traded.
Alert channels in this build: popup, push notification, email and sound, one message per closed bar.
Alerts sit under `EnableAlerts`, which starts on, and `EnablePopup` carries the message. `EnablePushNotify`, `EnableEmail` and `EnableSound` all begin false. `SoundFile` picks the clip. The check runs once per closed bar.
Every Volume Profile Range V6 Indicator input
Core settings
| Setting | What it does | Default |
|---|---|---|
Rows |
Price bins (rows) in the profile. Price bins in the profile, default `50`. | 50 |
ValueAreaPercent |
Value area coverage (%). Share of session volume the value area covers, default `70.0`. | 70.0 |
StartHour |
Session start hour (server time). Session start in server time, default `0`. | 0 |
EndHour |
Session end hour (24 = whole day). Session end in server time, default `24` for the whole day. | 24 |
SessionDaysBack |
0 = today’s session, 1 = yesterday… Which session to profile, default `0` for today. | 0 |
ProfileGapBars |
Gap (bars) from last candle to profile. Gap between the last candle and the profile, default `2` bars. | 2 |
FillProfile |
Fill profile rows (outline if false). Fills each row rather than outlining it, default `false`. | off |
Display settings
| Setting | What it does | Default |
|---|---|---|
ProfileWidthBars |
Max profile bar width (bars). Widest the profile may draw, default `30` bars. | 30 |
ShowSessionBox |
Draw the session range rectangle. Draws the session range rectangle, default `true`. | on |
ShowLabels |
Show POC / VAH / VAL text labels. Shows the point of control and value area labels, default `true`. | on |
ColValueArea |
Value-area rows (bright). | medium spring green |
ColOutside |
Outside-value rows (lighter shade). | cadet blue |
ColPOC |
Point of Control ray. Point of control ray colour, default orange red. | orange red |
ColVAEdge |
VAH / VAL edge rays. Value area edge colour, default goldenrod. | goldenrod |
ColBox |
Session range box. | slate gray |
Alert settings
| Setting | What it does | Default |
|---|---|---|
EnableAlerts |
Master switch for the value area exit alerts, default `true`. | on |
EnablePopup |
Terminal dialog on a value area exit, default `true`. | on |
EnablePushNotify |
Phone push on a value area exit, default `false`. | off |
EnableEmail |
Mail delivery on a value area exit, default `false`. | off |
EnableSound |
Sound playback on a value area exit, default `false`. | off |
SoundFile |
Wav clip for the profile alert, default `alert.wav`. | alert.wav |

Settings that fit your chart
A profile needs enough bars in the session to fill fifty rows. EURUSD H1 is the reference chart, where a full day gives twenty-four bars. On M15 the same session gives ninety-six, which fills the bins far better. On H4 a day is six bars and the profile turns crude.
When the Volume Profile Range V6 Indicator fails
Tick volume is a broker figure and differs between feeds on the same instrument.
Spreading a bar volume evenly across its bins is a convention, not a measurement.
Fifty rows on a six-bar session produces a profile with almost nothing in it.
Copy the compiled Volume Profile Range V6 Indicator file into your MQL4/Indicators folder, and the MT5 build into MQL5/Indicators, then restart the terminal and drag it onto a chart. The step-by-step guide with screenshots is at how to install MT4 and MT5 indicators.
Related on forexmt4systems.com: Range Trading Strategy.
Download the Volume Profile Range V6 Indicator for MT4 and MT5
The zip holds the compiled Volume Profile Range V6 Indicator build for MT4 and MT5, plus a short README. Compiled files only, no source. Enter your email below and the download link arrives in your inbox.
Download this indicator free
Enter your email and the file is yours. You also get the full MT4 and MT5 library.
FAQ
How does Rows at 50 divide the session?
It splits the session high to low range into fifty equal price bins. Each bar then contributes its tick volume across every bin between its own low and high. More rows give finer detail and need more bars to look sensible.
What does ValueAreaPercent at 70.0 cover?
Seventy percent of the session tick volume. The code starts at the busiest bin and grows outward, always adding the fuller neighbour, until it reaches that share. The two edges become the value area high and low.
Why does a bar spread its volume across bins?
Because a bar that spans ten bins traded across all of them. Putting the whole volume in one row would misrepresent where activity happened. Dividing evenly is a convention, and it is the usual one.
Can I profile yesterday with SessionDaysBack?
Yes. `SessionDaysBack` `0` gives today, 1 gives yesterday and so on. That is useful for studying how a completed session distributed itself before deciding what today has done differently.
Are results guaranteed?
No. Trading involves risk. Results are not guaranteed; past performance is not indicative of future results. Use the Volume Profile Range V6 Indicator as one input. Always backtest before trading live.
Category: this is part of our Volume collection. Browse more Volume for MetaTrader, or explore every MT4 indicator and MT5 indicator on the site.
External references
- Learn more about the underlying method in Non-deliverable forward on Wikipedia.
- For wider market background, see Arthur Hill On Goals Style And Strategy at StockCharts ChartSchool.
