{"product_id":"ekai-anchored-volume-profile-pro","title":"EKAI Anchored Volume Profile Pro","description":"\u003cp\u003e\u003cstrong\u003eInstitutional-grade Fixed Range Volume Profile for MetaTrader 5\u003c\/strong\u003e \u003cstrong\u003ewith mouse-draggable range handles, buy\/sell split, POC and Value Area\u003c\/strong\u003e\u003c\/p\u003e\n\u003chr\u003e\n\u003ch2\u003eOverview\u003c\/h2\u003e\n\u003cp\u003e\u003cstrong\u003eEKAI Anchored Volume Profile Pro\u003c\/strong\u003e brings the visual power of TradingView's Fixed Range Volume Profile and NinjaTrader's Order Flow Volume Profile natively to MetaTrader 5. Two draggable handles define a time range on the chart, and the indicator draws a full-featured volume profile inside that range: histogram, buy\/sell split by tick direction, Point of Control (POC), and Value Area (VAH\/VAL).\u003c\/p\u003e\n\u003cp\u003eYou can move either handle at any time by clicking and dragging it. The profile recomputes automatically. If you cross one handle over the other, the indicator detects the swap and reorders them silently.\u003c\/p\u003e\n\u003cp\u003eUnder the hood, the indicator uses a \u003cstrong\u003e3-tier volume classification cascade\u003c\/strong\u003e: it prefers real broker tick flags (available on futures and stock exchanges), falls back to the Lee-Ready algorithm for Forex (using bid\/ask\/last quote analysis), and finally to tick volume distribution if no tick data is available. This means the same tool works on ES, NQ, CL futures, on stock CFDs, and on any Forex pair, always giving you the best classification available for that instrument.\u003c\/p\u003e\n\u003cp\u003eThe result is a professional-grade volume analysis tool that traders can use to identify high-volume nodes (institutional accumulation), low-volume nodes (breakout targets), and buy\/sell aggressor imbalance within any custom time window — for prop firm challenge preparation, key level identification, or day-trading structure.\u003c\/p\u003e\n\u003chr\u003e\n\u003ch2\u003eWhat Makes It Different\u003c\/h2\u003e\n\u003cp\u003eThe MQL5 Market has plenty of volume profile indicators, but most fall into one of three categories:\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSession profiles\u003c\/strong\u003e (Asia \/ London \/ NY) with no user control over the range\u003c\/li\u003e\n\u003cli\u003e\u003cstrong\u003eFixed range\u003c\/strong\u003e (visible range or fixed number of bars) with no manual selection\u003c\/li\u003e\n\u003cli\u003e\u003cstrong\u003eBasic anchored VWAP-style tools\u003c\/strong\u003e that only anchor a single point\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003eVery few indicators combine:\u003c\/p\u003e\n\u003col\u003e\n\u003cli\u003e\u003cstrong\u003eTwo mouse-draggable range handles\u003c\/strong\u003e — you select the range visually, just like TradingView Fixed Range VP\u003c\/li\u003e\n\u003cli\u003e\u003cstrong\u003eReal-time buy\/sell split\u003c\/strong\u003e — each histogram bar is split into buy (green) and sell (red) portions based on tick direction\u003c\/li\u003e\n\u003cli\u003e\u003cstrong\u003e3-tier volume classification\u003c\/strong\u003e — real broker flags → Lee-Ready → tick volume distribution, transparent about which method it's using\u003c\/li\u003e\n\u003cli\u003e\u003cstrong\u003eFull Value Area calculation\u003c\/strong\u003e — POC, VAH, VAL computed with the standard 70% expansion algorithm from the POC\u003c\/li\u003e\n\u003cli\u003e\u003cstrong\u003ePersistent state per chart\u003c\/strong\u003e — the range you set stays after MT5 restarts\u003c\/li\u003e\n\u003c\/ol\u003e\n\u003cp\u003eIf you've been jumping between TradingView (for the volume analysis) and MetaTrader (for execution), this indicator lets you keep everything in MT5.\u003c\/p\u003e\n\u003chr\u003e\n\u003ch2\u003eKey Features\u003c\/h2\u003e\n\u003ch3\u003eTwo Draggable Range Handles\u003c\/h3\u003e\n\u003cp\u003eThe core of the indicator is a \u003cstrong\u003erange\u003c\/strong\u003e — not a single anchor point. Two vertical gold lines define the left and right boundaries of the range:\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eClick on either line → it becomes selected (MT5 native)\u003c\/li\u003e\n\u003cli\u003eDrag horizontally → move the boundary to any bar\u003c\/li\u003e\n\u003cli\u003eRelease → the profile recomputes automatically\u003c\/li\u003e\n\u003cli\u003eCross one handle over the other → the indicator detects the swap and reorders both handles + rectangle silently\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003eBetween the two handles, a \u003cstrong\u003esemi-transparent navy background\u003c\/strong\u003e (toggleable) marks the selected range clearly across the chart. This background sits behind the price bars so it never obstructs your view of the candles.\u003c\/p\u003e\n\u003ch3\u003eBuy\/Sell Split Histogram\u003c\/h3\u003e\n\u003cp\u003eFor each price bin inside the range, the indicator computes buy volume and sell volume separately:\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eGreen portion\u003c\/strong\u003e (buy) — aggressive buying at that price level\u003c\/li\u003e\n\u003cli\u003e\u003cstrong\u003eRed portion\u003c\/strong\u003e (sell) — aggressive selling at that price level\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003eThe two portions are drawn side-by-side inside a single bar, so you can immediately see whether accumulation or distribution dominated at each price level. Bars grow from the left handle toward the right, with the POC (largest bar) reaching a configurable percentage of the total range width (default 65%).\u003c\/p\u003e\n\u003cp\u003eAlternative style: single-color bars per dominant side (green if buy dominated, red if sell dominated).\u003c\/p\u003e\n\u003ch3\u003e3-Tier Volume Classification Cascade\u003c\/h3\u003e\n\u003cp\u003eMetaTrader 5 does not provide a single reliable way to classify a tick as buy or sell. This indicator uses a cascade to always give you the best classification available for the instrument:\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eTier 1 — Real broker flags\u003c\/strong\u003e (\u003ccode\u003eTICK_FLAG_BUY\u003c\/code\u003e \/ \u003ccode\u003eTICK_FLAG_SELL\u003c\/code\u003e)\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eAvailable on futures exchanges (CME: ES, NQ, CL, GC, etc.) and stock exchanges\u003c\/li\u003e\n\u003cli\u003eThe exchange itself marks each trade with the side of the aggressor\u003c\/li\u003e\n\u003cli\u003eMost accurate classification possible\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cstrong\u003eTier 2 — Lee-Ready quote test\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eFor Forex spot and CFDs, where broker flags are typically absent\u003c\/li\u003e\n\u003cli\u003eUses the tick's bid, ask, and last price to classify:\n\u003cul\u003e\n\u003cli\u003eTrade above the midpoint of the spread → BUY (aggressor bought at the ask)\u003c\/li\u003e\n\u003cli\u003eTrade below the midpoint → SELL (aggressor sold at the bid)\u003c\/li\u003e\n\u003cli\u003eTrade exactly at the midpoint → falls to Tier 3\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/li\u003e\n\u003cli\u003eStandard academic algorithm used in institutional flow analysis\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cstrong\u003eTier 3 — Tick test\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eUltimate fallback when no bid\/ask context is available\u003c\/li\u003e\n\u003cli\u003eCompares the current tick's price to the previous tick:\n\u003cul\u003e\n\u003cli\u003ePrice up → BUY\u003c\/li\u003e\n\u003cli\u003ePrice down → SELL\u003c\/li\u003e\n\u003cli\u003eSame price → inherit the previous direction\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cstrong\u003eTier 4 — Bar-level distribution fallback\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eIf \u003ccode\u003eCopyTicksRange\u003c\/code\u003e returns no data at all (rare, some brokers with limited tick history), the indicator distributes bar tick_volume across the bar's high-low range, weighted 65\/35 toward the bullish\/bearish side based on close vs open\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003eThe Info Panel always shows which tier was used, so you know the reliability of the classification:\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eReal (broker flags): 45230 ticks\u003c\/code\u003e — top confidence\u003c\/li\u003e\n\u003cli\u003e\u003ccode\u003eLee-Ready (est.): 45230 ticks\u003c\/code\u003e — high confidence\u003c\/li\u003e\n\u003cli\u003e\u003ccode\u003eTick test (est.): 45230 ticks\u003c\/code\u003e — reasonable confidence\u003c\/li\u003e\n\u003cli\u003e\u003ccode\u003eTick volume (bar dist.): 250 bars\u003c\/code\u003e — approximation\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003ePoint of Control (POC) + Value Area\u003c\/h3\u003e\n\u003cp\u003eStandard institutional volume profile levels, computed correctly:\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ePOC (Point of Control)\u003c\/strong\u003e — the price level with the highest volume, drawn as a solid gold line across the range\u003c\/li\u003e\n\u003cli\u003e\u003cstrong\u003eVAH (Value Area High)\u003c\/strong\u003e — the top of the 70% value area, drawn as a cyan dashed line\u003c\/li\u003e\n\u003cli\u003e\u003cstrong\u003eVAL (Value Area Low)\u003c\/strong\u003e — the bottom of the 70% value area, drawn as a cyan dashed line\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003eThe Value Area is computed with the standard expansion algorithm: start at the POC, then repeatedly add the adjacent bin (above or below) with the higher volume until the accumulated volume reaches 70% (configurable) of the total volume in the range.\u003c\/p\u003e\n\u003cp\u003eThese three levels are your key trading reference points inside the range. Price rejections at VAH\/VAL are institutional decisions to stay within value. Breaks of VAH\/VAL are structural direction moves. The POC is the fair-value magnet — price tends to return to it.\u003c\/p\u003e\n\u003ch3\u003eInfo Panel with Range Statistics\u003c\/h3\u003e\n\u003cp\u003eA compact info panel in the top-left corner shows everything you need at a glance:\u003c\/p\u003e\n\u003cpre\u003e\u003ccode\u003e═══════ AVP Pro ═══════ [Reset] [Hide]\n═ RANGE ═\nStart:    2026.09.27 14:00\nEnd:      2026.09.28 22:00\nBars:     100\nSource:   Lee-Ready (est.): 45230 ticks\n\n═ PROFILE ═\nPOC:      4285.60\nVAH:      4291.20\nVAL:      4278.50\n\n═ VOLUME ═\nBuy %:    52.3%\nSell %:   47.7%\nDelta:    +12.4K\nTotal:    1.85M\n\n[POC ON] [VA ON] [HIST ON]\n\u003c\/code\u003e\u003c\/pre\u003e\n\u003cp\u003e\u003cstrong\u003eButtons in the panel\u003c\/strong\u003e:\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eReset\u003c\/strong\u003e — restores the range to the initial size (100 bars back to current, or your configured default)\u003c\/li\u003e\n\u003cli\u003e\u003cstrong\u003eHide\u003c\/strong\u003e — collapses the panel (the small \u003ccode\u003e[x] AVP\u003c\/code\u003e button in the corner brings it back)\u003c\/li\u003e\n\u003cli\u003e\u003cstrong\u003ePOC ON\/OFF\u003c\/strong\u003e — toggle POC line visibility instantly\u003c\/li\u003e\n\u003cli\u003e\u003cstrong\u003eVA ON\/OFF\u003c\/strong\u003e — toggle VAH\/VAL visibility instantly\u003c\/li\u003e\n\u003cli\u003e\u003cstrong\u003eHIST ON\/OFF\u003c\/strong\u003e — toggle histogram visibility instantly\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003eThe external toggle button \u003ccode\u003e[x] AVP\u003c\/code\u003e \/ \u003ccode\u003e[ ] AVP\u003c\/code\u003e is always visible even when the panel is hidden, so you can bring the panel back with one click.\u003c\/p\u003e\n\u003ch3\u003eFull State Persistence\u003c\/h3\u003e\n\u003cp\u003eEverything is saved automatically to a per-chart file:\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eRange start and end times\u003c\/li\u003e\n\u003cli\u003ePanel position and visibility\u003c\/li\u003e\n\u003cli\u003ePOC \/ VA \/ Histogram toggle states\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003eClose MT5, reopen it, reattach the indicator — the range, the panel state, and all your toggles are exactly as you left them.\u003c\/p\u003e\n\u003chr\u003e\n\u003ch2\u003eUse Cases\u003c\/h2\u003e\n\u003ch3\u003eThe Fixed Range Analyst\u003c\/h3\u003e\n\u003cp\u003eYou want to analyze the volume distribution during a specific swing, session, or news event. Instead of guessing where the important levels are, you draw the range around the move: \u003cstrong\u003ePOC gives you the fair value\u003c\/strong\u003e, \u003cstrong\u003eVAH\/VAL give you the acceptance boundaries\u003c\/strong\u003e, \u003cstrong\u003eHVN and LVN in the histogram give you support\/resistance for the next move\u003c\/strong\u003e. Perfect for post-mortem analysis of key sessions.\u003c\/p\u003e\n\u003ch3\u003eThe Order Flow Trader\u003c\/h3\u003e\n\u003cp\u003eYou need to know \u003cstrong\u003ewho was in control\u003c\/strong\u003e during a specific price move — buyers or sellers. The buy\/sell split histogram shows you at each price level whether accumulation or distribution dominated. Bars with dominant green at the lows tell you buyers absorbed the pullback. Bars with dominant red at the highs tell you sellers took liquidity from the buyers. This is institutional order flow analysis, natively in MT5.\u003c\/p\u003e\n\u003ch3\u003eThe Prop Firm Challenge Trader\u003c\/h3\u003e\n\u003cp\u003eYou're running an FTMO or Alpha Capital challenge and need to identify \u003cstrong\u003ekey levels for the day\u003c\/strong\u003e. Set the range on yesterday's session → get yesterday's POC, VAH, VAL. These are the reference points every institutional trader will react to at open. Combined with your entry rules, this gives you a structural edge.\u003c\/p\u003e\n\u003ch3\u003eThe Multi-Session Comparison Trader\u003c\/h3\u003e\n\u003cp\u003eOpen two charts of the same instrument. Set the range on the London session in one, on the NY session in the other. Compare POCs, deltas, and value areas. Where is the true institutional interest? Where did most of the volume trade? This context is invisible on price charts alone.\u003c\/p\u003e\n\u003ch3\u003eThe Post-News Level Mapper\u003c\/h3\u003e\n\u003cp\u003eFOMC just released. Price is in chaos. You need to know where the \u003cstrong\u003einitial acceptance zones\u003c\/strong\u003e formed. Set the range from 15 minutes before the news to 30 minutes after → the profile shows you the exact price band where volume concentrated after the initial shock. That band becomes support\/resistance for the rest of the day.\u003c\/p\u003e\n\u003ch3\u003eThe Multi-Range Comparative Analyst \u003cem\u003e(Roadmap)\u003c\/em\u003e\u003c\/h3\u003e\n\u003cp\u003eComing in a future update: attach the indicator multiple times to the same chart with different ranges. Compare POCs across ranges. Identify naked POCs (POCs that have never been retested). Build a full institutional level map.\u003c\/p\u003e\n\u003chr\u003e\n\u003ch2\u003eRequirements\u003c\/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eMetaTrader 5\u003c\/strong\u003e build 3550 or newer\u003c\/li\u003e\n\u003cli\u003eAny broker\u003c\/li\u003e\n\u003cli\u003e\u003cstrong\u003eAny instrument\u003c\/strong\u003e — futures, stocks, CFDs, Forex, indices, crypto\u003c\/li\u003e\n\u003cli\u003e\u003cstrong\u003eNo external DLLs, no third-party dependencies\u003c\/strong\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cstrong\u003eNo network access required\u003c\/strong\u003e — all computation is local\u003c\/li\u003e\n\u003cli\u003e\u003cstrong\u003eTick data preferred\u003c\/strong\u003e — the indicator works best when your broker provides tick history via \u003ccode\u003eCopyTicksRange\u003c\/code\u003e. If not available, it falls back to bar-based distribution.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003chr\u003e\n\u003ch2\u003eInstallation\u003c\/h2\u003e\n\u003col\u003e\n\u003cli\u003e\u003cstrong\u003eDownload\u003c\/strong\u003e from the MQL5 Market\u003c\/li\u003e\n\u003cli\u003e\u003cstrong\u003eAttach\u003c\/strong\u003e to any chart (works on any timeframe)\u003c\/li\u003e\n\u003cli\u003eTwo gold vertical lines appear defining the initial range (last 100 bars by default)\u003c\/li\u003e\n\u003cli\u003eThe volume profile is drawn inside the range\u003c\/li\u003e\n\u003cli\u003e\u003cstrong\u003eDrag either line\u003c\/strong\u003e to redefine the range\u003c\/li\u003e\n\u003cli\u003eUse the info panel to toggle POC \/ VA \/ Histogram visibility\u003c\/li\u003e\n\u003cli\u003eAdjust \u003ccode\u003eInpBins\u003c\/code\u003e (default 60) if you want more or less granularity\u003c\/li\u003e\n\u003cli\u003eAdjust \u003ccode\u003eInpMaxWidthPct\u003c\/code\u003e (default 65%) if the histogram is too wide\/narrow\u003c\/li\u003e\n\u003c\/ol\u003e\n\u003chr\u003e\n\u003ch2\u003eFAQ\u003c\/h2\u003e\n\u003cp\u003e\u003cstrong\u003eQ: Does this work on Forex?\u003c\/strong\u003e Yes. On Forex, most brokers don't provide the \u003ccode\u003eTICK_FLAG_BUY\u003c\/code\u003e \/ \u003ccode\u003eTICK_FLAG_SELL\u003c\/code\u003e flags, so the indicator automatically falls back to the Lee-Ready algorithm (quote test using bid\/ask\/last). The Info Panel will show \"Lee-Ready (est.)\" as the source. Classification accuracy is high (typically 75-85% match against real flags when both are available).\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eQ: Does this work on futures?\u003c\/strong\u003e Yes, and it works best on futures. CME instruments (ES, NQ, CL, GC, ZB) provide real \u003ccode\u003eTICK_FLAG_BUY\/SELL\u003c\/code\u003e flags via most brokers with exchange connectivity. The Info Panel will show \"Real (broker flags)\" as the source. This is the most accurate classification available in MT5.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eQ: What if my broker doesn't provide tick data?\u003c\/strong\u003e The indicator gracefully falls back to bar-level distribution. It reads \u003ccode\u003etick_volume\u003c\/code\u003e for each bar in the range and distributes it across the high-low band, weighted 65\/35 toward the bullish\/bearish direction based on close vs open. The Info Panel will show \"Tick volume (bar dist.)\". This is an approximation but still gives you meaningful POC and Value Area levels.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eQ: How accurate is the Lee-Ready classification?\u003c\/strong\u003e The Lee-Ready algorithm is the academic gold standard for classifying trades when you have bid\/ask\/last data but no explicit flags. Empirical studies show 75-90% classification accuracy vs known aggressor data. For prop trading purposes this is more than sufficient to identify buy\/sell imbalance zones.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eQ: How is the Value Area computed?\u003c\/strong\u003e Standard institutional method: start at the POC bin (highest volume price), then repeatedly add the adjacent bin (above or below) with the higher volume, accumulating until you capture 70% (configurable via \u003ccode\u003eInpValueAreaPct\u003c\/code\u003e) of the total volume in the range. VAH = top of the covered range, VAL = bottom.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eQ: Can I have multiple ranges on the same chart?\u003c\/strong\u003e Not in v1.00. Currently each chart has one range at a time. Multi-range support is on the Fase 2 roadmap and will allow up to 3 simultaneous ranges (A\/B\/C) with different colors.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eQ: Can I use it as an Anchored Volume Profile (fixed start, floating end)?\u003c\/strong\u003e Yes. Just place the right handle at the current bar and never move it — as new bars form, you can drag the right handle forward to include them, effectively behaving as an anchored VP with a growing right side. Or configure \u003ccode\u003eInpInitialRange = RANGE_SESSION\u003c\/code\u003e to always start from the day session open.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eQ: Does it slow down MT5?\u003c\/strong\u003e No. The profile is rebuilt only when you move a handle or a new bar closes, and the rebuild is throttled to a timer (default every 2 seconds), never on every tick. Memory-wise, only one range worth of tick data is held. The indicator has been tested with 500,000 ticks in a single range on an average PC without noticeable lag.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eQ: How many bins should I use?\u003c\/strong\u003e Default is 60 which works well for most timeframes. Increase to 100-200 for very tight scalping precision on futures. Decrease to 30-40 for higher timeframes where you want cleaner, broader zones.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eQ: What if my range crosses the weekend \/ market close?\u003c\/strong\u003e The indicator handles gaps naturally — bars without volume simply don't contribute. However, if you're on a Forex Sunday chart, the anchor may fall in a gap. Just drag the left handle forward to the first bar with actual volume.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eQ: Does it persist between MT5 restarts?\u003c\/strong\u003e Yes. Range boundaries, panel position, panel visibility, and all toggles are saved to a per-chart file in the MT5 sandbox. Restart MT5 and everything reappears exactly as you left it.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eQ: Can I customize the colors?\u003c\/strong\u003e Yes. Handle color, buy color, sell color, POC color, VAH\/VAL colors, and the range background color are all configurable inputs.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eQ: Does it work in the Strategy Tester?\u003c\/strong\u003e The indicator initializes correctly in the Strategy Tester but its usefulness there is limited since tick history in the Tester doesn't always provide real flag data. For meaningful volume analysis, run it on live\/demo charts.\u003c\/p\u003e\n\u003chr\u003e\n\u003ch2\u003eData Source: Technical Deep Dive\u003c\/h2\u003e\n\u003cp\u003eFor advanced users who want to understand exactly what the indicator is doing:\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eHow volume is fetched\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003eThe indicator calls \u003ccode\u003eCopyTicksRange(_Symbol, ticks, COPY_TICKS_ALL, from_msc, to_msc)\u003c\/code\u003e to retrieve all ticks between the range start and end. \u003ccode\u003eCOPY_TICKS_ALL\u003c\/code\u003e returns bid\/ask\/last\/volume\/flags for every tick, which is the maximum information available in MT5.\u003c\/p\u003e\n\u003cp\u003eIf \u003ccode\u003eCopyTicksRange\u003c\/code\u003e returns 0 or fails, the indicator falls back to \u003ccode\u003eCopyRates\u003c\/code\u003e and uses bar tick_volume with bar-classification heuristics.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eHow each tick is classified\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003eFor each returned tick, the classifier runs through the 3 tiers in order:\u003c\/p\u003e\n\u003col\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eif(ticks[i].flags \u0026amp; TICK_FLAG_BUY)\u003c\/code\u003e → BUY. \u003ccode\u003eTICK_FLAG_BUY\u003c\/code\u003e and \u003ccode\u003eTICK_FLAG_SELL\u003c\/code\u003e are set by the broker\/exchange when the tick has real aggressor data. Present on futures, stock exchanges, some crypto exchanges.\u003c\/p\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cp\u003eIf flags are absent, and the tick has valid bid\/ask\/last, compute the mid = \u003ccode\u003e(bid + ask) \/ 2\u003c\/code\u003e and threshold = \u003ccode\u003ehalf_spread * 0.3\u003c\/code\u003e:\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003elast \u0026gt; mid + threshold\u003c\/code\u003e → BUY (aggressor bought above mid)\u003c\/li\u003e\n\u003cli\u003e\u003ccode\u003elast \u0026lt; mid - threshold\u003c\/code\u003e → SELL (aggressor sold below mid)\u003c\/li\u003e\n\u003cli\u003eElse → falls to tick test\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cp\u003eIf still unclassified, compare the tick's price to the previous tick:\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003ePrice up → BUY\u003c\/li\u003e\n\u003cli\u003ePrice down → SELL\u003c\/li\u003e\n\u003cli\u003eSame → inherit previous direction\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/li\u003e\n\u003c\/ol\u003e\n\u003cp\u003eUltimate fallback: alternate 50\/50 to avoid biasing the profile.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eHow volume is measured\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003eFor each tick, the classifier extracts volume with this priority:\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eticks[i].volume_real\u003c\/code\u003e if \u003ccode\u003eInpUseRealVol=true\u003c\/code\u003e and available (fractional volume, most accurate on some exchanges)\u003c\/li\u003e\n\u003cli\u003eElse \u003ccode\u003eticks[i].volume\u003c\/code\u003e (integer volume, standard)\u003c\/li\u003e\n\u003cli\u003eElse 1 (contribution counter, when no volume data is present)\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cstrong\u003eHow the histogram is built\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003eThe price range from range-min to range-max is divided into \u003ccode\u003eInpBins\u003c\/code\u003e equal-width bins. Each classified tick contributes its volume to the bin containing its price:\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003ebinIdx = floor((price - priceMin) \/ binWidth)\u003c\/code\u003e\u003c\/li\u003e\n\u003cli\u003e\u003ccode\u003ebinBuyVol[binIdx] += vol\u003c\/code\u003e if BUY\u003c\/li\u003e\n\u003cli\u003e\u003ccode\u003ebinSellVol[binIdx] += vol\u003c\/code\u003e if SELL\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003eThen \u003ccode\u003ebinTotalVol[i] = binBuyVol[i] + binSellVol[i]\u003c\/code\u003e for each bin.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eHow POC is found\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003eSimple max scan: \u003ccode\u003epocBin = argmax(binTotalVol)\u003c\/code\u003e. This is the bin with the highest total volume. \u003ccode\u003epocPrice = binPrice[pocBin]\u003c\/code\u003e (bin center).\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eHow Value Area is computed\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003eStandard expansion:\u003c\/p\u003e\n\u003cpre\u003e\u003ccode\u003etarget = totalVolume * InpValueAreaPct \/ 100.0   (default 70%)\nlo = hi = pocBin\nacc = binTotalVol[pocBin]\n\nwhile acc \u0026lt; target and (lo \u0026gt; 0 or hi \u0026lt; binCount - 1):\n    volLo = binTotalVol[lo - 1]  (or -1 if lo == 0)\n    volHi = binTotalVol[hi + 1]  (or -1 if hi == binCount - 1)\n    if volHi \u0026gt; volLo:\n        hi += 1\n        acc += binTotalVol[hi]\n    else:\n        lo -= 1\n        acc += binTotalVol[lo]\n\nvahPrice = binPrice[hi] + binWidth \/ 2\nvalPrice = binPrice[lo] - binWidth \/ 2\n\u003c\/code\u003e\u003c\/pre\u003e\n\u003cp\u003e\u003cstrong\u003ePerformance profile\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eRebuild cost: O(N) where N = number of ticks in range. Bounded by \u003ccode\u003eInpMaxTicks\u003c\/code\u003e (default 500,000).\u003c\/li\u003e\n\u003cli\u003eRebuild is triggered by: handle drag release, new bar close, panel toggle affecting histogram.\u003c\/li\u003e\n\u003cli\u003eRebuild is throttled to \u003ccode\u003eOnTimer\u003c\/code\u003e (default 2 seconds), never on every tick.\u003c\/li\u003e\n\u003cli\u003eMemory: O(bins + ticks). Typical usage: 500K ticks × 24 bytes = 12 MB peak during rebuild, released after.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003chr\u003e\n\u003ch2\u003eVersion History\u003c\/h2\u003e\n\u003cp\u003e\u003cstrong\u003ev1.00 (initial release)\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eTwo mouse-draggable range handles\u003c\/li\u003e\n\u003cli\u003eSemi-transparent range background (toggleable)\u003c\/li\u003e\n\u003cli\u003eBuy\/Sell split histogram with side-by-side coloring\u003c\/li\u003e\n\u003cli\u003eAlternative single-color histogram (dominant-side style)\u003c\/li\u003e\n\u003cli\u003ePOC (Point of Control) line\u003c\/li\u003e\n\u003cli\u003eVAH \/ VAL (Value Area High\/Low) with configurable percentage (default 70%)\u003c\/li\u003e\n\u003cli\u003e3-tier volume classification: real broker flags → Lee-Ready → tick test\u003c\/li\u003e\n\u003cli\u003eBar-level fallback when no tick data available\u003c\/li\u003e\n\u003cli\u003eInfo panel with range statistics\u003c\/li\u003e\n\u003cli\u003ePOC \/ VA \/ Histogram toggles from the panel\u003c\/li\u003e\n\u003cli\u003eExternal \u003ccode\u003e[x] AVP\u003c\/code\u003e toggle button to hide\/show the panel\u003c\/li\u003e\n\u003cli\u003eFull state persistence per chart (range, panel, toggles)\u003c\/li\u003e\n\u003cli\u003eAuto-swap detection when user crosses handles\u003c\/li\u003e\n\u003cli\u003eConfigurable colors, bins, value area percentage, histogram width\u003c\/li\u003e\n\u003cli\u003eWorks on any symbol, any timeframe, any account type\u003c\/li\u003e\n\u003cli\u003eNo external DLLs, no network access\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003chr\u003e\n\u003cp\u003e\u003cstrong\u003eEKAITRADING \/ TSDCCORP\u003c\/strong\u003e Built by traders, for traders.\u003c\/p\u003e","brand":"EKAITRADING","offers":[{"title":"Default Title","offer_id":67901986636082,"sku":null,"price":0.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0992\/3493\/9186\/files\/ChatGPTImageSep29_2026_01_05_18PM.png?v=1791001596","url":"https:\/\/ekaitrading.com\/en\/products\/ekai-anchored-volume-profile-pro","provider":"EKAITRADING","version":"1.0","type":"link"}