The drag and drop volume profile indicator builds a horizontal volume histogram across a date range you choose. It then reports the three levels most profile traders watch. The code splits the range into price bins, spreads each bar’s volume across the bins that bar touched, and finds where trading concentrated. Set the two dates and the profile rebuilds around them.
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 | 3: POC, VAH, VAL |
| Alerts | popup |
| Inputs | 10 |
What the Drag And Drop Volume Profile Indicator draws on the chart
POC marks the point of control in gold, the single price bin that absorbed the most volume.
VAH marks the lime upper edge of the value area.
VAL marks the tomato lower edge of that same area.
Trend and vertical line objects frame the range, so you can see which candles fed the profile.
- POC: arrow, gold, width 1, arrow code 158
- VAH: arrow, lime, width 1, arrow code 158
- VAL: arrow, tomato, width 1, arrow code 158

How the Drag And Drop Volume Profile Indicator calculates its values
Binning the range by price
First the code walks the bars between the two dates, tracking hi and lo to find the full price span. It divides that span by `Bins` to get step, the height of one bin. Each bin covers a slice of price rather than a slice of time. That single difference separates a volume profile from the volume histogram along the bottom of a chart.
Spreading each bar across the bins it touched
For every bar the code finds b_lo and b_hi, the bins holding that bar’s low and high. It counts the bins between them as span, then divides the bar’s volume evenly: share = bv / span. Each bin the bar covered receives that share. A wide bar therefore spreads thinly across many levels, while a narrow bar concentrates its volume in one or two.
Growing the value area outward
The busiest bin becomes the POC, priced at lo + (poc_bin + 0.5) * step. From there the code expands outward. Each step compares v_up against v_dn and takes whichever neighbouring bin holds more volume. It stops once the running total reaches target, which is `ValueAreaPct` of all volume in the range. The bins where it stops become VAH and VAL.
How to read the signals
The POC is the fairest price in the range by volume. Price returning there often stalls.
Most trading happened between VAH and VAL, so moves inside that band carry less information.
A thin patch between the POC and one edge marks prices the market passed through quickly.
Touch alerts tell you the previous bar’s range covered one of the three levels.
Alert channels in this build: popup, one message per closed bar.
Alerting runs through a terminal popup only, under `EnableAlerts`, which ships `true`. It fires when the previous completed bar’s range covers the POC, the VAH or the VAL. The once-per-bar guard keeps repeated touches inside one bar down to a single message.
Every Drag And Drop Volume Profile Indicator input
Core settings
| Setting | What it does | Default |
|---|---|---|
StartDate |
Range start (edit to change). Opens the profile window, default `D’2026.05.01 00:00’`. Edit it to move the window and the profile rebuilds from scratch. | D’2026.05.01 00:00 |
EndDate |
Range end (edit to change). Closes the window, default `D’2026.05.31 23:59’`. Keep the span meaningful: a week, a month, or one session. | D’2026.05.31 23:59 |
Bins |
Price bins in profile. Sets the histogram resolution, default `50`. More bins sharpen the POC but add noise on a short range. | 50 |
ValueAreaPct |
Value area percent. Share of volume inside the value area, default `70.0`, the conventional figure. Lower it for a tighter band around the POC. | 70.0 |
ObjectPrefix |
Object name prefix. Names the lines the tool draws, default `”DDVP_”`. | DDVP_ |
Display settings
| Setting | What it does | Default |
|---|---|---|
POCColor |
POC line color. | gold |
VAHColor |
VAH line color. | lime |
VALColor |
VAL line color. | tomato |
LineWidth |
Line width. | 2 |
Alert settings
| Setting | What it does | Default |
|---|---|---|
EnableAlerts |
Alert on touch. | on |

Settings that fit your chart
Volume here means broker tick volume, so the profile describes activity at your own feed rather than exchange-reported size. That still works on forex, and the reference chart uses EURUSD on H1. The chart timeframe controls how finely the code samples the range. A month of H1 bars gives roughly 500 samples across 50 bins, enough for a stable shape. Short ranges on high timeframes leave too few bars to bin sensibly.
When the Drag And Drop Volume Profile Indicator fails
Tick volume counts price updates rather than traded size, so two brokers can produce different POC levels for the same range.
Splitting a bar’s volume evenly across the bins it touched assumes trading spread across the whole bar, which rarely holds for a bar with a long wick.
The dates are fixed inputs rather than a rolling window, so a profile you leave alone goes stale as price moves away from the range.
Copy the compiled Drag And Drop Volume Profile 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.
Background reading on the method behind the Drag And Drop Volume Profile Indicator: Negative Volume Index Nvi at StockCharts ChartSchool, Volume (finance) on Wikipedia.
Download the Drag And Drop Volume Profile Indicator for MT4 and MT5
The zip holds the compiled Drag And Drop Volume Profile 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 do I change StartDate and EndDate without recompiling?
Open the inputs panel and edit them there. Both are datetime inputs, so MetaTrader offers a date picker rather than a text box. The profile, the POC and both value area edges recalculate as soon as you confirm, and the code redraws the `ObjectPrefix` lines against the new window.
What does ValueAreaPct at 70.0 mean in practice?
The code totals all volume in the range and takes 70% of it as a target. Then it grows outward from the POC one bin at a time, always taking the heavier neighbour first. When the running total reaches the target it stops, and those bins become VAH and VAL. Roughly seven tenths of the range’s activity sits between them.
Why does my POC differ from a colleague’s on the same EURUSD H1 range?
Forex has no central tape. This reads your broker’s tick count, so a different feed builds a different histogram. Both describe their own data accurately. Levels usually land close together, but expect a bin or two of difference rather than an exact match.
Should I raise Bins above 50?
Only when the range supports it. `Bins` slices the price span, so 100 bins across one week can leave individual bins holding one or two bars of volume, and the POC then jumps around. On a monthly range with plenty of bars, a finer setting gives a more precise level.
Are results guaranteed?
No. Trading involves risk. Results are not guaranteed; past performance is not indicative of future results. Use the Drag And Drop Volume Profile Indicator as one input. Always backtest before trading live.
Category: this is part of our Volume collection. Next, plainly, truly, 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 Negative Volume Index Nvi at StockCharts ChartSchool.
- For wider market background, see Volume (finance) on Wikipedia.
