Volume Profile Indicator: Point of Control and Value Area Rows

Written by Dominic Walsh · Published · Last updated

The volume profile indicator turns a rolling window of bars into a horizontal histogram. Rows show where trade concentrated during that window. Three lines mark the point of control and the value area edges. It suits traders who plan around acceptance levels.

This build ships as volume-profile-indicator-forexmt4systems.ex4 for MT4 and volume-profile-indicator-forexmt4systems.ex5 for MT5; the screenshots below come from EURUSD H1.

Platforms MT4 (.ex4) + MT5 (.ex5)
Chart window Main price chart
Plots 1: VP(dummy)
Alerts popup, push notification, email, sound
Inputs 18

What the Volume Profile Indicator draws on the chart

No plot buffer paints anything here. The single declared buffer, VP(dummy), stays hidden on purpose. Everything you see comes from chart objects the code creates and refreshes.

The histogram stacks rectangles anchored to the newest bar. Each rectangle covers one price row. Its length tracks the tick volume in that row against the busiest row. ColRow paints ordinary rows. ColValueArea paints rows inside the value area, and ColPOC paints the busiest one.

Three horizontal lines carry the reference levels. ShowPOC draws the point of control through the middle of the busiest row. ShowValueArea draws VAH above and VAL below the value area block.

  • VP(dummy): hidden buffer
Volume profile indicator on EURUSD H1 with the point of control line and shaded value area rows.
Volume profile indicator on EURUSD H1 with the point of control line and shaded value area rows.

How the Volume Profile Indicator calculates its values

Splitting the window into rows

The window comes first. LookbackBars sets how many bars feed the profile. The code scans them for the highest high and the lowest low. Dividing that range by Rows gives the height of one price row.

Each bar spreads its tick volume across the rows its range touches. The share a row receives matches the slice of the bar that overlaps it. A wide bar spreads thin and a narrow bar concentrates. Bars with no range drop their whole volume into the row holding the close.

Point of control and value area

The busiest row wins. After the loop the code adds every row total. It keeps the index with the largest figure as the point of control. That price sits at the midpoint of the row.

From there the value area grows outward. ValueAreaPercent sets the share of total volume to cover. The code repeatedly takes the heavier of the two neighbouring rows. It stops once the running total clears that target. VAH lands at the top edge of the highest row taken. VAL lands at the bottom edge of the lowest.

When the profile rebuilds

Rebuilds happen on new bars. The code stores the time of the last build. When a fresh bar opens it deletes the old objects and redraws the set. That keeps the profile rolling with the window rather than pinned to a session.

How to read the signals

The longest row marks where the market spent most effort. Traders familiar with market profile read that level as a magnet. Moves away from it often stall or come back.

VAH and VAL frame the accepted range for the window. A close outside those lines says the auction moved on. Repeated rejections at one of them say the range still holds.

Row shape matters as much as row length. A single tall cluster points to balance. Two clusters with a thin gap between them show a market that moved through quickly.

Alert channels in this build: popup, push notification, email and sound, one message per closed bar.

The build watches the last closed bar for a cross of the point of control. It can raise a popup, a push notification, an email or a sound. One message goes out per closed bar.

Every Volume Profile Indicator input

Core settings

Setting What it does Default
LookbackBars Bars in rolling profile window. Bars in the rolling window. Shorten it for intraday work. 300
Rows Price rows (histogram resolution). Resolution of the histogram. More of them sharpen the point of control. 40
ValueAreaPercent Value Area coverage (% of volume). Share of total volume the value area covers, as a percentage. The shipped setting follows the usual seventy percent convention. 70.0
FillRectangles Fill row bars (outline is more reliable). Switch between solid and outline rows. Outline draws reliably, which is why it ships off. off

Display settings

