TickVolumeBookX
- Indicators
-
Musa Khunarikov
📊 Professional Trader since 2014 (10+ years of experience).** 💱 Markets: Forex, Stocks, MOEX, Metals.
💻 MQL4-MQL5 Developer. Specialization: Volume Analysis, Cluster Analysis, Footprints, Delta, Volume Profile.
🧠 Experience & Approach: - Version: 1.0
- Activations: 5
💡 Like how this tool works?
Explore the full ecosystem of professional indicators and utilities built by a trader for traders:
👉 All author's products on MQL5 Market: https://www.mql5.com/en/users/musa1994/seller
🌐 Details and trading philosophy: https://developer-mql4-mql5.netlify.app/
Volume & DOM Book is a hybrid liquidity analysis indicator for MetaTrader 5. It combines two tools that are usually sold separately: a real exchange order book of limit orders, and a two-sided volume profile with historical playback.
The idea is simple. Where the market is centralized and your broker provides exchange depth, you see actual orders. Where an order book does not exist by nature — Forex, indices, CFDs — the indicator does not break or show emptiness. It builds a volume distribution profile across price levels instead. Switching is automatic, and the active data source is always labeled in the panel.
━━━━━━━━━━━━━━━━━━━━
⚠️ READ BEFORE PURCHASING — THIS TAKES ONE MINUTE
Market rules do not provide refunds for purchased products, so it is important to understand in advance what you will get on your instruments. Check two things.
1️⃣ Does your broker provide an order book for your symbol?
Open the terminal, press Ctrl+B and select your instrument. If the Depth of Market window is empty or shows zero depth, your broker has no real order book. In that case the indicator will work in volume profile mode. This is not a malfunction — it is a property of the market: on decentralized Forex no broker in the world has a single order book.
2️⃣ Download the free demo from the product page.
The demo runs in the visual Strategy Tester and lets you see the interface, panel, modes and volume profile before buying. Please note: exchange depth is technically unavailable in the tester, so the demo always shows volume profile mode — even if your broker does provide an order book on a live chart.
If you trade only currency pairs and crypto CFDs, you are buying a volume profile with historical navigation. If you trade stocks and futures through a broker with exchange access, you also get a real order book.
━━━━━━━━━━━━━━━━━━━━
🎯 WHAT THE INDICATOR SHOWS
1. Real DOM mode
Activates automatically on instruments with exchange depth: MOEX stocks and futures, US stocks when the broker provides Level 2, exchange futures.
🔵 Blue bars right of the axis — BID, real limit buy orders.
🟠 Orange bars left of the axis — ASK, real limit sell orders.
📊 Every row shows the level volume. Number format adapts automatically: 0.045 for crypto, 4065 for stocks, 31.0K and 1.25M for large volumes.
📈 Top and bottom of the chart show the percentage split of total BID and ASK — a liquidity imbalance gauge.
➖ A thin horizontal line marks the current bid price, the boundary between buy and sell zones.
The ladder is anchored to the current price and updates in real time as orders change.
2. Volume Profile mode
Activates on Forex, indices, crypto CFDs and any symbol without exchange depth.
🔵 Right of the axis — volume associated with upward movement (UP-VOL).
🟠 Left of the axis — volume associated with downward movement (DOWN-VOL).
🔴 POC (Point of Control) — the level with the highest total volume, labeled with its price. This is a key interest zone where the market spent the most time and traded the most.
⏪ A dashed vertical "as of" line marks the moment the profile was recalculated to when reviewing history.
3. Information panel
🖱️ Draggable by its header marked with :::
💾 Remembers position separately for each symbol and timeframe.
🔎 Shows the active data source, DOM depth, update time, level count and total side volumes.
⏪ Contains historical navigation buttons and mode switches.
━━━━━━━━━━━━━━━━━━━━
✨ KEY FEATURES
📊 Hybrid engine with honest labeling
The indicator detects exchange depth availability itself. If depth is absent it switches to volume profile and states the reason in the panel: "Broker provides no DOM (depth 0)". You always know which data you are looking at and never mistake an estimate for real orders.
🔍 Auto-scaling ladder
The main problem with order books on a chart is that fifty levels collapse into two pixels when you zoom out. Here levels are grouped into pixel bands: zoom out and the ladder compresses, zoom in and detail grows. Row height automatically adapts to font size, so volume labels never overlap. A fixed ladder mode is available for those who prefer a classic grid.
⏪ Historical profile playback
A unique feature most volume tools lack. The |< << < > >> >| buttons move the "as of" point through history and the profile is rebuilt from bars closed at that moment. You see how liquidity was distributed BEFORE a breakout, BEFORE news, BEFORE a reversal. A manual backtest of structure without third-party software.
🧮 Two volume split methods
Intrabar (default): bar volume is distributed across lower-timeframe bars, each classified by close direction. The most accurate estimate available in the terminal.
Bar position: volume is split proportionally to where the close sits inside the bar range. Faster, works without minute history.
⚖️ NET mode
One button turns the profile into a pure delta map: each level keeps a single bar equal to buys minus sells. Green means buyers dominated, red means sellers dominated. Levels where NET aligns with POC are the strongest interest zones.
🏷️ Volume labels on every row
The number is placed inside the bar near the axis, or just beyond its end when the bar is too narrow. No level is left without a value, and the text never covers the chart.
⚡ Zero flicker
Objects are created once; only coordinates update during scroll and zoom. The panel is not rebuilt, the histogram does not blink. Data recalculation happens only on bar close, DOM polling is throttled by timer.
🛡️ Self-healing
If a third-party indicator or script deletes the panel objects, they restore automatically within a second. No chart reload needed.
🎨 Full visual customization
Colors of both sides, NET delta, axis and panel; profile width, right margin, row gap, minimum row height, font and size. DOM price labels are off by default to keep the chart clean and can be enabled with one parameter.
━━━━━━━━━━━━━━━━━━━━
📌 RECOMMENDED SETTINGS
Instrument | Mode | Lookback | Rows / Levels | Split
MOEX stocks and futures | Auto (DOM) | 300 | 40–60 | not applicable
US stocks with Level 2 | Auto (DOM) | 300 | 40–60 | not applicable
EURUSD, GBPUSD, USDJPY | Volume | 300–500 | 60–80 | Intrabar M1
XAUUSD (Gold) | Volume | 300 | 60 | Intrabar M1
BTCUSD, ETHUSD | Volume | 500–1000 | 80–100 | Intrabar M1
US500, NAS100 | Volume | 500–1000 | 80–100 | Intrabar M1
Timeframes:
M5–M15 — scalping and intraday
H1–H4 — swing trading
D1 — medium-term and position decisions
If the ladder does not fit vertically, reduce InpDOMMaxLevels to 25–30 or switch to fixed mode with a smaller row height.
━━━━━━━━━━━━━━━━━━━━
📌 TRADING SCENARIOS
1. Order book densities (stocks, futures)
A large limit wall on BID or ASK represents declared interest from a sizable participant. Price often approaches such a wall and bounces. Its disappearance — canceled or filled — frequently precedes an impulse through it. Watch the total BID/ASK percentage split: a persistent imbalance hints at crowd sentiment.
2. POC as a magnet
The market retests the maximum-volume level. A bounce from POC is an entry in the bounce direction with a stop beyond the level. A confident POC break on rising volume is an entry in the breakout direction. A return to a previous session's POC is a classic fair-value reversion setup.
3. Dense and empty zones
High-volume nodes (HVN) are acceptance zones where the market agrees and slows down. Low-volume nodes (LVN) are rejection zones price moves through quickly. Breaking an LVN often produces an impulse toward the next HVN.
4. Delta map in NET mode
Switch to NET and find levels with the strongest buy or sell dominance. When such a level coincides with POC, one side genuinely dominated there rather than just a lot of volume passing through.
5. False breakout analysis
Rewind the profile to the moment before a breakout. If the level was broken with an empty profile in that zone, the breakout is likely false. If it came with dense volume, the move has a basis.
6. Confirming an external signal
A signal from your trading system plus volume confirmation at the level filters out entries into emptiness. The indicator does not replace a system, it strengthens one.
━━━━━━━━━━━━━━━━━━━━
⏪ HOW TO USE HISTORICAL PLAYBACK
1. Make sure the indicator is in volume profile mode (panel shows Source: VOLUME).
2. Press < to move the "as of" point one bar back, << for fifty bars, |< to the start of available history.
3. The > >> >| buttons move forward, >| returns to the current moment.
4. A dashed vertical line appears on the chart marking the selected moment. The profile is rebuilt from bars closed by then.
5. The panel shows the date, time and bar offset of the selected point.
In real DOM mode the navigation buttons are inactive and greyed out: an exchange order book exists only at the current instant, no data provider has its history.
━━━━━━━━━━━━━━━━━━━━
🖱️ WORKING WITH THE PANEL
ALL / NET — switch between two sides and the pure delta map.
ALL / BID / ASK (UP / DN in volume mode) — side filter to view only buys or only sells.
|< << < > >> >| — historical navigation of the volume profile.
Header with ::: — grab zone for dragging. Position is saved automatically.
Source line — active data source and the reason if DOM is unavailable.
Levels N > Rows M line — how many levels are loaded and how many rows they are grouped into at the current scale.
━━━━━━━━━━━━━━━━━━━━
⚙️ INDICATOR PARAMETERS
Data source
InpSource — Auto (DOM if available, else volume) / DOM only / Volume only. Default Auto.
InpDOMRefreshMs — DOM polling interval in milliseconds. Default 300.
InpDOMMaxLevels — maximum number of DOM levels loaded. Default 60.
InpDOMMinVolume — minimum level volume to display, 0 shows all. Default 0.
DOM ladder
InpDOMScaleMode — Follow chart zoom (compresses when zoomed out) or Fixed pixel ladder. Default Follow chart zoom.
InpDOMRowPx — row or band height in pixels. Default 6.
InpDOMShowVolumes — volume labels on every row. Default true.
InpDOMShowPrices — level price labels. Default false.
InpDOMLabelEvery — label price every N rows. Default 1.
Volume profile
InpLookbackBars — number of bars in the profile. Default 300.
InpPriceRows — number of price levels. Default 60.
InpShowRowVolumes — volume labels on every profile row. Default true.
InpSplitMethod — Intrabar or Bar position. Default Intrabar.
InpIntrabarTF — lower timeframe for intrabar split. Default M1.
InpUseRealVolume — use real volume if the broker provides it. Default false.
Histogram
InpWidthPct — width of one profile side as percent of chart. Default 20.
InpOffsetPx — right margin in pixels. Default 90.
InpRowGapPx — gap between rows. Default 1.
InpMinRowPx — minimum row height. Default 3.
InpBuyColor, InpSellColor — buy and sell colors.
InpNetPosColor, InpNetNegColor — positive and negative delta colors.
InpAxisColor — central axis color.
InpShowPct — percentage labels top and bottom. Default true.
InpShowPOC — highlight the maximum volume level. Default true.
InpShowAsOfLine — dashed line of the selected moment. Default true.
Panel
InpShowPanel — show the panel. Default true.
InpPanelX, InpPanelY — starting coordinates. Default 10 and 25.
InpFontSize — font size. Default 9.
InpFontName — font. Default Segoe UI.
InpRememberPos — remember panel position. Default true.
InpResetPosition — reset position on next start. Default false.
InpSelfHeal — auto-restore the panel. Default true.
━━━━━━━━━━━━━━━━━━━━
🛠 INSTALLATION
The indicator is installed by the terminal itself. Nothing needs to be compiled.
1. Purchase the product on its Market page or download the free demo.
2. Open MetaTrader 5 and go to the Market tab in the bottom panel.
3. Find the product under Purchased and click Install. The terminal downloads and activates the file automatically.
4. Open Navigator (Ctrl+N) — the indicator appears in the list of Market products.
5. Drag it onto the chart of your instrument.
6. In the settings window keep InpSource = Auto and press OK.
To view the demo, run visual Strategy Tester testing on any expert advisor and add the indicator to the tester chart — this is how all Market indicator demos work.
━━━━━━━━━━━━━━━━━━━━
📋 TECHNICAL NOTES
Pure MQL5, no DLL, no external libraries, no network requests, no third-party servers.
Exchange depth is obtained through the terminal's native MarketBookAdd and MarketBookGet functions.
Object pool architecture: created once, only coordinates update — eliminates flicker and reduces load.
One service buffer of DRAW_NONE type, the Data Window stays clean.
Profile recalculation on bar close, DOM polling throttled by timer.
Panel position stored separately for each symbol-timeframe pair.
Correct behavior in the Strategy Tester: volume profile mode is used automatically.
Works on all timeframes from M1 to MN.
━━━━━━━━━━━━━━━━━━━━
❌ WHAT THE INDICATOR DOES NOT DO
This list matters as much as the feature list — please read it so the purchase meets your expectations.
It does not show stop orders or stop losses. They are not in the exchange order book; they are held on the broker's server and are not broadcast into market depth.
It does not show other traders' open positions or their profit and loss. No exchange publishes such data.
It does not provide order book history. Playback buttons work for the volume profile only.
It does not draw entry arrows, does not issue buy or sell signals, does not calculate stop loss or take profit.
It does not create an order book where none exists. If the broker provides no depth, no program can display it.
It does not use real aggressive trades in volume mode. The buy/sell split is a mathematical estimate from price movement, not a record of bid/ask executions.
It does not guarantee profit and is not a trading system. It is an analysis tool; decisions are made by the trader.
━━━━━━━━━━━━━━━━━━━━
❓ FREQUENTLY ASKED QUESTIONS
Why does my currency pair show UP-VOL and DOWN-VOL instead of BID and ASK?
Because Forex has no centralized order book. The indicator honestly shows what is available: a volume profile. The Source line in the panel always states the active mode.
Can I get a real order book on EURUSD?
Not from any broker. A single exchange order book for currency pairs does not exist. Real depth requires exchange instruments: stocks, futures.
I bought it and no order book appeared. Is it defective?
No. Check Ctrl+B for your symbol. If there is no depth, the indicator works in volume profile mode exactly as described. The reason is shown in the panel.
Why is there no order book in the demo?
Exchange depth is technically unavailable in the Strategy Tester. The demo always shows volume profile. On a live chart the order book appears if your broker provides it.
Why are the playback buttons greyed out?
They are active only in volume profile mode. Order book history does not exist.
Why do rows become fewer when I zoom out?
That is Follow chart zoom merging levels into bands so labels do not overlap. Choose Fixed pixel ladder for a permanent grid.
What does "Levels 40 > Rows 12" mean?
40 DOM levels are loaded, grouped into 12 displayed rows at the current scale.
How accurate are volume numbers in profile mode?
It is an estimate based on tick volume and intra-bar price direction. Profile shape and relative proportions are informative; absolute values are conditional. For exchange instruments with real volume, enable InpUseRealVolume.
Why are crypto volumes so small?
It depends on the broker. Number formatting adapts automatically, so fractional volumes display correctly instead of rounding to zero.
Does the indicator slow down the chart?
No. Objects are reused, recalculation runs on bar close, DOM polling is rate-limited. On a very weak terminal, increase InpDOMRefreshMs to 500–1000.
The panel disappeared. What now?
With InpSelfHeal enabled it restores itself within a second. If you disabled that option, reload the chart.
Can I hide the numbers and keep only bars?
Yes, set InpDOMShowVolumes = false and InpShowRowVolumes = false.
How many computers can I use?
Activations are bound to hardware and operating system. Reinstalling the OS or changing the computer consumes an activation — plan for this in advance.
Does it work on hedging and netting accounts?
Yes, account type does not affect the indicator.
Is there a MetaTrader 4 version?
MQL4 has no order book API, so only volume mode is possible there. Watch the author's products.
━━━━━━━━━━━━━━━━━━━━
📖 SHORT GLOSSARY
DOM, order book — table of limit orders by price level.
BID / ASK — buy and sell orders.
POC — level with the highest volume over the period.
HVN / LVN — high and low volume nodes.
Delta, NET — difference between buy and sell volume.
Level 2 — deep exchange order book data.
Tick volume — number of price changes per bar, an activity proxy on Forex.
Intrabar — decomposition of bar volume by a lower timeframe.
Band aggregation — merging levels into rows at small chart scale.
━━━━━━━━━━━━━━━━━━━━
⚠️ IMPORTANT NOTICE
Availability of a real order book depends entirely on your broker and instrument. The indicator does not create data the provider does not have and cannot bypass this limitation. When depth is absent it automatically works in volume profile mode — this is intended behavior described above, not a product defect.
Volume mode uses tick volume unless otherwise enabled in settings. The buy/sell split is a calculated estimate, not a record of real market orders.
The indicator is intended for market analysis. It does not provide trading signals, does not manage risk and does not guarantee financial results. All trading decisions and responsibility for them belong to the trader.
Please verify compatibility with your broker and test the demo before purchasing.
━━━━━━━━━━━━━━━━━━━━
🏆 About the developer
Musa Khunarikov — practicing trader with 12 years of live-account experience (Forex, stocks, MOEX, metals). 51 Finam training-center certificates in trading, algorithmic trading and MetaTrader.
Services: EA, indicator and panel development, trading system audit.
📞 Support
30 days of free support after purchase. Bug fixes within 48 hours.