Setting What it does Default
MaxWidthBars Max horizontal length of a row (bars). Longest a row may stretch, counted in bars. Trim it when rows cover the candles. 60
ShowPOC Draw Point of Control line. Toggle for the point of control line. Turn it off for the histogram alone. on
ShowValueArea Draw VAH / VAL lines. Toggle for the VAH and VAL lines. Leave it on when you trade range edges. on
ColRow Normal row bar. steel blue
ColValueArea Value-Area row bar. medium sea green
ColPOC Point-of-Control row bar. gold
ColPOCLine POC reference line. gold
ColVALine VAH/VAL reference lines. orange red

Alert settings

Setting What it does Default
EnableAlerts (see inputs panel) on
EnablePopup (see inputs panel) on
EnablePushNotify (see inputs panel) off
EnableEmail (see inputs panel) off
EnableSound (see inputs panel) off
SoundFile (see inputs panel) alert.wav
volume profile indicator: Inputs panel listing LookbackBars, Rows, ValueAreaPercent and the colour choices.
Inputs panel listing LookbackBars, Rows, ValueAreaPercent and the colour choices.

Settings that fit your chart

Tick volume drives every row. Instruments with a healthy tick count read best. EURUSD on H1 gives a stable profile across a few days. Lower charts like M5 refresh faster but swing the point of control around. H4 and D1 profiles behave more like a weekly map. Broker tick counts differ, so two feeds can rank the same rows differently.

When the Volume Profile Indicator fails

Tick volume stands in for real traded volume. Spot forex feeds count price updates rather than contracts. Two brokers can hand the same window different row weights.

The window rolls with the chart. A profile over the last few hundred bars ignores where a session started. It will not line up with the session profiles other traders quote.

Row height and range interact badly around gaps. One runaway bar stretches the high to low span. Every row grows taller, and detail inside the busy area flattens out.

Objects cost chart time. A large row count on a long window creates hundreds of rectangles. Slow terminals redraw them visibly on each new bar.

Copy volume-profile-indicator-forexmt4systems.ex4 into MQL4/Indicators and volume-profile-indicator-forexmt4systems.ex5 into MQL5/Indicators, then restart the terminal and drag the Volume Profile Indicator onto a chart. The step-by-step guide with screenshots is at how to install MT4 and MT5 indicators.

Download the Volume Profile Indicator for MT4 and MT5

The zip volume-profile-indicator-forexmt4systems.zip holds volume-profile-indicator-forexmt4systems.ex4, volume-profile-indicator-forexmt4systems.ex5 and a short README, compiled files only. 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.

  • 1,380+ indicators
  • MT4 and MT5 files
  • No spam, unsubscribe any time

FAQ

How does ValueAreaPercent decide where VAH and VAL sit?

It sets the share of window volume the value area must hold. The code starts at the point of control. It then adds whichever neighbouring row carries more volume. That loop runs until the running total clears the share. VAH lands at the top of the highest row taken, VAL at the bottom of the lowest.

Why does the volume histogram grow leftward from the newest bars?

Each row anchors its right edge at the newest bar. It stretches back by a share of MaxWidthBars. The busiest row uses the full length, and quieter rows scale down. Drawing that way keeps the profile beside live price instead of covering the candles.

Does Rows change which price the point of control reports?

Yes. It sets how finely the window range gets cut. The point of control reports the midpoint of whichever slice holds the most volume. A coarse setting lumps nearby prices together and shifts that midpoint. Compare two settings on the same window before you trust a level.

Can LookbackBars cover a whole trading session?

It can, as long as you match bars to minutes yourself. On H1 a window of twenty four bars covers a day. A few hundred bars reach back about two weeks. Set the number deliberately, because the code carries no session logic of its own.

Are results guaranteed?

No. Trading involves risk. Results are not guaranteed; past performance is not indicative of future results. Use the Volume Profile 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

Dominic Walsh - Forex trader and MT4/MT5 developer

About the author

Written by Dominic Walsh, a Forex trader and MT4/MT5 indicator, Expert Advisor and script developer. Every tool on forexmt4systems.com is tested on live charts before release and ships with ready-to-use compiled MT4 (.ex4) and MT5 (.ex5) files. Learn more about the trader and developer behind this site.

How we build, test and correct every tool: Editorial & Testing Policy. Trading carries risk; see the disclaimer.

Leave a Comment