Volume Profile█ VOLUME PROFILE
Volume-at-Price Analysis with POC, VAH & VAL
A powerful volume-at-price analysis overlay that calculates and visualizes the Point of Control (POC) , Value Area High (VAH) , and Value Area Low (VAL) directly on your chart. It reveals where the most trading activity occurred and provides real-time price position analysis — helping you identify high-probability support/resistance levels and mean-reversion zones.
Free and Open Source.
█ THE CONCEPT: WHY VOLUME PROFILE MATTERS
Price charts show when trading happened. Volume Profile shows where it happened. The distribution of volume across price levels reveals the market's true valuation zones:
Point of Control (POC) — The price with the highest accumulated volume. Acts as a magnet for price and the strongest single S/R level.
Value Area (70%) — The range containing 70% of all traded volume. Defines what the market considers "fair value."
Above/Below VA — Price outside the value area signals potential overextension or breakout.
Institutional traders, market makers, and algorithmic systems all reference volume profile levels.
█ CORE FEATURES
1. Volume Profile Engine
Distributes each bar's volume proportionally across the price rows it spans, building a precise volume-at-price histogram:
POC — Highest volume row = strongest support/resistance
VAH — Upper boundary of the 70% value area = resistance
VAL — Lower boundary of the 70% value area = support
Row count is configurable (10-50 levels).
2. Profile Anchoring
Three anchor modes control how the profile is built:
Rolling — Continuously recalculated over the last N bars. Best for real-time analysis.
Session — Resets every new trading day. Best for intraday context.
Week — Resets every new trading week. Best for swing context.
3. Price Position Analysis
Real-time classification of price relative to the value area:
ABOVE VA — Potential overextension or breakout
BELOW VA — Potential undervaluation or breakdown
AT POC — High-probability mean-reversion zone
IN VA — Normal trading range
4. Bounce & Rejection Signals
Automatic detection of price interaction with key volume levels:
POC Bounce Up/Down — Price touches POC and reverses
VAL Rejection — Price tests VAL and bounces up (bullish)
VAH Rejection — Price tests VAH and bounces down (bearish)
5. Volume Histogram Visualization
A horizontal bar chart displayed directly on the price chart showing the volume distribution. POC row highlighted with a distinct color.
█ AUTO-TIMEFRAME ADAPTATION
All parameters automatically adjust based on the chart timeframe:
1-5 min → Lookback 30, 18 Rows, Histogram Width 8
15-30 min → Lookback 40, 20 Rows, Histogram Width 10
1 Hour → Lookback 50, 24 Rows, Histogram Width 15
4 Hour → Lookback 70, 28 Rows, Histogram Width 18
Daily → Lookback 100, 32 Rows, Histogram Width 22
Weekly+ → Lookback 150, 40 Rows, Histogram Width 30
█ DASHBOARD
A compact, dark-themed info panel displaying:
POC — Current Point of Control price level
VAH / VAL — Value Area boundaries
Position — Current price position (ABOVE VA / BELOW VA / AT POC / IN VA)
To POC — Distance from current price to POC in percent
Anchor — Active profile anchor mode
VA Range — Width of the value area in price units
█ ALERTS (4 CONDITIONS)
POC Bounce Up — Bullish bounce off the Point of Control
POC Bounce Down — Bearish bounce off the Point of Control
VAL Rejection — Bullish rejection at Value Area Low
VAH Rejection — Bearish rejection at Value Area High
█ NON-REPAINTING
The volume profile is calculated from confirmed bar data only. Rolling mode recalculates the full lookback window on each bar using historical high/low/volume — no future data is used. Session and Week modes accumulate incrementally within the anchor period. No repainting.
█ WORKS ON
Crypto, Forex, Stocks, Futures, Indices — any timeframe from 1 minute to Monthly.
█ DISCLAIMER
This indicator is for educational and informational purposes only. It does not constitute financial advice. Always do your own research and manage your risk. Past performance does not guarantee future results. Trading involves substantial risk of loss.
Indicator

AG Pro Volume Profile POC Magnet Map [AGPro Series]AG Pro Volume Profile POC Magnet Map
Overview
AG Pro Volume Profile POC Magnet Map is a chart-overlay indicator built around one practical question: how strongly is the current Point of Control attracting, holding, or losing price?
Instead of trying to replicate a full volume-profile workstation, this script focuses on the behavior of the active POC and the surrounding value area. The goal is to turn a familiar volume-profile concept into a cleaner decision-support map that helps users judge whether price is still interacting with the current fair-value center, rejecting it, reclaiming it, or beginning to establish value elsewhere.
The script is designed for users who want a visual framework around POC behavior without covering the chart with heavy histogram structures or overly complex dashboards. It highlights the active POC, the current Value Area High (VAH), the current Value Area Low (VAL), a compact magnet band around the POC, and a small set of reaction labels that describe how price is interacting with that area.
In short, this indicator is not trying to tell users what to buy or sell. It is trying to make one specific market reference more readable: the relationship between price and the current POC region.
What the script does
At a high level, the script does five things:
1) It builds a fixed-lookback volume-distribution map from recent chart data.
2) It derives the active POC, VAH, and VAL from that distribution.
3) It measures how close price is to the current POC and how often price revisits or accepts that region.
4) It converts those observations into a compact Magnet Score and state readout.
5) It marks a small set of price/POC interaction events such as Tag, Reject, and Reclaim.
The result is a visual tool that combines reference levels and contextual interpretation in one overlay.
Unique edge
Many indicators can show a POC. This script is built to answer a more specific question: what is the quality of the current POC as a magnet for price?
That difference matters. A raw POC line can be useful, but by itself it does not explain whether price is repeatedly returning to it, drifting away from it, rejecting it, or stabilizing around it. This script adds that missing context by combining the active POC with a behavior layer.
The design goal is not “more features.” The design goal is clearer interpretation:
- Is price still accepting the current value center?
- Is the POC functioning as a pullback magnet?
- Is price rejecting the area instead of accepting it?
- Is value beginning to migrate?
That is the role of the score, the state engine, and the reaction labels.
Methodology
The script uses a fixed lookback window and divides the recent price range into user-defined bins. It then allocates each bar’s volume to one price bin using the selected bar source, which can be Close or HLC3. From that distribution it identifies:
- POC: the highest-volume bin in the lookback window
- VAH: the upper boundary of the selected value area percentage
- VAL: the lower boundary of the selected value area percentage
After the levels are derived, the script evaluates how price is behaving relative to the active POC region.
The Magnet Score is built from multiple components:
- Distance: how far current price is from the POC, normalized by ATR
- Revisit behavior: how often price has returned to the POC region
- Acceptance behavior: how often price has closed near the POC region
- Stability: whether the POC is relatively stable or drifting quickly
- Rejection pressure: whether interactions with the POC region are ending in rejection rather than acceptance
These components are combined into a bounded 0-100 score. Higher readings suggest that the current POC remains a stronger center of attraction. Lower readings suggest weaker pull, weaker acceptance, or a market beginning to operate away from the current value center.
The script then classifies context into states such as:
- Magnet Strong
- Magnet Active
- POC Tagged
- POC Rejected
- Accepted Away
- Magnet Weakening
This state layer is designed to summarize the current context rather than generate automatic trading instructions.
How to read the chart
POC
The POC is the main reference line. It marks the highest-volume price zone inside the selected lookback distribution. If price repeatedly returns to it, reacts from it, or consolidates around it, that line is functioning as an active center of interest.
VAH and VAL
VAH and VAL define the current value-area boundaries. These help users judge whether price is still operating inside value or beginning to establish acceptance above or below it.
Magnet band
The magnet band is a narrow region around the POC. It exists to make POC interaction easier to read visually. It is not a claim that every touch is meaningful. It is simply a compact visual tolerance zone around the active POC.
Reaction labels
The script can display a small set of event labels:
- Tag: price reached the current POC region
- Reject: price interacted with the area and moved away
- Reclaim: price crossed back through the active POC after being on the other side
These labels are meant to help describe interaction, not to replace confirmation logic, risk management, or broader market context.
Panel
The panel summarizes:
- Magnet Score
- POC Distance
- POC Drift
- Value Context
- Last Reaction
- Current POC / VAH / VAL values
This gives users a quick status view without needing to inspect every line manually.
Typical use cases
This indicator may be useful when users want to:
- monitor whether pullbacks are still returning to the active POC
- judge whether price is still auctioning inside value or beginning to accept away from value
- compare different symbols for how “sticky” the current POC region appears to be
- add context to an existing structure, trend, or mean-reversion workflow
- keep a cleaner chart while still tracking basic volume-profile behavior
The script is intended as a context and interpretation layer. It is not a complete trading plan on its own.
Key inputs
Lookback Bars
Controls the size of the historical window used for the profile calculation. A larger value creates a broader context. A smaller value makes the profile more reactive.
Rows / Bin Count
Controls profile granularity. Higher values create more detailed binning. Lower values produce a smoother, simpler map.
Value Area %
Defines how much of total lookback volume is included inside the value area used to derive VAH and VAL.
Price Source For Bin Allocation
Lets users choose whether each bar’s volume is allocated using Close or HLC3. This changes how the profile is distributed across bins.
ATR Length
Used in normalization and spacing calculations, including the distance component and label positioning.
Magnet Band Width (ATR)
Controls the thickness of the tolerance zone around the active POC.
Distance Ceiling (ATR)
Caps how far price can be from the POC before the distance component is treated as maximally weak.
Revisit Window and Acceptance Window
These affect how the script measures repeated interaction and acceptance around the active POC region.
POC Drift Lookback
Used to estimate whether the active POC is relatively stable or shifting.
Label controls
Users can adjust label visibility, density, cooldown behavior, and right-edge line labels to keep the chart cleaner or more descriptive depending on preference.
Alerts
The script includes alert conditions for:
- POC Tag
- POC Reject
- POC Reclaim
- Magnet Strong
- Magnet Active
- Magnet Weakening
- Accepted Away
These alerts are event-based notifications tied to the script’s contextual logic. They are not performance claims and they should not be interpreted as guaranteed entry or exit signals.
Limitations and transparency
This script uses a fixed-lookback, bar-based approximation of volume distribution. It does not reconstruct native exchange-level order flow, bid/ask delta, or true tick-by-tick auction detail.
Volume is allocated to bins using a selected bar source rather than full intrabar volume-at-price reconstruction. That means the profile is intentionally simplified so it can remain lightweight and readable inside a standard Pine overlay.
Because the script uses a rolling lookback window, the active POC, VAH, and VAL can change as older bars leave the window and newer bars enter it. That is normal behavior for this design.
The reaction labels are descriptive, not predictive. A Tag does not imply reversal. A Reject does not guarantee continuation. A Reclaim does not guarantee trend resumption. They are context markers showing how price interacted with the current POC area according to the script’s definitions.
This tool should be read in conjunction with price structure, volatility, liquidity conditions, and user-defined execution rules.
What this script is not
This script is not:
- a full session volume-profile suite
- an order-flow or footprint tool
- a prediction engine
- a guaranteed reversal detector
- a stand-alone trade system
It is a focused overlay for interpreting how price is behaving around the current Point of Control and value-area structure.
Practical interpretation notes
In many markets, the POC acts like a reference area rather than a directional signal. The more often price returns to it and the more often price stabilizes near it, the more useful that region can become as a working fair-value reference.
By contrast, when price begins to hold above VAH or below VAL and stops interacting meaningfully with the POC region, the script may shift toward weaker magnet states or accepted-away context. That does not automatically imply trend continuation, but it does suggest that the current value center may be losing influence.
Users may find this especially useful when comparing:
- balanced conditions vs. directional conditions
- shallow pullbacks vs. deeper value retests
- symbols that keep rotating through value vs. symbols that are clearly accepting away from it
Risk disclosure
This indicator is for chart analysis and market context only. It does not provide investment advice, trading advice, or guaranteed outcomes.
All indicators simplify market behavior. This script is no exception. Markets can ignore previously important value references, react differently across symbols and timeframes, and change behavior as volatility regimes shift.
Users are responsible for their own confirmation process, execution decisions, and risk management. Indicator

Wraith Protocol OscWhat Is This Indicator?
Rather than plotting raw price, it normalizes the entire lookback range onto a clean 0–100 scale, making it easier to visualize where price currently sits relative to its recent high and low — and how Fibonacci levels, volume clusters, and momentum all align in one unified pane.
Core Components & What They Do=>
1. Normalized Price Axis (0–100 Scale)
The indicator rescales price so that the lowest point of the lookback period = 0 and the highest = 100. This instantly tells you whether price is near the bottom, middle, or top of its recent range without doing any manual math.
2. Fibonacci Levels-
Eleven key Fibonacci ratios are plotted across the normalized range: -0.13, 0, 0.13, 0.236, 0.382, 0.5, 0.618, 0.786, 0.886, and 1.0, plus 1.13. Each level shows the actual price value alongside the ratio and normalized position. These act as dynamic support and resistance zones within the lookback window.
3. Volume Profile-
A horizontal volume profile is plotted to the right of the range box, split into buy volume (bullish candles) and sell volume (bearish candles) per price bucket. The Point of Control (POC) — the price level with the highest total volume — is highlighted in red. This is the most important level on the chart because it shows where the most trading activity has occurred.
4. Fibonacci Gap-Probability Arrows-
This is the signal engine. At the current bar, the indicator measures the gap between the current normalized price and the nearest Fibonacci level above and below. It then calculates a probability: if price is very close to the lower Fibonacci level and far from the upper one, the upward probability score is higher, and vice versa. The ▲ and ▼ arrows show these gap distances and probability percentages live on the chart.
Visual reinforcement — the dominant direction arrow renders in full brightness, the weaker direction fades to 50% opacity, so the bias is immediately readable without even reading the numbers.
Reading it in practice (both for long and short):
prob 60–70% → moderate bias, worth noting
prob 70–80% → strong bias, consider positioning
prob 80%+ → price is almost sitting on a level, high-conviction setup zone
5. Info Table-
A dashboard table showing: total candle count in the lookback, the largest single buy and sell candle price, buy/sell volume rates as percentages, trend bias (Bullish/Bearish), Fibonacci-derived support (0.886 retracement) and resistance (0.618 retracement), estimated P&L between those two levels, and the final directional Estimate (Up/Down/Neutral) derived from the probability arrows.
How to Trade with It=>
Step 1 — Read the Estimate first.
The bottom-right cell of the info table shows "Up (X%)" or "Down (X%)". This is your directional bias for the current bar. A probability above 60% is a meaningful lean; above 70% is a strong signal.
Step 2 — Confirm with Volume Profile.
Check where the POC line sits relative to current price. If the Estimate says "Up" and price is below the POC, the POC acts as a magnet — that is a higher-conviction long setup. If price is above the POC and the Estimate says "Down", look for mean-reversion short opportunities.
Step 3 — Use Fibonacci levels as entry and exit zones.
The 0.382, 0.5, and 0.618 levels are the most commonly respected. A bounce off the 0.618 normalized level (meaning price is near 38 on the 0–100 scale) with a bullish volume profile and an "Up" Estimate is a textbook long entry. Target the 0.382 or 0.236 level above for exits.
Step 4 — Check Buy Rate vs Sell Rate.
If Buy Rate is above 55% and the trend reads "Bullish", that confirms institutional buying pressure within the lookback window. Avoid longs when Sell Rate dominates even if the Estimate temporarily reads "Up" — it may just be a brief pullback within a downtrend.
Step 5 — Support and Resistance for Stop Placement.
The table's Support level (0.886 retracement) is a logical stop-loss zone for long trades. If price closes below it, the bullish thesis is invalidated. Resistance (0.618) is the first profit target.
Recommended Timeframes=>
The indicator is highly adaptable, but it performs best under these conditions:
Intraday Scalping — 3min to 15min: Use a lookback of 30–50 candles. The probability arrows update quickly and help identify short-term Fibonacci bounces within the session range.
Intraday Swing — 15min to 1 Hour: The default 60-candle lookback works well here. This is the sweet spot for the indicator — enough data for a meaningful volume profile while still being reactive to intraday structure.
Swing Trading — 4 Hour to Daily: Increase the lookback to 80–120 candles. Fibonacci levels at this timeframe represent multi-day support and resistance and are widely watched by institutional participants.
Avoid on tick charts or very low-volume instruments — the volume profile becomes unreliable without sufficient trade data.
Practical Tips=>
When the normalized close is between 40 and 60 (mid-range), treat signals as lower confidence — price is in no-man's-land between major Fibonacci levels.
The dominant volume bucket highlighted in teal/cyan on the profile is the strongest magnet zone. Price frequently returns to it.
Enable "Extend to Right Edge" on Fibonacci levels when using this for swing trades so you can see where levels project into future candles.
Flipping the Volume Profile to the left is useful when you want to keep the right side of the chart clean for price action reading.
⚠️ Disclaimer:
This indicator is provided strictly for educational and informational purposes only. It does not constitute financial advice, investment advice, or a recommendation to buy or sell any financial instrument. Past performance of any signal or strategy derived from this tool does not guarantee future results. All trading involves substantial risk of loss, including the possible loss of your entire invested capital. The probability estimates shown are purely mathematical calculations based on Fibonacci gap distances and do not predict future price movement. Always conduct your own due diligence, apply proper risk management, and consult a licensed/SEBI regd. financial advisor before making any trading decisions. (Pls read the entire description above) Happy Trading !! Indicator

Volume Profile Heatmap [KEYALGOS]
OVERVIEW
The Volume Profile Heatmap is an advanced market structure tool that visualizes historical volume distribution across price levels using an intuitive color gradient system. Unlike traditional volume profile indicators that display static histograms, this tool creates a dynamic heatmap overlay that instantly reveals high probability support and resistance zones, liquidity clusters, and value areas where institutional activity has occurred.
This indicator is designed for traders who need to identify where significant volume has been transacted, allowing for more informed entry, exit, and risk management decisions based on actual market participation rather than price action alone.
KEY FEATURES AND NOVEL TECHNIQUES
Adaptive Volume Distribution Algorithm : Volume from each candle is intelligently distributed across all price bands it occupied during its formation, ensuring accurate representation even for large range candles
Dynamic Gradient Color Mapping : Each horizontal band automatically adjusts its color intensity based on relative volume concentration, creating an instant visual heatmap from low activity (subtle tones) to high activity (intense tones)
Real Time Value Area Calculation : Uses bidirectional expansion from the Point of Control to dynamically compute Value Area High and Low boundaries based on your selected percentage threshold
Selective Volume Filtering : Analyze bullish volume, bearish volume, or combined volume to understand directional conviction at specific price levels
Optimized Plot Architecture : Engineered to maximize visual information within Pine Script's 64 plot limit, delivering up to 24 distinct volume bands plus reference lines without performance degradation
Responsive Lookback Window : Adjustable calculation period allows you to focus on recent structure or broader historical context based on your trading timeframe
USER MODIFIABLE PARAMETERS
Calculation Settings
Lookback Period
Range: 10 to 300 bars
Default: 100
Purpose: Defines how many historical bars are included in the volume profile calculation
Trading Tip: Shorter periods (10-50) work well for intraday scalping, medium periods (50-150) suit swing trading, and longer periods (150-300) help identify major structural levels on higher timeframes
Profile Rows (Max 24)
Range: 10 to 24 bands
Default: 24
Purpose: Controls the vertical resolution of the heatmap by dividing the price range into discrete horizontal bands
Trading Tip: Higher row counts provide finer price granularity but may reduce visual clarity on lower timeframes. Start with 24 and reduce if the chart appears cluttered
Value Area Percentage
Range: 5% to 95%
Default: 68%
Purpose: Determines what percentage of total profile volume is included within the Value Area boundaries (VAH/VAL)
Trading Tip: 68% approximates one standard deviation in normal distribution and is widely used by institutional traders. Lower values (30-50%) identify core liquidity zones, while higher values (80-95%) show broader acceptance ranges
Volume Type
Options: Both, Bullish, Bearish
Default: Both
Purpose: Filters which candles contribute volume to the profile calculation
Trading Tip: Use Bullish only to identify support levels where buying pressure dominated, Bearish only to find resistance where selling pressure was strong, or Both for comprehensive market structure analysis
Color Settings
High Volume Color
Default: Red with transparency
Purpose: Color applied to bands with the highest relative volume concentration
Customization: Click the color picker to select any hue and adjust transparency to suit your chart theme
Low Volume Color
Default: Light yellow with high transparency
Purpose: Color applied to bands with minimal volume activity
Customization: Choose subtle tones that remain visible but do not distract from high volume zones
POC Line Color
Default: Orange
Purpose: Color of the Point of Control reference line marking the single price level with maximum volume
Trading Tip: The POC often acts as a magnet for price and a key decision point for breakouts or reversals
VAH/VAL Lines Color
Default: Blue
Purpose: Color of the Value Area High and Value Area Low boundary lines
Trading Tip: Price reactions at VAH/VAL often signal continuation or rejection of the current value area
Extreme Lines Color
Default: Gray
Purpose: Color of the profile high and low reference lines marking the boundaries of the lookback range
Trading Tip: These levels help contextualize where current price sits relative to the recent trading range
Display Toggles
Show POC
Default: Enabled
Purpose: Toggles visibility of the Point of Control reference line
Show Value Area Lines
Default: Enabled
Purpose: Toggles visibility of VAH and VAL boundary lines
Show Profile Extremes
Default: Enabled
Purpose: Toggles visibility of the highest high and lowest low lines from the lookback period
HOW TO USE THIS INDICATOR
Identify High Probability Zones : Areas colored with intense high volume colors represent price levels where significant trading activity occurred. These zones often act as support or resistance during future price visits
Trade Value Area Breakouts : When price moves decisively above VAH or below VAL with conviction, it may signal the start of a new value area and potential trend continuation
Use POC for Entry Refinement : The Point of Control frequently serves as a fair value reference. Pullbacks to POC in the direction of the trend can offer high reward entry opportunities
Confirm Breakouts with Volume Profile : A breakout that occurs through a low volume node (thin colored band) has higher probability of success than one struggling through a high volume node
Combine with Price Action : Use candlestick patterns, momentum oscillators, or trend filters alongside the heatmap to confluence your trading decisions
TRADING APPLICATIONS
Intraday Trading : Set lookback to 50-100 bars on 5-15 minute charts to identify intraday value areas and liquidity pools
Swing Trading : Use 100-200 bar lookback on 1H-4H charts to map structural support and resistance for multi day positions
Breakout Confirmation : Wait for price to clear high volume nodes before entering breakout trades to avoid false moves
Reversal Identification : Sharp rejections at high volume nodes with bearish/bullish volume divergence can signal potential reversals
Risk Management : Place stop losses beyond high volume nodes rather than arbitrary price levels, as these zones represent areas of strong market participation
PERFORMANCE AND TECHNICAL NOTES
This indicator is optimized for efficiency and works best with lookback periods under 300 bars
The 24 row maximum ensures compatibility with Pine Script's plot limitations while delivering professional grade resolution
Real time calculations update on each new bar, providing current market structure without repainting historical values
For best performance on lower timeframe charts, consider reducing the Profile Rows setting if you experience rendering delays
SUPPORT AND UPDATES
This indicator is maintained by the KeyAlgos development team. We regularly review user feedback and market evolution to enhance functionality. For feature requests, bug reports, or usage questions, please visit our agency profile page or contact us through PulseWire messaging.
Remember: No indicator guarantees profits. Always combine Volume Profile Heatmap analysis with sound risk management, position sizing, and broader market context. Past performance does not guarantee future results.
KeyAlgos - Algorithmic Tools for Discerning Traders Indicator

Daily Volume Profile Pro [WillyAlgoTrader]📊 Daily Volume Profile Pro is an overlay indicator that builds a complete volume profile for each daily session — distributing volume across price bins using candle-range proportional allocation, computing POC (Point of Control), 70% Value Area (VAH/VAL) using the CME expansion method, session VWAP, buy/sell delta per bin, and displaying up to 7 days of profiles simultaneously. The indicator also detects naked (unvisited) POCs from prior days, classifies each day's profile shape (Normal/Trend/Neutral/Double Distribution), tracks Initial Balance ranges, and highlights single-print thin-volume zones — creating a complete volume-based market context tool.
🧩 WHY THESE COMPONENTS WORK TOGETHER
A volume profile alone shows where trading activity concentrated — but without context, you don't know whether the profile represents a trending day, a balanced day, or a double-distribution day. You don't know whether the POC from two days ago was ever revisited. You don't know whether the current price is above or below the Initial Balance — which tells you whether the opening range has been broken.
This indicator layers multiple volume-based analyses that each answer a different question:
Volume Profile → WHERE did volume concentrate? Which prices are accepted (high volume) and rejected (low volume)?
POC → What is the single most-traded price? This is the market's "fair value" for that session.
Value Area (70%) → Where did 70% of volume trade? Price inside VA = balance. Price outside VA = imbalance seeking new value.
Delta Coloring → At each price level, was the activity dominated by buyers or sellers? Green bins = buying pressure, red = selling.
Naked POCs → Which prior-day fair values were never revisited? These are strong magnets — price tends to return to unfinished business.
Initial Balance → What was the opening range? Price above IB High = bullish conviction. Below IB Low = bearish. Inside = balance.
Day Type → What shape is the profile? Trend days (narrow) behave differently than Normal (bell curve) or Double Distribution (bimodal) days.
Single Prints → Where did price move too fast for volume to fill? These thin-volume zones are gaps in the profile that often get revisited.
No single component provides a complete picture. The combination tells you: the market's fair value (POC), the accepted range (VA), the directional pressure (delta), the day's character (day type), the opening bias (IB), unfinished levels from prior sessions (naked POCs), and price imbalances (single prints) — all from volume data.
🔍 WHAT MAKES IT ORIGINAL
1️⃣ Candle-range proportional volume allocation.
Each candle's volume is distributed across the price bins it touches, proportional to the overlap between the candle's range and each bin:
overlap = max(0, min(candle_high, bin_high) − max(candle_low, bin_low))
allocated_volume = total_volume × overlap / candle_range
This produces a smoother, more accurate profile than the common approach of assigning all volume to a single price (close or typical price). A candle spanning 5 bins distributes its volume across all 5, weighted by how much of the candle falls in each bin.
Buy/sell classification: close ≥ open → buy candle (volume added to buy array), close < open → sell candle (volume added to sell array). Delta coloring shows whether each bin was dominated by buying or selling pressure.
2️⃣ CME-style Value Area expansion.
The 70% Value Area is computed using the standard CME method:
— Start at POC bin
— Compare the volume of the next bin above vs the next bin below
— Expand toward whichever side has higher volume
— Repeat until 70% of total session volume is captured
— VAH = top of the highest included bin, VAL = bottom of the lowest included bin
This matches the industry-standard method used by CME Group and professional platforms. The VA is displayed as dashed lines (VAH/VAL) with an optional semi-transparent background fill.
3️⃣ Naked POC detection with historical scan.
For each prior day's POC, the indicator scans all bars from the POC's day to the present — checking whether price ever touched that level (low ≤ pocPrice ≤ high). If no bar has touched it, the POC is classified as "naked" (nPOC) and drawn as a dashed red line extending to the right.
Naked POCs represent unfinished business — the market established fair value at that price but never returned to retest it. They act as strong magnets because institutional activity that established the original POC may still hold positions anchored to that level. The scan limit is 300 bars to maintain performance.
4️⃣ Day type classification from profile shape.
Each day's volume distribution is analyzed to classify the session:
— Trend : significant bins < 35% of total bins — volume concentrated in a narrow area, price moved decisively in one direction
— Neutral : significant bins > 65% — volume spread evenly across the range, balanced/rotational day
— Normal : 35–65% — bell-curve distribution with clear POC and tapering tails
— DD (Double Distribution) : significant bins concentrated in both top and bottom thirds but not the middle — bimodal distribution indicating two separate value areas (e.g., gap-and-go)
A "significant bin" is defined as having volume > 25% of POC volume. The classification appears as a color-coded label above each session.
5️⃣ Initial Balance (IB) range tracking.
The IB captures the high and low of the first N minutes of each session (configurable: 30, 60, 90, or 120 minutes). The IB range is drawn as solid lines with optional background fill, optionally extended to the end of session.
IB context: price above IB High signals that early buyers were committed and the market accepted higher prices — bullish bias. Price below IB Low signals the opposite. Price inside IB = range-bound session. The dashboard shows the current IB position (Above IB / Below IB / Inside IB).
6️⃣ Single print (thin volume) zone detection.
Bins with volume less than 15% of the POC bin's volume are classified as single prints — areas where price moved too quickly for significant volume to build. These are highlighted with a distinct border color and represent imbalance zones that often get revisited as the market seeks to fill the volume gap.
7️⃣ Multi-day profile display with configurable orientation.
Up to 7 days of profiles are drawn simultaneously with left or right orientation. Each day's profile bins are scaled proportionally: bin width = volume / maxVolume × span/3 in bars. The adaptive bin count adjusts to the day's price range: bins = min(binCountInput, max(8, range / (ATR × 0.05))).
8️⃣ POC extension + previous day POC (yPOC).
Each day's POC can be extended forward as a dashed line for 1–7 days (configurable), serving as a reference level for subsequent sessions. Yesterday's POC (yPOC) is drawn separately as a labeled reference — one of the most-watched volume levels in professional trading.
Today's POC, VAH, and VAL can be extended to the right chart edge for real-time reference.
9️⃣ Session VWAP.
Volume-weighted average price computed per session: VWAP = Σ(typicalPrice × volume) / Σ(volume). Displayed as a dotted line within each session. VWAP represents the average price at which volume traded — a key reference for institutional traders.
🔟 Optional MA overlay.
Six MA types available (SMA, EMA, RMA, WMA, VWMA, None) for additional trend context alongside the volume profile.
⚙️ HOW IT WORKS — CALCULATION FLOW
Step 1 — Session detection: Day change tracked via ta.change(time("D")). Session start/end bars, day high/low, and timestamps stored in arrays. IB high/low tracked during the first N minutes of each session.
Step 2 — Profile construction (per day): For each session, the price range is divided into bins. Every candle within the session distributes its volume across bins proportional to the candle-range overlap with each bin. Separate buy and sell arrays track directional volume.
Step 3 — POC/VA/VWAP: POC = bin with maximum volume. VA computed via CME expansion from POC until 70% captured. VWAP = cumulative (typical price × volume) / cumulative volume.
Step 4 — Visualization (last bar): All profiles, lines, and labels are drawn on barstate.islast using delete-and-redraw pattern. Profile boxes are colored by delta (buy/sell dominance), with POC bin highlighted, VA bins tinted, single prints bordered.
Step 5 — Naked POC scan: Each prior-day POC is checked against all subsequent bars. If no bar has touched the level → naked POC drawn as dashed line.
Step 6 — Day type: Volume distribution analyzed for shape classification (Trend/Normal/Neutral/DD).
📖 HOW TO USE
🎯 Quick start:
1. Add the indicator to an intraday chart (1M–30M recommended)
2. Volume profiles appear for each daily session (up to 7 days)
3. Yellow horizontal line = POC (highest volume price)
4. Blue dashed lines = VAH / VAL (70% Value Area boundaries)
5. Red dashed lines = naked POCs from prior days (unvisited fair values)
6. Orange lines = Initial Balance high/low
👁️ Reading the chart:
— 🟡 Solid line = POC (session fair value)
— 🟡 Dashed line = extended POC (reference for future sessions)
— 🔴 Dashed line with "nPOC" label = naked POC (unvisited — strong magnet)
— 🟡 "yPOC" label = yesterday's POC
— 🔵 Dashed lines = VAH / VAL (70% Value Area boundaries)
— 🔵 Shaded zone = Value Area background
— 🟣 Dotted line = session VWAP
— 🟠 Solid lines = IB High / IB Low
— 🟠 Shaded zone = Initial Balance range
— 🟢 Profile bins = buying pressure (delta positive)
— 🔴 Profile bins = selling pressure (delta negative)
— 🟡 Bordered bins = single prints (thin volume — imbalance zones)
— Day type labels: Trend / Normal / Neutral / DD
📊 Dashboard fields:
— Day Type: profile shape classification (Trend / Normal / Neutral / DD)
— Trend: price vs POC (Bullish ▲ / Bearish ▼)
— Price Zone: Above VA / Inside VA / Below VA
— IB Position: Above IB / Inside IB / Below IB
— POC: today's price, vs POC distance
— VAH / VAL: Value Area boundaries
— Delta: net buy/sell percentage
— Volume: total session volume
— Naked POCs: count of unvisited prior-day POCs
🔧 Tuning guide:
— Profile too coarse: increase Profile Bins (30–40)
— Profile too granular: decrease Profile Bins (15–20)
— Want to see more history: increase Days to Show (up to 7)
— IB too narrow for your market: increase IB Period (90–120 min)
— Too many single prints: this is informational — they highlight real imbalances
⚙️ KEY SETTINGS REFERENCE
⚙️ Main:
— Days to Show (default 7): number of daily profiles (1–7)
— Profile Bins (default 34): resolution of volume distribution
📊 Profile:
— Delta Coloring (default On): color bins by buy/sell pressure
— Single Prints (default On): highlight low-volume imbalance zones (< 15% of POC)
— Profile Side (default Left): draw bars left or right of session
📏 Levels:
— POC (default On) with width and extension (1–7 days)
— Naked POCs (default On): unvisited prior-day POCs
— Value Area (default On) with background fill
— Session VWAP (default Off)
— Previous Day POC (default On): yPOC reference
— Extend Today (default On): extend current session levels to chart edge
🔲 Initial Balance:
— IB Period (default 60 min): 15–120 minutes
— IB Background (default On) / Extend IB Lines (default On)
🎨 Visual:
— Day separators, day labels (Mon–Sun), day type labels
— MA overlay: SMA/EMA/RMA/WMA/VWMA/None
— Auto / Dark / Light theme
🔔 Alerts
— 🟢 POC CROSS UP / 🔴 POC CROSS DOWN — price crosses today's POC
— ⬆️ VAH BREAK — price breaks above Value Area High
— ⬇️ VAL BREAK — price breaks below Value Area Low
All support plain text and JSON webhook format. Bar-close confirmed.
⚠️ IMPORTANT NOTES
— 📐 Use on intraday timeframes. The indicator builds daily session profiles — it requires intraday data (1M–30M recommended) to produce meaningful volume distribution. On daily or higher timeframes, each day has only one candle, producing a single-bin profile.
— 🚫 No repainting. All alert conditions require barstate.isconfirmed. Profiles are computed from historical data within each session. Today's profile updates in real-time as new bars arrive (this is expected behavior for a live volume profile — not repainting).
— 📊 The volume allocation is proportional to candle-range overlap , not tick-by-tick. True tick data is not available in Pine Script. This candle-range method produces a close approximation for intraday timeframes (1M–15M). Lower timeframes = more candles per session = more accurate profile.
— ⚖️ The Value Area uses the standard CME expansion method : start at POC, expand toward higher-volume adjacent bins until 70% captured. This matches the industry-standard algorithm used by professional platforms.
— 🔴 Naked POC scan checks up to 300 bars of history per POC for performance reasons. On very low timeframes with many bars per day, a POC from 5+ days ago may exceed the scan range.
— 📏 Single prints are defined as bins with volume < 15% of POC volume — these represent areas where price moved too quickly for meaningful volume to accumulate. They are not errors or missing data.
— 🏷️ Day type classification uses volume distribution shape analysis based on the ratio of significant bins to total bins. It's a probabilistic assessment of the session's character, not a definitive market prediction.
— 🛠️ This is a volume analysis and market context tool , not an automated trading system. It visualizes where volume traded, which prices are accepted/rejected, and which levels remain unfinished — trade decisions remain yours.
— 🌐 Requires volume data. On instruments without reliable volume (some forex pairs), the profile accuracy depends on broker-reported tick volume. Indicator

Stratum Depth Profile [JOAT]Stratum Depth Profile
Introduction
The Stratum Depth Profile is an open-source volume profile indicator built in Pine Script v6. It calculates and displays a real-time Volume Profile histogram directly on the price chart, identifying the Point of Control (POC), Value Area High (VAH), Value Area Low (VAL), and classifying price zones as High Volume Nodes (HVN) or Low Volume Nodes (LVN). The indicator separates buying and selling volume within each price level, calculates a context score based on where price sits relative to the profile, and detects institutional signals like POC reclaims, Value Area breakouts, absorption events, and delta imbalances.
Unlike simple volume bars beneath the chart, this indicator maps volume across price levels to show where the most trading activity occurred. The POC represents the price level with the highest traded volume — a natural magnet for price. The Value Area contains the configurable percentage (default 70%) of total volume, defining the range where most participants agreed on value. Price outside the Value Area is in a statistical extreme and tends to revert or accelerate.
Why This Indicator Exists
Volume Profile is one of the most powerful tools in institutional trading, but most implementations on PulseWire either require paid subscriptions, lack delta separation, or do not provide context scoring. This indicator addresses those gaps:
Full Volume Profile Calculation: Bins volume across configurable price levels over a lookback period, producing a true histogram of volume by price
Bull/Bear Delta Separation: Each price level's volume is split into buying volume (close > open candles) and selling volume (close < open candles), revealing who controls each level
POC / VAH / VAL Detection: Automatically identifies the Point of Control and expands outward to find the Value Area boundaries containing the specified percentage of total volume
Context Scoring: A 0-100 score based on price position relative to the profile (above VAH, at POC, below VAL, etc.) combined with SMA alignment, giving a quick read on the current market context
Institutional Signal Detection: POC Reclaim, POC Rejection, VA Breakout, Absorption, Delta Imbalance, and Zone Shift events with anti-overlap cooldowns
HVN/LVN Classification: Identifies which price levels have concentrated volume (support/resistance) versus thin volume (fast-move zones)
How Volume Profile Calculation Works
The indicator divides the price range of the lookback period into a configurable number of rows (default 24). For each bar within the lookback, it determines which price bin the bar's activity falls into and accumulates volume. The calculation separates bullish and bearish volume:
// For each bar in the lookback, assign volume to the appropriate price bin
// Bullish volume: bars where close > open
// Bearish volume: bars where close < open
// POC = price bin with the highest total volume
// Value Area = expand from POC until cumulative volume >= vaPct% of total
The POC is the single price level where the most volume was traded — it acts as a magnet because it represents the price at which the most participants found value. The Value Area expands symmetrically from the POC, adding the next-highest adjacent bins until the specified percentage of total volume is captured.
Bull/Bear Delta at Each Level
What makes this profile unique is the delta separation within each price bin. Instead of just showing total volume, the histogram displays bullish volume (green/teal) and bearish volume (pink/red) side by side at each price level. This reveals:
A POC dominated by buying volume suggests buyers control the key level — bullish bias
A POC dominated by selling volume suggests distribution — bearish bias
VAH with heavy selling indicates resistance with institutional distribution
VAL with heavy buying indicates support with institutional accumulation
Levels where bull and bear volume are roughly equal indicate genuine two-way auction — balanced market
Context Scoring System
The context score (0-100) provides an at-a-glance assessment of the current market state relative to the volume profile:
Price Zone Component: Where price sits relative to POC, VAH, and VAL. Price above VAH or below VAL scores higher (trending/breakout conditions). Price near POC scores for mean-reversion potential.
SMA Alignment Component: Whether the 20, 50, and 200 SMAs are aligned in a trending configuration. Full bull alignment (20 > 50 > 200) or bear alignment adds to the score.
POC Proximity: How close price is to the POC level — useful for identifying mean-reversion opportunities or confirming that price is at a key decision point.
Delta Direction: Whether the current cumulative delta supports the price direction.
Institutional Signals
The indicator detects six types of institutional events, each with anti-overlap cooldowns to prevent label stacking:
POC Reclaim: Price crosses above the POC after being below it — indicates buyers are reclaiming the most-traded level, often a bullish continuation signal
POC Rejection: Price approaches the POC and reverses away — the POC is acting as resistance or support
VA Breakout: Price closes outside the Value Area — a statistical extreme that often leads to trend continuation or a sharp reversion
Absorption: High volume with small price range (Wyckoff Effort vs Result) — institutional orders are being filled without moving price, often preceding a directional move
Delta Imbalance: The buy/sell volume ratio at the current level is heavily skewed, indicating one-sided institutional flow
Zone Shift: The Value Area boundaries shift significantly between profile recalculations, indicating a change in the accepted value range
Visual Design
The indicator uses a "Midnight Neon" color theme with electric blues, hot pinks, neon violets, and lime accents on a dark background:
VP Histogram: Horizontal bars drawn as boxes, with bull volume in neon teal and bear volume in hot pink. A sin-based gradient provides smooth color transitions across the histogram.
POC Line: Bright electric blue line at the highest-volume price level, with a label showing the exact price
VAH/VAL Lines: Neon violet lines marking the Value Area boundaries
SMA Lines: 20/50/200 SMAs with neon glow effect for trend context
Signal Labels: Color-coded labels for each institutional signal type with cooldown-based anti-overlap
Context Score: Displayed in the HUD with color coding (green for high scores, amber for moderate, red for low)
HUD Dashboard
The real-time HUD displays key metrics:
POC price level and proximity state (At POC, Near POC, Away)
VAH and VAL price levels with current zone (Above VA, In VA, Below VA)
Context Score (0-100) with color coding
POC Delta direction (Buyers/Sellers/Balanced)
Current Delta value and direction
Effort/Result ratio (Wyckoff absorption detection)
SMA Alignment state (Bull Aligned, Bear Aligned, Mixed)
Volume Ratio (current vs 20-bar average)
Imbalance classification
Input Parameters
Volume Profile:
Lookback (bars): Number of bars to calculate the profile over (default: 100)
Price Levels: Number of horizontal bins to divide the price range into (default: 24)
Value Area %: Percentage of total volume to include in the Value Area (default: 70%)
Display:
Display Mode: Full (histogram + lines), Minimal (lines only), or Off
Histogram Width: How many bars wide the histogram extends (default: 12)
Show SMA Lines: Toggle 20/50/200 SMA overlay
Show Signals: Toggle institutional signal labels
Signal Cooldown: Minimum bars between signals (default: 5)
Show HUD Panel: Toggle the information dashboard
How to Use This Indicator
Step 1: Identify the Value Area
The area between VAH and VAL represents where 70% of volume was traded. Price inside this range is in "fair value." Price outside is in a statistical extreme.
Step 2: Watch the POC
The POC is the strongest magnet on the chart. If price is away from the POC, expect a pull back toward it unless strong momentum keeps price moving. If price is at the POC, watch for a directional break.
Step 3: Read the Delta
Check whether the POC is buyer-dominated or seller-dominated. A buyer-dominated POC in a bullish SMA alignment is a strong confluence for longs. A seller-dominated POC with bearish alignment favors shorts.
Step 4: Use Signals for Timing
POC Reclaim and VA Breakout signals provide timing for entries. Absorption signals warn that a move is being loaded. Delta Imbalance confirms directional conviction.
Step 5: Context Score for Quick Assessment
A context score above 70 suggests strong directional conditions. Below 30 suggests choppy or mean-reverting conditions. Use this to decide whether to trade aggressively or wait.
Best Practices
Volume Profile is most meaningful on instruments with reliable volume data — major forex pairs, large-cap equities, crypto majors
The lookback period should match your trading timeframe. Day traders might use 50-100 bars on a 5-minute chart. Swing traders might use 100-200 bars on a 1-hour chart.
More price levels (rows) give finer resolution but can make the histogram harder to read. 20-30 rows is a good balance.
The POC is not a guaranteed support/resistance level — it is a probability zone. Use it with other confluence factors.
VA Breakouts can be false. Confirm with volume and momentum before trading a breakout above VAH or below VAL.
The delta separation is estimated from candle direction (close vs open), which is an approximation. True tick-level delta requires exchange data not available in Pine Script.
During low-volume periods, the profile may be less representative of true institutional positioning.
Limitations
Volume Profile calculation is computationally intensive. Very large lookback periods (500+ bars) with many price levels may slow chart loading.
The profile is recalculated on each bar, so the POC and VA boundaries can shift as new volume data arrives. This is by design — the profile reflects the most current volume distribution.
Buy/sell volume separation uses candle direction as a proxy, not actual order flow data. This is the standard approximation available in Pine Script.
The indicator draws boxes for the histogram, which counts against PulseWire's drawing object limits. The max_boxes_count is set to 500.
On instruments with inconsistent volume reporting (some forex brokers, illiquid stocks), the profile may not accurately represent true volume distribution.
The context score is a heuristic, not a statistical model. It provides a useful summary but should not be the sole basis for trading decisions.
Technical Implementation
Built with Pine Script v6 using:
Custom volume profile calculation with configurable resolution and lookback
Bull/bear volume separation at each price bin
Value Area expansion algorithm (symmetric outward from POC)
Pre-allocated drawing objects updated via set() methods for performance
Sin-based gradient coloring for smooth histogram visual transitions
barstate.isconfirmed gating on all signal generation
Anti-overlap cooldown system for institutional signals
SMA alignment scoring integrated with profile-based context
Alert conditions for POC Reclaim, VA Breakout, Absorption, Delta Imbalance, and Zone Shift
Originality Statement
This indicator is original in its integration of volume profile analysis with institutional signal detection and context scoring. While volume profile calculation is a known concept, this indicator is justified because:
It combines VP histogram visualization with real-time bull/bear delta separation at each price level, revealing who controls each zone
The context scoring system synthesizes price position, SMA alignment, POC proximity, and delta direction into a single actionable metric
Institutional signal detection (POC Reclaim, Absorption, Delta Imbalance) is derived directly from the volume profile data rather than being a separate overlay
The sin-based gradient coloring and Midnight Neon theme provide clear visual hierarchy without the visual noise common in VP indicators
Pre-allocated drawing objects with set() updates provide significantly better performance than creating/deleting objects each bar
The HVN/LVN classification helps traders quickly identify where price will find support/resistance versus where it will move quickly
Disclaimer
This indicator is provided for educational and informational purposes only. It is not financial advice or a recommendation to buy or sell any financial instrument. Volume Profile analysis shows where volume was traded historically — it does not predict where price will go. The POC, VAH, and VAL are probability zones, not certainties. Past volume distributions do not guarantee future price behavior. Always use proper risk management and never risk more than you can afford to lose. The author is not responsible for any losses incurred from using this indicator.
-Made by officialjackofalltrades
Indicator

Volume Dispersion Field [JOAT]Volume Dispersion Field
Introduction
The Volume Dispersion Field is an open-source non-overlay indicator that provides a comprehensive volume analysis suite combining relative volume classification, buy/sell delta tracking, volume dispersion measurement, climax detection, volume profile calculation, smart money activity analysis, and anomaly detection. Rather than showing a simple volume histogram, this indicator dissects volume into multiple analytical layers that reveal who is participating, how aggressively, and whether the activity is normal or anomalous.
Built with Pine Script v6, the indicator uses custom types for volume state, delta state, dispersion bins, profile data, smart money state, and volume pulse tracking.
Why This Indicator Exists
Standard volume indicators show a single bar per candle. This tells you how much volume occurred but not who was buying or selling, whether the volume is unusual, or how volume is distributed across the price range. This indicator addresses those gaps by providing:
Seven-tier volume classification: Categorizes each bar from Extreme Low to Extreme High relative to the moving average, giving immediate context about whether current activity is normal or exceptional
Delta analysis: Estimates buying and selling volume using candle structure, then calculates smoothed delta and cumulative delta to show the net direction of volume pressure
Volume dispersion: Measures how volume is distributed between the upper and lower halves of the recent price range, revealing whether volume is concentrated at highs (distribution) or lows (accumulation)
Climax detection: Identifies volume spikes that exceed a configurable threshold, often marking exhaustion points or the start of major moves
Smart money analysis: Tracks institutional-sized volume activity and classifies the market phase as Accumulation, Markup, Distribution, or Markdown
Anomaly detection: Uses Z-score analysis to flag statistically unusual volume events that may indicate institutional intervention
Core Components Explained
1. Volume Classification System
Every bar is classified into one of seven categories based on its ratio to the volume moving average:
volMA = ta.sma(volume, volMaLength)
volRatio = volume / volMA
Extreme High (>= 3.0x): Institutional-level activity, potential climax
High (>= 2.0x): Significant above-average interest
Above Average (>= 1.0x): Healthy participation
Average (>= 0.5x): Normal market conditions
Below Average (>= 0.25x): Reduced interest
Low (< 0.25x): Thin liquidity, potential for slippage
Extreme Low: Minimal activity
Each category is color-coded with a distinct color from the Quantum Volume palette, making it instantly visible which bars carry institutional weight and which are retail noise. The high and low volume multiplier thresholds are fully configurable.
2. Delta Analysis
The delta engine estimates buying and selling volume by analyzing candle structure. For a bullish candle (close > open), buying volume is estimated as the proportion of the candle range from low to close, multiplied by total volume:
if close > open
buyVol := volume * (close - low) / (high - low + 0.0001)
sellVol := volume - buyVol
else if close < open
sellVol := volume * (high - close) / (high - low + 0.0001)
buyVol := volume - sellVol
The raw delta (buyVol - sellVol) is smoothed with an EMA and also accumulated over a configurable period to produce cumulative delta. Rising cumulative delta with rising price confirms bullish conviction. Falling cumulative delta with rising price warns of hidden distribution.
The indicator also detects delta divergences — when price moves in one direction but delta moves in the opposite direction over a 10-bar window. These divergences are marked with cross symbols on the chart.
The Volume Dispersion Field panel showing color-coded volume bars, delta histogram, cumulative delta line, and smart money accumulation/distribution arrows with the dashboard displaying all metrics
3. Volume Dispersion Measurement
Dispersion quantifies how volume is distributed between the upper and lower halves of the recent price range. Over the dispersion lookback period (default 50 bars), the indicator sums volume for bars that closed in the upper half versus the lower half:
Positive dispersion (> 20): Volume is concentrated in the upper range — bullish bias, potential distribution if extended
Negative dispersion (< -20): Volume is concentrated in the lower range — bearish bias, potential accumulation if extended
Near zero: Volume is balanced across the range — no clear directional bias
Dispersion is plotted as a filled area chart, providing a visual representation of where the volume weight sits within the price range.
4. Volume Profile and POC
The indicator calculates a simplified volume profile by dividing the recent price range into configurable bins (default 10) and summing volume in each bin. From this profile, it derives:
Point of Control (POC): The price level with the highest volume — acts as a magnet for price
Value Area High (VAH): Upper boundary of the 70% volume concentration zone
Value Area Low (VAL): Lower boundary of the 70% volume concentration zone
The profile type is classified as Normal (balanced), Imbalanced (narrow value area, directional), or Ranged (wide value area, consolidation).
5. Smart Money and Anomaly Detection
The smart money engine analyzes volume distribution across the price range over a 50-bar window. If significantly more volume occurs in the lower 30% of the range while price is below its 50-period SMA, the indicator classifies the phase as Accumulation. If more volume occurs in the upper 30% while price is above the SMA, it classifies as Distribution.
Anomaly detection uses Z-score analysis:
volState.zScore := (volume - volMA) / (volStdDev + 0.0001)
volState.isAnomaly := math.abs(volState.zScore) > anomalyThreshold
Volume events with Z-scores exceeding the threshold (default 3.0 standard deviations) are flagged as anomalies and marked with diamond symbols. These statistically rare events often indicate institutional intervention or major news-driven activity.
6. Market Phase Classification
The indicator classifies the current market phase based on the combination of price direction and volume trend:
Markup: Price rising + volume rising — healthy uptrend
Distribution: Price rising + volume falling — potential top forming
Accumulation: Price falling + volume rising — smart money buying the dip
Markdown: Price falling + volume falling — healthy downtrend
Visual Elements
Volume Histogram: Color-coded bars by classification tier
Volume MA Line: 20-period moving average of volume
High/Low Volume Bands: Reference bands at the high and low multiplier levels with fill
Delta Histogram: Smoothed buy/sell delta with gradient coloring
Cumulative Delta Line: Running sum of delta over configurable period
Dispersion Area: Filled area showing volume distribution bias
Climax Markers: Triangle markers for buy and sell climax events
Anomaly Markers: Diamond markers for statistically unusual volume
Smart Money Arrows: Accumulation (up arrow) and Distribution (down arrow) signals
Volume Pulse: Circle markers when volume exceeds the pulse threshold
Heatmap Background: Subtle background coloring based on volume intensity
Dashboard: 14-row metrics table showing volume category, anomaly status, phase, delta direction, dispersion, and more
Close-up of the dashboard showing volume classification as "HIGH", phase as "Markup", delta as "BULLISH" with "BUY SIDE" flow, and an anomaly detection reading
Input Parameters
Volume Analysis:
Volume MA Length (default 20)
High Volume Multiplier (default 2.0) and Low Volume Multiplier (default 0.5)
Delta Analysis:
Delta Smoothing (default 3)
Cumulative Delta Length (default 20)
Dispersion Settings:
Dispersion Lookback (default 50) and Dispersion Bins (default 10)
Climax Detection:
Climax Threshold (default 2.5) and Climax Lookback (default 50)
Advanced Volume:
Smart Money Concepts, Institutional Activity, Volume Anomalies toggles
Anomaly Threshold (default 3.0 std dev)
Volume Pulse toggle and Pulse Threshold (default 1.5)
Visual Settings:
Volume Profile, Dashboard, Glow Effects, Heatmap toggles
Profile Width and Color Scheme (Quantum, Classic, Professional, Neon)
How to Use This Indicator
Step 1: Monitor the volume classification. Extreme High and High bars deserve attention — they indicate institutional participation. Consecutive high-volume bars in one direction confirm conviction.
Step 2: Check the delta direction. Bullish delta with rising price confirms the move. Bearish delta with rising price (divergence) warns of potential reversal.
Step 3: Watch for climax events. A buy climax (extreme volume + bullish candle) at a resistance level may signal exhaustion. A sell climax at support may signal capitulation.
Step 4: Monitor the market phase. Accumulation phases often precede significant upward moves. Distribution phases often precede declines.
Step 5: Pay attention to anomaly markers. These statistically rare volume events often mark turning points or the start of major institutional campaigns.
Step 6: Use dispersion to understand volume positioning. Positive dispersion (volume at highs) during an uptrend is healthy. Positive dispersion during a downtrend suggests distribution.
Indicator Limitations
Delta estimation uses candle structure as a proxy for actual order flow. It is an approximation, not true Level 2 data.
Volume analysis works best on instruments with reliable, consistent volume data. Forex spot volume from brokers is tick volume, not true exchange volume.
Anomaly detection assumes volume follows a roughly normal distribution. During earnings seasons or major events, multiple "anomalies" may fire in succession.
The volume profile is a simplified calculation using close prices, not a tick-by-tick profile. It provides a useful approximation but not exchange-grade precision.
Smart money phase classification is based on volume distribution patterns, not on actual institutional order data.
Climax detection identifies extreme volume events but does not predict the direction of the subsequent move.
Originality Statement
This indicator is original in its comprehensive, multi-layer approach to volume analysis. While individual volume tools exist, this indicator is justified because:
It combines seven distinct volume analysis methodologies (classification, delta, dispersion, profile, climax, smart money, anomaly) into a unified system
Z-score-based anomaly detection provides a statistical framework for identifying unusual volume that simple threshold methods miss
Market phase classification (Accumulation/Markup/Distribution/Markdown) adds a Wyckoff-inspired context layer to raw volume data
Volume dispersion measurement quantifies the spatial distribution of volume across the price range, a metric not available in standard volume indicators
The delta divergence detection system identifies hidden disagreements between price and volume pressure
The comprehensive dashboard presents 14 metrics simultaneously for holistic volume analysis
Disclaimer
This indicator is provided for educational and informational purposes only. It is not financial advice or a recommendation to buy or sell any financial instrument. Trading involves substantial risk of loss. Volume analysis is a tool for understanding market participation, not a crystal ball for predicting future price movement. Always use proper risk management. The author is not responsible for any losses incurred from using this indicator.
-Made with passion by officialjackofalltrades
Indicator

Double Edge VP🔷 Double Edge VP
━━━━━━━━━━━━━━━━━━━
Two institutional-grade tools. One indicator. Zero compromise.
This script brings together a dynamic Visible Range Volume Profile and a
non-repainting Double Bottom / Double Top pattern detector into a single
seamless overlay.
If you trade with volume context and price action structure together, this
is the only indicator you need on your chart.
─────────────────────────────────────────────────────────────
🔹 MODULE 1 — VISIBLE RANGE VOLUME PROFILE (VRVP)
─────────────────────────────────────────────────────────────
Most volume profiles are anchored to a fixed session or a manually selected
range. This one is different. The VRVP dynamically recalculates on every
incoming tick based on the exact bars currently visible on your screen.
Scroll left. Zoom in. Zoom out. The profile instantly rebuilds itself to
show the volume distribution for whatever price range you are looking at.
This is how professional traders use volume — not locked to a calendar
session, but alive and responsive to the context they are analyzing.
📌 Point of Control (POC)
The price row with the highest traded volume across the entire visible range.
This is the most accepted price level — the market's center of gravity.
Displayed as a bold golden dashed line spanning the full visible range with
a price label on the right edge. Price has a strong tendency to return to
the POC after extended moves away from it.
📌 Value Area — VAH & VAL
The zone containing 70% of all volume traded in the visible range (percentage
is fully adjustable). Based on the standard Auction Market Theory convention
used by professional futures and equity traders worldwide.
• Price trading inside the Value Area = fair value, expect rotation
• Price trading outside the Value Area = potential imbalance and opportunity
VAH and VAL are rendered as cyan dashed lines with a semi-transparent fill
between them, making the zone immediately readable at any zoom level.
📌 High Volume Nodes (HVN)
Rows where volume is at or above a configurable threshold relative to the POC
(default 75%). These are areas where the market spent significant time and
accepted price — they act as strong support and resistance levels. Price
frequently slows down, consolidates, or reverses at HVNs. Highlighted in teal.
📌 Low Volume Nodes (LVN)
Rows where volume is at or below a configurable threshold relative to the POC
(default 20%). These are price inefficiency zones — areas the market moved
through quickly with minimal acceptance. Price tends to travel rapidly through
LVNs in both directions and often returns to fill them later. Highlighted in red.
📌 Bull / Bear Volume Split
Every profile row is colored by directional dominance — green when buyer-
initiated volume exceeds seller-initiated, red when the opposite is true.
This gives you immediate insight into who controlled each price level, not
just how much volume traded there.
📌 Volume Labels Inside Every Bar
Each profile row displays its actual volume quantity directly inside the bar
itself — for example: 13.926K, 437, 2.8K. This is rendered using Pine
Script's box text parameter rather than label objects, which means every
single row is labeled regardless of Pine's 50-label hard cap. No rows are
ever skipped or silently dropped.
📌 Net Delta Box
The row with the largest absolute imbalance between buyer and seller volume
receives a standalone colored overlay showing the signed delta value —
for example -142 or +3.2K. Red background indicates net selling pressure.
Green background indicates net buying pressure. This single number tells
you where the market's sharpest directional commitment occurred.
─────────────────────────────────────────────────────────────
🔹 MODULE 2 — DOUBLE BOTTOM & DOUBLE TOP DETECTOR (DB/DT)
─────────────────────────────────────────────────────────────
Double Bottoms and Double Tops are among the most reliable reversal patterns
in technical analysis — but most detectors repaint, trigger too early, or
draw signals before the pattern is actually confirmed. This one does not.
Every signal in this detector is generated only after three conditions are
simultaneously true:
1. Two comparable pivot lows (or highs) have been confirmed with full
symmetric lookback on both sides — meaning the pivot cannot be detected
until the required number of bars has passed after it.
2. The price difference between the two pivots falls within your defined
tolerance threshold, ensuring genuine structural similarity.
3. The neckline has been broken by a configurable number of consecutive
bar closes in the signal direction — filtering out wicks, spikes, and
intra-bar noise that would otherwise produce false entries.
Once all three conditions are met, the signal is final and will never be
removed or moved to a different bar.
📌 Double Bottom — Bullish Reversal
Detects two pivot lows of similar price within a configurable bar window.
The neckline is automatically set to the highest high between the two bottoms.
A Long signal fires after the required number of consecutive closes above
the neckline. The indicator draws the "W" pattern connectors, DB labels at
both pivot points, a Long ↗ entry label, and the TP level line.
📌 Double Top — Bearish Reversal
Mirror logic of the Double Bottom. Two pivot highs of similar price within
the bar window. The neckline is the lowest low between the two tops. A Short
signal fires after consecutive closes below the neckline. Draws the "M"
pattern connectors, DT labels, a Short ↘ entry label, and the TP level line.
📌 7 TP / SL Calculation Modes
Choose the method that fits your trading style:
Bottom-to-Neckline → TP projected by the full pattern height (classic AMT)
R/R Ratio → Fixed reward-to-risk multiple, e.g. 2:1 or 3:1
ATR → Levels scaled dynamically by Average True Range
Percent → Fixed percentage distance from entry price
Points → Fixed point distance using syminfo.mintick
Pips → Fixed pip distance for forex instruments
Ticks → Fixed tick distance for futures instruments
📌 Trailing Stop Loss
When enabled, the stop loss moves in the direction of the trade as price
moves favorably, locking in profit while never widening risk. The trail
distance is fixed as the original entry-to-SL gap so your initial risk
profile is always preserved.
📌 TP Visual — Offset Dotted Line
The Take Profit level is displayed as a two-part line: a faint dotted
connector from the signal bar leading to a bold dotted TP segment that
begins a configurable number of bars to the right. This keeps the area
directly around the signal bar clean and readable — the same presentation
style used in institutional strategy publications.
─────────────────────────────────────────────────────────────
📊 LIVE STATISTICS TABLE
─────────────────────────────────────────────────────────────
A performance tracking table displays in your chosen screen position and
updates in real time as new patterns are detected across full chart history.
Tracked separately for Double Bottoms and Double Tops:
→ Total patterns detected
→ Trades triggered (neckline-confirmed signals only)
→ TP hits and SL hits (including trailing stop results)
→ Win rate % — color coded green above 50%, red below
→ Bar distance between pattern points: Min / Average / Median / Max
→ Price % difference between pattern points: Min / Average / Median / Max
Table position is fully configurable: Bottom Right, Bottom Left, Top Right,
Top Left, Middle Right, or Middle Left.
─────────────────────────────────────────────────────────────
🔔 ALERTS
─────────────────────────────────────────────────────────────
Two alert conditions fire on bar close — one for Long signals (Double Bottom
confirmed) and one for Short signals (Double Top confirmed).
Both messages are fully customizable and include the standard PulseWire
dynamic placeholders {{ticker}}, {{interval}}, and {{close}} .
─────────────────────────────────────────────────────────────
⚙️ SETTINGS AT A GLANCE
─────────────────────────────────────────────────────────────
All inputs are organized into clearly labeled groups in the settings panel:
Profile → Rows, Value Area %, HVN threshold, LVN threshold
Visual → Profile width, POC / VA / fill / text / delta toggles
Colors → Full color control for every profile element
Detection → Pivot length, bar range, % tolerance, confirm bars,
enable/disable DB and DT independently
TP/SL → Mode selector, ATR settings, % / Points / Pips inputs,
trailing stop toggle, TP line offset and length
Visual → Colors for dots, necklines, signals, pattern lines,
label size, dot size, show/hide toggles
Table → Show/hide, position, text size
Alerts → Custom long and short alert message text
─────────────────────────────────────────────────────────────
📐 TECHNICAL TRANSPARENCY
─────────────────────────────────────────────────────────────
• max_boxes_count = 500 | max_lines_count = 500 | max_labels_count = 500
• VRVP runs only on barstate.islast — profile boxes are cleared and rebuilt
every tick using pooled drawing arrays
• DB/DT runs every bar using individually named persistent var handles —
the two modules share zero drawing objects
• Volume labels use box.new(text=...) to bypass the 50-label hard cap
• All DB/DT signals are strictly non-repainting — confirmed on bar close only
• Trailing stop ratchets forward only, never widens, preserves original risk
─────────────────────────────────────────────────────────────
📌 RECOMMENDED USE
─────────────────────────────────────────────────────────────
This indicator is designed for traders who combine volume analysis with price
action structure. The VRVP provides the context — where volume was accepted,
where it was rejected, and what the market considers fair value right now.
The DB/DT detector provides the trigger — confirmed structural reversals at
levels where the volume profile gives you a reason to act.
Best suited for:
→ Liquid instruments with reliable volume data
(Equities, Futures, Crypto spot markets)
→ Intraday and swing timeframes (1m through Daily)
→ Traders familiar with Auction Market Theory
→ Traders who want pattern detection without repainting
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Use the VRVP to understand where the market has been.
Use the DB/DT detector to anticipate where it is going next.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Disclaimer: This indicator is for educational purposes only. Always practice proper risk management and combine with your own analysis before making trading decisions. Happy trading. Indicator

Institutional Footprint Scanner [JOAT]Institutional Footprint Scanner
Introduction
The Institutional Footprint Scanner (IFS) is an advanced open-source order flow analysis indicator that detects institutional trading activity through multi-dimensional market microstructure analysis. This indicator combines Order Flow Toxicity Index, Volume Profile with Point of Control (POC), Absorption Coefficient analysis, Smart Money Divergence detection, Liquidity Void identification, Footprint Clustering, Tape Reading metrics, and Iceberg Order detection to reveal when large institutional players are actively positioning in the market.
Unlike basic volume indicators that simply show volume bars, IFS quantifies institutional behavior through sophisticated algorithms that analyze aggressive vs passive order flow, volume distribution across price levels, absorption patterns, market depth proxies, and hidden liquidity. The indicator synthesizes these multiple perspectives into a unified confidence score and visualizes institutional activity through a dynamic 9-layer gradient ribbon, color-coded chart overlays, and a comprehensive real-time dashboard.
Why This Indicator Exists
This indicator addresses the challenge of identifying institutional order flow in real-time without access to Level 2 order book data. When large institutional players enter positions, they create detectable signatures across multiple market dimensions. IFS systematically detects these patterns to reveal:
Order Flow Toxicity: Measures aggressive vs passive flow to identify when institutions are aggressively taking liquidity
Volume Profile Analysis: Identifies Point of Control (POC), Value Area High/Low, and high/low volume nodes
Absorption Coefficient: Quantifies institutional absorption strength when high volume produces minimal price movement
Market Microstructure: Analyzes spread dynamics and market depth to detect market maker behavior
Smart Money Divergence: Detects multi-oscillator divergences (RSI, MFI, CVD) indicating institutional positioning
Liquidity Void Detection: Identifies areas with no institutional interest (low volume + narrow range)
Footprint Clustering: Tracks and clusters institutional footprints to identify accumulation/distribution zones
Tape Reading Metrics: Simulates Level 2 order book analysis through aggressive/passive volume classification
Iceberg Order Detection: Identifies hidden institutional liquidity through repeated absorption at same price levels
9-Layer Gradient Ribbon: Visualizes order flow intensity through dynamic color-coded ribbon around institutional VWAP
Institutional Dashboard: Displays 13+ real-time metrics including confidence, toxicity, absorption, POC distance, and more
Each component provides unique intelligence. Toxicity shows aggressive flow, Volume Profile shows price acceptance, Absorption shows institutional positioning, Microstructure shows market maker behavior, Divergence shows smart money positioning, and Clustering shows conviction. Together, they create a comprehensive institutional detection system.
Core Components Explained
1. Order Flow Toxicity Index
The Toxicity Index measures the ratio of aggressive order flow (market orders taking liquidity) vs passive flow (limit orders providing liquidity). The algorithm analyzes each candle's closing position within its range to classify order flow:
Aggressive Buy Flow: Candles that close in the top 25% of their range (above 75% threshold) with volume are classified as aggressive buying. This indicates buyers are urgently taking liquidity by hitting ask prices, pushing price toward the high.
Aggressive Sell Flow: Candles that close in the bottom 25% of their range (below 25% threshold) with volume are classified as aggressive selling. This indicates sellers are urgently taking liquidity by hitting bid prices, pushing price toward the low.
Passive Flow: Candles closing in the middle 50% of their range are classified as passive flow, indicating balanced limit order activity without urgency.
The system accumulates volume-weighted flow over the lookback period (default: 20 bars) and calculates toxicity ratios. When buy toxicity exceeds threshold (default: 0.7 or 70%), it signals institutions are aggressively accumulating. When sell toxicity exceeds threshold, it signals aggressive distribution.
High toxicity indicates institutional urgency - large players are willing to pay the spread and move price to establish positions quickly, typically preceding significant directional moves.
2. Volume Profile with POC Detection
IFS calculates a volume profile by dividing the price range into bins (default: 20 bins) and accumulating volume at each price level over the lookback period (default: 100 bars). This creates a histogram showing which price levels attracted the most trading activity.
How Volume Profile Works:
The algorithm divides the price range (highest high to lowest low) into equal-sized bins. For each historical bar, it determines which bin the price falls into and adds that bar's volume to the bin's total. After processing all bars, the result is a distribution showing volume concentration across price levels.
Point of Control (POC): `The price level with the highest accumulated volume`. This represents the price where the most trading occurred - a critical support/resistance level. Institutions often defend POC levels because they represent fair value where significant positions were established.
Value Area High (VAH) and Value Area Low (VAL): These define the range containing approximately 70% of total volume. The Value Area represents the price range where the majority of trading activity occurred. Price outside the Value Area is considered at extremes.
Trading Significance:
When price approaches POC (within 2% by default), expect strong support or resistance. POC acts as a magnet - price tends to gravitate toward high-volume nodes. When price is above VAH, it's in overbought territory. When below VAL, it's in oversold territory. Inside the Value Area indicates balanced, fair-value trading.
The indicator tracks POC distance in real-time and displays it in the dashboard, alerting traders when price approaches this high-probability reversal zone.
3. Absorption Coefficient Analysis
The Absorption Coefficient quantifies institutional absorption by measuring volume intensity relative to price movement. This reveals when large players are accumulating or distributing positions without moving price significantly.
How Absorption Works:
The algorithm calculates two key ratios:
Body Ratio: Measures the candle body size relative to total range. A small body ratio (close near open) indicates price didn't move much despite trading activity.
Volume Ratio: Compares current volume to the 20-bar average. A high volume ratio (2x, 3x, or more) indicates elevated trading activity.
Absorption Calculation:
Absorption coefficient = Volume Ratio × (1 - Body Ratio)
This formula produces high values when volume is elevated BUT price movement is minimal. This is the signature of institutional absorption - large players are patiently absorbing available liquidity at a specific price level without pushing price away.
Directional Absorption:
The system determines direction based on candle color. Bullish candles (close > open) produce positive directional absorption, indicating institutional buying. Bearish candles produce negative directional absorption, indicating institutional selling.
Trading Significance:
High absorption (above 0.75 by default) indicates institutions are positioning. When combined with high volume but minimal price movement, it suggests large players are absorbing all available liquidity at current levels. This often precedes significant moves once absorption is complete and institutions begin actively moving price.
4. Market Microstructure Analysis
IFS analyzes market microstructure through spread dynamics and depth proxies to detect market maker behavior and order book depth without requiring Level 2 data.
Spread Analysis:
The algorithm calculates the candle range (high - low) as a percentage of close price, then compares it to the average spread over the lookback period (default: 20 bars). The spread z-score measures how many standard deviations current spread is from average.
Tight Spreads (< 70% of average): Indicate market makers are actively providing liquidity. This is normal, healthy market conditions where bid-ask spreads are narrow and order book depth is good. Tight spreads suggest low risk and stable conditions.
Wide Spreads (> 150% of average): Indicate market makers are withdrawing liquidity. This occurs during risk-off events, before major moves, or when institutions are positioning. Wide spreads signal caution - liquidity is drying up and volatility may spike.
Depth Proxy:
The system estimates order book depth by calculating volume relative to spread. High volume with tight spreads indicates deep order book - many limit orders providing liquidity. Low volume with wide spreads indicates shallow order book - few limit orders, high slippage risk.
Market Maker Activity Detection:
The indicator classifies market maker behavior as "Providing" (tight spreads, deep market), "Withdrawing" (wide spreads, shallow market), or "Neutral". Market maker withdrawal often precedes significant moves as institutions clear out liquidity before pushing price.
Trading Significance:
Deep markets with tight spreads are ideal for entries - low slippage, good liquidity. Shallow markets with wide spreads require caution - entries may experience significant slippage. Market maker withdrawal signals potential volatility ahead.
5. Smart Money Divergence Engine
IFS detects divergences across multiple oscillators (RSI, MFI, Cumulative Volume Delta) to identify when smart money is positioning against the prevailing price trend. Divergences reveal hidden strength or weakness not visible in price action alone.
Three Oscillators Analyzed:
RSI (Relative Strength Index): Measures momentum on a 0-100 scale. RSI above 70 indicates overbought, below 30 indicates oversold. RSI divergence shows momentum weakening despite price movement.
MFI (Money Flow Index): Similar to RSI but volume-weighted, measuring money flow pressure. MFI divergence shows money flow weakening despite price movement, indicating institutions are not participating in the move.
CVD (Cumulative Volume Delta): Tracks cumulative buy vs sell volume. Positive CVD indicates net buying pressure, negative indicates net selling. CVD divergence shows order flow weakening despite price movement.
Bullish Divergence Detection:
Occurs when price makes lower lows BUT oscillators make higher lows. This indicates selling pressure is weakening despite lower prices - smart money is accumulating while retail panics. Requires 2+ oscillators confirming for high-probability signal.
Bearish Divergence Detection:
Occurs when price makes higher highs BUT oscillators make lower highs. This indicates buying pressure is weakening despite higher prices - smart money is distributing while retail chases. Requires 2+ oscillators confirming for high-probability signal.
Trading Significance:
Multi-oscillator divergence (2 or 3 oscillators confirming) is one of the most reliable reversal signals. It reveals that while price appears to be trending, the underlying momentum, money flow, and order flow are deteriorating. This often precedes major reversals as smart money has already positioned for the turn.
6. Liquidity Void Detection
Liquidity voids are areas with minimal institutional interest, identified by the combination of low volume and narrow price range. These zones represent areas where institutions are not interested in trading, creating vacuums that price moves through quickly.
How Void Detection Works:
Low Volume Threshold: Volume must be below (average - 1 standard deviation) to qualify as low volume. This ensures volume is statistically low, not just slightly below average.
Narrow Range Threshold: The candle range (high - low) must be less than 50% of the average range. This indicates price consolidation with minimal movement.
Liquidity Void Confirmation: Both conditions must be met simultaneously - low volume AND narrow range. This combination indicates no institutional interest at current price levels.
Consecutive Void Tracking:
The system tracks consecutive void bars. When 3+ consecutive bars meet void criteria, it signals a significant liquidity void. These multi-bar voids are particularly important as they represent extended periods of institutional disinterest.
Trading Significance:
Liquidity voids should be avoided for entries. When price revisits void zones, it typically moves through them quickly with minimal support or resistance - there's no institutional interest to slow price movement. Voids often become gaps on higher timeframes or result in fast, one-directional price action.
Traders should wait for price to exit void zones before entering positions. Voids can also be used as targets - if entering below a void, expect price to move quickly through the void to the next area of institutional interest above it.
7. Footprint Clustering Analysis
IFS tracks institutional footprints (high-confidence absorption or toxicity events) and identifies clusters where multiple footprints occur within a short time period. Clustering indicates sustained institutional conviction rather than isolated events.
How Clustering Works:
Footprint Tracking: Every time the indicator detects institutional activity (absorption + toxicity + high confidence), it records a "footprint" with the bar index and type (buy or sell). The system maintains a rolling history of the last 50 footprints.
Cluster Detection: The algorithm counts how many footprints occurred within the cluster distance (default: 15 bars) of the current bar. If 3+ footprints are found within this window, a cluster is detected.
Dominant Type Classification: The system analyzes the types of footprints in the cluster. If more buy footprints than sell footprints, it's classified as a "Bullish Cluster" (accumulation zone). If more sell footprints, it's a "Bearish Cluster" (distribution zone).
Trading Significance:
Footprint clusters reveal areas where institutions repeatedly positioned over multiple bars. This indicates conviction - not a single large order, but sustained accumulation or distribution.
Bullish clusters (3+ buy footprints within 15 bars) suggest institutions are building long positions in this price zone. These areas often become strong support levels.
Bearish clusters (3+ sell footprints within 15 bars) suggest institutions are building short positions or distributing longs. These areas often become strong resistance levels.
Clusters with 5+ footprints indicate extreme institutional conviction and are the highest-probability support/resistance zones.
8. Tape Reading Metrics
IFS simulates Level 2 order book tape reading by analyzing candle position within its range combined with volume intensity. This reveals whether orders are aggressive (taking liquidity) or passive (providing liquidity) without requiring actual order book data.
How Tape Reading Works:
Candle Position Calculation: Measures where the close is within the candle's range. Position = (close - low) / (high - low). A value of 1.0 means close at high, 0.0 means close at low, 0.5 means close at midpoint.
Aggressive Buy Detection:
Occurs when candle closes in top 20% of range (position > 0.8) AND close > open AND volume exceeds 20-bar average. This indicates buyers aggressively hit ask prices, pushing price to the high. Institutions are urgently taking liquidity on the buy side.
Aggressive Sell Detection:
Occurs when candle closes in bottom 20% of range (position < 0.2) AND close < open AND volume exceeds 20-bar average. This indicates sellers aggressively hit bid prices, pushing price to the low. Institutions are urgently taking liquidity on the sell side.
Passive Absorption Detection:
Occurs when candle closes in middle 20% of range (position 0.4-0.6) AND volume exceeds 1.5x the 20-bar average. This indicates high volume but price didn't move much - institutions are patiently absorbing liquidity at current levels without pushing price away.
Trading Significance:
Aggressive buying/selling indicates institutional urgency - large players are willing to pay the spread and move price to establish positions quickly. This often precedes continued directional movement.
Passive absorption indicates institutional patience - large players are absorbing all available liquidity at a specific price level. This often occurs at support/resistance where institutions defend levels. Once absorption is complete, price typically reverses or breaks through.
9. Iceberg Order Detection
Iceberg orders are large hidden institutional orders that absorb liquidity repeatedly at the same price level. The name comes from the iceberg analogy - only a small portion is visible in the order book, while the bulk remains hidden. IFS detects icebergs by identifying repeated passive absorption at the same price.
How Iceberg Detection Works:
Passive Absorption Tracking: The system monitors for passive absorption events (high volume, mid-range close). Each time passive absorption occurs, it records the price level.
Price Proximity Check: When a new passive absorption event occurs, the algorithm checks if it's at the same price as the previous event. "Same price" is defined as within 0.2% (20 basis points) to account for minor price fluctuations.
Hit Counter: If absorption occurs at the same price level, the hit counter increments. If absorption occurs at a different price (more than 0.2% away), the counter resets and tracking begins at the new price.
Iceberg Confirmation: When 3+ passive absorption events occur at the same price level, an iceberg order is detected. This indicates a large hidden order is repeatedly absorbing all available liquidity at this specific price.
Trading Significance:
Iceberg orders represent major institutional interest at a specific price level. They act as strong support (buy icebergs) or resistance (sell icebergs).
Buy icebergs indicate institutions are defending a price level - every time price drops to this level, the iceberg absorbs all selling pressure. This creates a floor that's difficult to break.
Sell icebergs indicate institutions are capping price - every time price rises to this level, the iceberg absorbs all buying pressure. This creates a ceiling that's difficult to break.
Iceberg detection provides high-probability entry zones (buy near buy icebergs) and exit zones (sell near sell icebergs). When icebergs are finally consumed (price breaks through), it often results in explosive moves as the major support/resistance is removed.
10. Confidence Score System
IFS calculates a multi-factor confidence score to quantify signal quality:
float confidence = 0.0
confidence += strong_absorption ? 25.0 : 0.0
confidence += (toxic_buy_flow or toxic_sell_flow) ? 20.0 : 0.0
confidence += deep_market ? 15.0 : 0.0
confidence += (bull_div or bear_div) ? 20.0 : 0.0
confidence += in_cluster ? 10.0 : 0.0
confidence += near_poc ? 10.0 : 0.0
bool high_confidence = confidence >= min_confidence // Default 75%
Confidence score combines all detection methods. Scores above 75% indicate high-probability institutional activity. Scores above 90% indicate extreme conviction.
11. 9-Layer Gradient Ribbon Visualization
The gradient ribbon visualizes order flow intensity through 9 transparent layers between institutional VWAP and a wave level:
float vwap_inst = ta.vwap(hlc3)
float flow_intensity = math.min(confidence / 100, 1.0)
float toxicity_intensity = math.abs(toxicity_imbalance)
float combined_intensity = (flow_intensity + toxicity_intensity) / 2.0
float wave_ratio = math.min(0.65, combined_intensity)
float wave_level = vwap_inst + ((close - vwap_inst) * wave_ratio)
// 9 layers with progressive transparency
float ribbon_step = (wave_level - vwap_inst) / 9.0
Ribbon color indicates direction (gold for institutional buy, indigo for institutional sell). Ribbon intensity increases with confidence and toxicity. The VWAP line itself changes color dynamically based on institutional activity.
Visual Elements
Institutional VWAP Line: Dynamic color (gold for inst buy, indigo for inst sell, matrix green for toxic buy, hot pink for toxic sell)
9-Layer Gradient Ribbon: Progressive transparency showing order flow intensity around VWAP
Toxicity Heatmap: Background gradient (hot pink to orange) showing toxicity intensity
Absorption Wave Zones: Dynamic boxes showing absorption strength (gold for buy, indigo for sell)
Cluster Intensity Zones: Background coloring (matrix green for bullish, hot pink for bearish) with intensity based on cluster size
Liquidity Void Highlighting: Dark zones indicating areas with no institutional interest
Toxicity Flow Lines: Dynamic gradient lines showing flow direction and intensity
Absorption Flow Lines: Gradient lines showing absorption strength and direction
Microstructure Spread Bands: Circles showing market depth (blue for deep, orange for shallow)
Institutional Footprint Markers: "INST" labels at high-confidence footprints with detailed tooltips
Toxicity Level Labels: "TOXIC BUY/SELL" labels at extreme toxicity events
Absorption Strength Labels: "ABS" labels showing absorption coefficient
Cluster Formation Labels: "CLUSTER" labels marking significant footprint clusters
POC Proximity Labels: "POC" labels when price approaches Point of Control
Liquidity Void Labels: "VOID" labels marking significant voids
Iceberg Order Markers: "◆ ICE" diamond markers at iceberg detection
Market Maker Activity Labels: "MM OUT" labels when market makers withdraw liquidity
Bar Coloring: Gradient bar colors based on institutional activity intensity
Dashboard: Real-time institutional metrics in top-right corner (13+ metrics)
Input Parameters
Order Flow Analysis:
Toxicity Lookback: Period for toxicity calculation (default: 20, range: 10-50)
Toxicity Threshold: Threshold for toxic flow detection (default: 0.7, range: 0.5-0.9)
Volume Profile:
Volume Profile Bins: Number of price bins for volume distribution (default: 20, range: 10-50)
VP Lookback Period: Bars to analyze for volume profile (default: 100, range: 50-200)
POC Sensitivity: Distance threshold for POC proximity (default: 0.02, range: 0.01-0.05)
Market Microstructure:
Spread Analysis Period: Lookback for spread analysis (default: 20, range: 10-50)
Depth Threshold: Multiplier for deep market detection (default: 1.5, range: 1.0-3.0)
Footprint Detection:
Min Absorption Coefficient: Minimum absorption for detection (default: 0.75, range: 0.5-1.0)
Cluster Distance: Bars to consider for clustering (default: 15, range: 5-30)
Minimum Confidence %: Minimum confidence for signals (default: 75%, range: 60-95%)
Visualization:
Show Order Flow Ribbon: Toggle 9-layer gradient ribbon display
Show POC Levels: Toggle Point of Control level display
Show Footprint Markers: Toggle institutional footprint labels and markers
How to Use This Indicator
Step 1: Monitor Dashboard Confidence
Watch the dashboard confidence score in the top-right corner. Scores above 75% indicate high-probability institutional activity. Scores above 90% indicate extreme conviction.
Step 2: Identify Institutional Footprints
Look for "INST" labels (gold for buy, indigo for sell) marking high-confidence institutional footprints. Hover over labels to see detailed metrics including confidence, absorption coefficient, and toxicity.
Step 3: Check Order Flow Toxicity
Monitor the Toxicity row in the dashboard. "BUY" with high value indicates aggressive institutional buying. "SELL" with high value indicates aggressive institutional selling. Toxicity above 0.7 is significant.
Step 4: Analyze Absorption Coefficient
Check the Absorption row in the dashboard. Values above 0.75 indicate strong institutional absorption. Look for "ABS" labels on the chart showing absorption events. High absorption with minimal price movement indicates institutions are positioning.
Step 5: Use Volume Profile Context
Monitor POC Distance in the dashboard. When price approaches POC (distance <2%), expect strong support/resistance. Check Value Area position - price outside value area is at extremes. Look for "POC" labels when price approaches Point of Control.
Step 6: Watch for Footprint Clusters
Look for "CLUSTER" labels indicating 3+ footprints within cluster distance. Bullish clusters suggest institutional accumulation. Bearish clusters suggest institutional distribution. Cluster zones are highlighted with background coloring.
Step 7: Monitor Market Microstructure
Check the Spread and Depth rows in the dashboard. Deep markets with tight spreads indicate healthy liquidity. Shallow markets with wide spreads indicate market maker withdrawal. "MM OUT" labels warn of liquidity withdrawal.
Step 8: Identify Iceberg Orders
Watch for "◆ ICE" diamond markers indicating iceberg order detection. These mark hidden institutional liquidity providing strong support/resistance. Iceberg orders indicate institutions are patiently absorbing at specific price levels.
Step 9: Use Gradient Ribbon for Flow Intensity
The 9-layer gradient ribbon shows order flow intensity. Brighter, more opaque ribbon indicates stronger institutional activity. Gold/green ribbon indicates bullish flow. Indigo/pink ribbon indicates bearish flow.
Step 10: Avoid Liquidity Voids
Watch for "VOID" labels and dark background zones indicating liquidity voids. These areas have minimal institutional interest and often result in fast price movement or gaps. Avoid entering positions in void zones.
Step 11: Confirm with Smart Money Divergence
Check dashboard for divergence signals. Multi-oscillator divergence (2+ oscillators) indicates smart money positioning against the trend. Bullish divergence at lows suggests institutional accumulation. Bearish divergence at highs suggests institutional distribution.
Step 12: Use Tape Reading Metrics
Monitor the Tape row in the dashboard. "Agg Buy" indicates aggressive institutional buying. "Agg Sell" indicates aggressive institutional selling. "Passive" indicates patient absorption at current price levels.
Best Practices
Use on liquid instruments (major forex pairs, large-cap stocks, major crypto) for reliable signals
Institutional footprints work best at price extremes (near POC, outside value area, at support/resistance)
Combine with higher timeframe trend analysis - institutional activity against trend is lower probability
High confidence signals (>90%) have highest win rate but occur less frequently
Footprint clusters indicate institutional conviction - wait for 3+ footprints before acting
Iceberg orders provide strong support/resistance - use as entry/exit zones
Market maker withdrawal (wide spreads) often precedes significant moves - be cautious
Liquidity voids should be avoided for entries - price moves quickly through these zones
Toxic flow above 0.8 indicates extreme institutional urgency - strong directional signal
Absorption coefficient above 0.85 indicates very strong institutional positioning
POC proximity (<2% distance) provides high-probability reversal zones
Smart money divergence requires 2+ oscillator confirmation for reliability
Use gradient ribbon intensity to gauge institutional conviction - brighter = stronger
Dashboard metrics provide context - monitor multiple metrics simultaneously for best results
Combine absorption with toxicity for highest conviction signals
Indicator Limitations
Requires sufficient volume data - may not work well on illiquid instruments or off-market hours
Volume Profile calculation is computationally intensive - optimized to recalculate every 10 bars
Toxicity Index is a proxy for order flow - not actual Level 2 order book data
Absorption Coefficient assumes volume intensity indicates institutional activity - can produce false signals during news events
Market microstructure analysis (spread/depth) is estimated from OHLCV data - not actual order book depth
Iceberg detection requires repeated absorption at same price - may miss single large orders
Footprint clustering requires sufficient historical data - may not work well on new instruments
Smart money divergence adds lag - early signals may not have divergence confirmation yet
Confidence score is multi-factor - high confidence doesn't guarantee immediate price movement
Gradient ribbon visualization requires sufficient price movement to display properly
Dashboard metrics are real-time snapshots and can change rapidly during volatile periods
POC and Value Area calculations require sufficient lookback data - may be less reliable on very low timeframes
Liquidity void detection may produce false signals during consolidation periods
Tape reading metrics simulate order book behavior - not actual tape data
Technical Implementation
Built with Pine Script v6 using:
Order Flow Toxicity Index with aggressive vs passive flow classification
Optimized Volume Profile calculation with POC, VAH, VAL detection (recalculates every 10 bars for performance)
Absorption Coefficient algorithm combining volume intensity and price movement
Market Microstructure analysis with spread z-score and depth proxy calculations
Smart Money Divergence Engine using RSI, MFI, and Cumulative Volume Delta
Liquidity Void Detection with consecutive void bar tracking
Footprint Clustering system with dominant type classification
Tape Reading Metrics simulating Level 2 order book behavior
Iceberg Order Detection through repeated absorption pattern recognition
Multi-factor Confidence Score system (6 components, 0-100% scale)
9-layer gradient ribbon with progressive transparency and dynamic coloring
Institutional VWAP with dynamic color based on activity type
Comprehensive visualization system with 15+ chart overlay types
Real-time dashboard with 13+ institutional metrics
13 alert conditions for institutional events
Dynamic bar coloring based on institutional activity intensity
The code is fully open-source and can be modified to suit individual trading styles.
Originality Statement
This indicator is original in its comprehensive institutional order flow detection approach. While volume analysis and VWAP are established concepts, this indicator is justified because:
It combines 9 distinct institutional detection methods (Toxicity, Volume Profile, Absorption, Microstructure, Divergence, Void Detection, Clustering, Tape Reading, Iceberg Detection) into a unified system
The Order Flow Toxicity Index quantifies aggressive vs passive flow through candle position and volume weighting - a unique approach not found in standard volume indicators
Absorption Coefficient algorithm specifically quantifies institutional absorption by measuring volume intensity relative to price movement
Market Microstructure analysis estimates spread and depth from OHLCV data without requiring Level 2 order book access
Iceberg Order Detection identifies hidden institutional liquidity through repeated absorption pattern recognition
Footprint Clustering system tracks and classifies institutional footprints to identify accumulation/distribution zones
Multi-factor Confidence Score synthesizes 6 independent detection methods into a single 0-100% quality metric
9-layer gradient ribbon provides intuitive visualization of order flow intensity with dynamic coloring based on activity type
Comprehensive dashboard synthesizes 13+ metrics (Confidence, Toxicity, Absorption, POC Distance, Value Area, Spread, Depth, MM Activity, Imbalance, Cluster, Liquidity, Tape, Iceberg) into actionable intelligence
Integration of Volume Profile POC with absorption and toxicity creates unique confluence zones
Tape Reading Metrics simulate Level 2 order book behavior using only OHLCV data
Smart Money Divergence Engine combines RSI, MFI, and CVD for multi-oscillator confirmation
Each component contributes unique information: Toxicity shows aggressive flow, Volume Profile shows price acceptance, Absorption shows institutional positioning, Microstructure shows market maker behavior, Divergence shows smart money positioning, Void Detection shows areas to avoid, Clustering shows conviction, Tape Reading shows order urgency, and Iceberg Detection shows hidden liquidity. The indicator's value lies in presenting these complementary perspectives simultaneously with a unified confidence scoring system and intuitive visualization.
Disclaimer
This indicator is provided for educational and informational purposes only. It is not financial advice. Trading involves substantial risk of loss. Past performance does not guarantee future results. Always use proper risk management and never risk more than you can afford to lose.
-Made with passion by officialjackofalltrades
Indicator

[ A L P H A X ] Range Profile ProAlphaX Range Profile Pro — Volume Profile, POC, Value Area, Delta & HVN Levels
Stop guessing where price wants to go. AlphaX Range Profile Pro builds a full volume profile over any custom bar range, automatically locating the Point of Control, Value Area High, Value Area Low, and High Volume Nodes — so you always know exactly where the market has accepted the most volume and where it is likely to react next. Built for Gold, Forex, Crypto, Indices, and Futures traders on any timeframe.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🔍 What This Indicator Does
Volume profile is the single most powerful tool for understanding where institutional money has been most active. AlphaX Range Profile Pro scans every candle inside your selected range, distributes volume across price bins using a body-and-wick weighted algorithm, and renders a clean horizontal volume profile directly on your chart — complete with POC, Value Area, and optional HVN lines. Every level updates in real time as new bars form.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
⚡ Key Features
📊 Body & Wick Weighted Volume Distribution
Most volume profile tools split volume equally across the full candle range. AlphaX Range Profile Pro uses a precise body-and-wick weighting model — up volume is assigned to bullish body segments, down volume to bearish body segments, and wick volume is split proportionally. The result is a significantly more accurate representation of where buying and selling pressure actually occurred at each price level.
🎯 Point of Control (POC)
The POC line marks the single price level with the highest traded volume in the entire range — the most accepted price by the market. It acts as a magnet for price and is one of the most reliable reaction levels in any profile. The POC is displayed as a solid line with a clearly labelled price tag and volume percentage.
📦 Value Area (VAH & VAL)
The Value Area represents the price range containing a configurable percentage of total volume (default 70%). VAH and VAL are plotted as dashed lines with labels. The Value Area fill box shades the region across your chart for instant visual reference. Price trading inside the Value Area indicates acceptance. Price outside the Value Area indicates potential for a return or a breakout continuation.
🔵🟠 Up / Down Split Display
Each profile row is rendered in two segments — blue for buy-side volume and orange for sell-side volume — showing the delta composition of every price level at a glance. Three display modes are available: Up/Down Split, Total Only, and Delta Only, so you can view the profile in whichever format suits your analysis style.
📍 High Volume Nodes (HVN)
Optional HVN lines mark the top secondary volume levels outside the POC. These are the next most traded price clusters in the range and often act as strong support, resistance, and target levels. The number of HVN lines displayed is fully configurable.
📐 Flexible Range Selection
Choose between Fixed Bars mode to profile the last N candles, or From Date/Time mode to anchor the profile to a specific session or event start. Profile width, placement, and X offset are all adjustable so the profile sits exactly where you need it on your chart.
🖥 Professional Dark Panel Design
The profile renders inside a clean dark glass panel with an accent edge, subtle backdrop, and optional highlight — keeping the profile readable without cluttering your price action. All colors are individually customisable including up volume, down volume, value area fill, panel tint, border, and accent.
📋 Stats Table
A compact on-chart stats table displays all key metrics in one place: range bar count, POC price and volume percentage, VAH and VAL, total up and down volume, and net delta. Table position is configurable to any corner of the chart.
🔔 4 Built-In Alert Conditions — Webhook Ready
Cross Above POC — price closes above the Point of Control
Cross Below POC — price closes below the Point of Control
Cross Above VAH — price closes above the Value Area High
Cross Below VAL — price closes below the Value Area Low
All alerts fire on confirmed bar close. Connect to Telegram, 3Commas, Alertatron, n8n, or any webhook automation service.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
⚙ Settings Reference
Range
Range Mode — Fixed Bars or From Date/Time anchor
Number of Bars — how many bars back to profile (default 150)
Anchor Time — start timestamp for Date/Time mode
Max Lookback — maximum bars scanned in anchor mode
Profile
Row Size (bins) — number of horizontal price bins (default 24). Higher = more granular profile
Value Area Volume % — percentage of volume defining the Value Area (default 70%)
Display Mode — Up/Down Split, Total Only, or Delta Only
Profile Width — horizontal width of the profile in bars
Placement — Left inside chart or Right (future bars)
X Offset — fine-tune horizontal position
Levels
Shade Value Area — fills the VAH–VAL range across the chart
Show POC — toggle POC line
Show VAH / VAL — toggle Value Area lines
Show Range High / Low — toggle outer range boundary lines
Extend Lines — extend levels to the right or keep contained
Show Level Labels — toggle price labels on all levels
Show HVN Lines — toggle High Volume Node lines
HVN Count — number of HVN lines to display (1–5)
Style
Full color controls for POC, VAH, VAL, up volume, down volume, value area fill, panel background, border, accent edge, labels, and highlight tint
Line width controls for POC, VAH/VAL, HVN, and panel border
Row gap — spacing between profile bins
Stats
Stats Table — toggle the on-chart statistics panel
Table Position — Top Right, Top Left, Bottom Right, or Bottom Left
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🚀 How to Use
Add AlphaX Range Profile Pro to any chart — default settings work well across most markets
Set your Range Mode — use Fixed Bars for a rolling profile or anchor to a specific session open
Focus on the POC first — it is the highest conviction level in the entire profile
Use VAH and VAL as your Value Area boundaries — look for rejections at VAH in downtrends and VAL in uptrends
Watch for price to leave and return to the Value Area — these are high-probability mean reversion setups
Enable HVN lines to identify secondary reaction levels within the range
Set alerts on POC and VAH/VAL crosses for automated entry triggers
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
👥 Who This Is For
🥇 Gold (XAUUSD) traders — volume profile is essential for reading institutional order flow in XAU
📈 ICT and Smart Money traders — use POC and Value Area to identify premium, discount, and equilibrium zones
📊 Volume profile traders — a clean, accurate, customisable profile built natively in Pine Script v6
📉 Forex and Index traders — works on all major pairs, US30, NAS100, SPX500, and more
🌍 Crypto traders — ideal for BTC, ETH, and high-volume altcoin analysis
🤖 Algo and bot traders — webhook-ready alerts on all key level crosses
📐 All timeframes — from M1 intraday scalping to Daily and Weekly swing analysis
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📝 Notes
Works on all asset classes — Gold, Forex, Crypto, Futures, Indices, Stocks
Profile recalculates fully on every bar close — always current
No repainting — all levels are based on confirmed historical volume data
Pine Script v6 — built for performance and forward compatibility
All visual elements are individually toggleable
Recommended timeframes: M5, M15, M30, H1, H4, Daily
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Built for traders who trade with the market, not against it. Indicator

Structural Pivot Mapper [JOAT]Structural Pivot Mapper
Introduction
The Structural Pivot Mapper (SPM) is an advanced open-source structural analysis indicator that combines W/M pattern detection, dynamic support/resistance level mapping, pivot point analysis, volume profile integration, and break-retest detection to identify institutional structural pivots and key price levels. This indicator reveals market structure through systematic detection of swing highs/lows, classical chart patterns, and volume-based price levels, providing traders with a comprehensive structural framework for identifying high-probability entry and exit zones.
Unlike basic pivot indicators that simply mark swing points, SPM employs sophisticated pattern recognition algorithms to detect W patterns (bullish reversal), M patterns (bearish reversal), Head & Shoulders formations, and tracks level strength through touch counting and volume analysis. The indicator automatically manages support/resistance levels, removes outdated levels, and highlights Point of Control (POC) from volume profile analysis to show where institutional activity is concentrated.
Why This Indicator Exists
This indicator addresses the challenge of identifying key structural levels where institutional players are likely to defend positions or initiate new trades. Market structure provides the framework for understanding price behavior, and SPM systematically reveals:
W/M Pattern Detection: Identifies classical reversal patterns with strict validation rules
Dynamic Support/Resistance: Tracks pivot-based levels with automatic strength scoring
Level Touch Counting: Quantifies level importance through historical price interaction
Volume Profile Integration: Identifies Point of Control (POC) where maximum volume traded
Break & Retest Detection: Monitors level breaks and subsequent retests for confirmation
Head & Shoulders Patterns: Detects both regular and inverse H&S formations
Smart Level Management: Automatically removes weak levels and maintains only strongest
Each component provides unique intelligence. W/M patterns show reversal zones, pivots show swing structure, touch counting shows level strength, volume profile shows institutional interest, break-retest confirms level validity, and H&S patterns show major reversals.
Core Components Explained
1. W Pattern Detection (Bullish Reversal)
SPM detects W patterns through systematic analysis of 5 pivot points (A-B-C-D-E):
f_detect_w_pattern(float src, int lookback, int offset, bool strict) =>
// Find 5 pivot points forming W shape
// E = current, D = first low, C = middle high, B = second low, A = left high
// Validation: E > C, D < E, D < C, B <= D (strict), B < A
found := a > 0 and a != b and c != 0 and d != 0 and
src > src and src < src and src < src and
(src <= src or not strict) and src < src
W patterns indicate bullish reversal when:
- Price forms double bottom (D and B)
- Middle high (C) is lower than current price (E)
- Second low (B) is higher than or equal to first low (D) in strict mode
- Pattern completes with breakout above middle high (C)
Entry level is at middle high (C), stop loss at second low (B).
2. M Pattern Detection (Bearish Reversal)
M patterns are detected through inverted W logic:
f_detect_m_pattern(float src, int lookback, int offset, bool strict) =>
// Find 5 pivot points forming M shape
// E = current, D = first high, C = middle low, B = second high, A = left low
// Validation: E < C, D > E, D > C, B >= D (strict), B > A
found := a > 0 and a != b and c != 0 and d != 0 and
src < src and src > src and src > src and
(src >= src or not strict) and src > src
M patterns indicate bearish reversal when:
- Price forms double top (D and B)
- Middle low (C) is higher than current price (E)
- Second high (B) is lower than or equal to first high (D) in strict mode
- Pattern completes with breakdown below middle low (C)
Entry level is at middle low (C), stop loss at second high (B).
3. Dynamic Support/Resistance Level Management
SPM tracks pivot-based support and resistance levels with automatic management:
float pivot_high = ta.pivothigh(high, pivot_left, pivot_right)
float pivot_low = ta.pivotlow(low, pivot_left, pivot_right)
// Store levels in arrays
if not na(pivot_high) and barstate.isconfirmed
if array.size(resistance_levels) < max_levels
array.push(resistance_levels, pivot_high)
array.push(resistance_touches, 1)
else if auto_cleanup
array.shift(resistance_levels) // Remove oldest
array.push(resistance_levels, pivot_high)
Level strength is calculated through touch counting:
1 touch: New level (weak)
2 touches: Confirmed level (moderate)
3+ touches: Strong level (high importance)
Levels are automatically removed when max_levels is reached and auto_cleanup is enabled.
4. Level Touch Counting & Strength Scoring
SPM tracks how many times price interacts with each level:
float zone_size = atr_value * zone_width
if high >= level - zone_size and high <= level + zone_size
array.set(resistance_touches, i, array.get(resistance_touches, i) + 1)
Strength score (0-100) is calculated based on:
Touch Count (0-40 points): More touches = stronger level (8 points per touch, max 40)
Age Factor (0-30 points): Older levels = more established (based on level_strength_period)
Volume Factor (0-30 points): Higher volume at level = more institutional interest
Only levels with 2+ touches and strength >60 are displayed to reduce clutter.
5. Volume Profile & Point of Control (POC)
SPM calculates volume profile to identify price levels with maximum trading activity:
f_volume_profile(int bins, int lookback) =>
float price_range = price_high - price_low
float bin_size = price_range / bins
// Accumulate volume in 20 price bins
for i = 0 to lookback - 1
float bar_price = hlc3
int bin = math.floor((bar_price - price_low) / bin_size)
array.set(vp_volumes, bin, current_vol + bar_vol)
// Find POC (highest volume bin)
float poc_price = array.get(vp_prices, poc_bin)
POC represents the price level where most volume traded - typically where institutions have significant positions. Value Area High (VAH) and Value Area Low (VAL) define the range containing 70% of volume.
6. Break & Retest Detection
SPM monitors when price breaks through resistance levels and subsequently retests:
// Detect break (close above resistance)
if not was_broken and close > level and close <= level
array.set(level_broken, i, true)
array.set(break_bar_index, i, bar_index)
// Detect retest (price returns to broken level within 3-20 bars)
if was_broken
int break_bar = array.get(break_bar_index, i)
bool is_retest = bar_index - break_bar >= 3 and bar_index - break_bar <= 20
bool touching_level = math.abs(close - level) < atr_value * 0.5
if is_retest and touching_level
label.new(bar_index, level, "RT", color=c_support_strong)
Successful retests confirm level validity and often provide high-probability entry opportunities.
7. Head & Shoulders Pattern Detection
SPM detects both regular and inverse Head & Shoulders formations:
f_detect_head_shoulders(float src, int lookback) =>
// Find 3 pivot highs: left shoulder, head, right shoulder
float ph1 = ta.pivothigh(src, lookback, lookback)
float ph2 = ta.pivothigh(src, lookback, lookback)
float ph3 = ta.pivothigh(src, lookback, lookback)
// Validate: head higher than shoulders, shoulders roughly equal
if ph2 > ph1 and ph2 > ph3 and math.abs(ph1 - ph3) < (ph2 - ph1) * 0.3
found := true
neckline := math.min(low , low )
H&S patterns are major reversal formations indicating trend exhaustion and potential reversal.
Visual Elements
Support Lines: Blue horizontal lines with strength-based width (2-3px)
Resistance Lines: Pink horizontal lines with strength-based width (2-3px)
Level Labels: "S: price " for support, "R: price " for resistance (N = touch count)
Pivot Markers: Small circles at swing highs (pink) and lows (blue)
POC Line: Yellow dotted line showing Point of Control from volume profile
Retest Markers: "RT" labels when price retests broken levels
Pattern Lines: Optional dashed lines showing W/M pattern structure (disabled by default)
Dashboard: Real-time metrics showing resistance count, support count, pattern status, POC price
Input Parameters
Pattern Detection:
Pattern Range: Lookback period for W/M detection (default: 9)
Pattern Offset: Additional bars to check (default: 0)
Strict Pattern Validation: Enforce stricter pattern rules (default: false)
Pivot Settings:
Pivot Left Bars: Bars to left of pivot (default: 6)
Pivot Right Bars: Bars to right of pivot (default: 1)
Show Pivot Labels: Toggle pivot markers (default: true)
Level Management:
Maximum Levels: Max support/resistance levels to track (default: 3)
Level Strength Period: Lookback for strength calculation (default: 50)
Auto-Cleanup Old Levels: Remove oldest when max reached (default: true)
Visualization:
Show Support/Resistance Zones: Toggle level display (default: true)
Zone Width (ATR %): Width of level zones (default: 0.5)
Show Pattern Lines: Toggle W/M pattern visualization (default: false)
How to Use This Indicator
Step 1: Identify Key Structural Levels
Look for blue (support) and pink (resistance) lines. Thicker lines with higher touch counts are strongest.
Step 2: Monitor Pattern Formations
Watch dashboard for "W Pattern" (bullish) or "M Pattern" (bearish) status. These indicate potential reversal zones.
Step 3: Check POC Proximity
Yellow POC line shows where maximum volume traded. Price often gravitates toward POC or bounces from it.
Step 4: Wait for Break & Retest
When price breaks resistance and retests (RT label), it confirms level as new support. High-probability long entry.
Step 5: Use Level Strength for Confidence
Levels with 3+ touches are most reliable. Dashboard shows total support/resistance count.
Step 6: Combine with Higher Timeframe Structure
Use SPM on multiple timeframes. Daily/weekly levels are stronger than intraday levels.
Best Practices
Focus on levels with 3+ touches - these have proven institutional interest
W/M patterns work best at major support/resistance levels
POC acts as magnet - price often returns to POC after deviating
Break-retest setups have highest win rate when combined with volume confirmation
Disable pattern lines to reduce chart clutter - use dashboard for pattern status
Adjust zone width based on instrument volatility (higher ATR = wider zones)
Auto-cleanup keeps chart clean but may remove valid older levels
H&S patterns are most reliable on higher timeframes (4H+)
Level strength score >70 indicates institutional-grade level
Smart spacing prevents overlapping levels - only strongest levels shown
Indicator Limitations
Pattern detection requires sufficient historical data and clear pivot formation
W/M patterns can produce false signals during strong trends
Level touch counting is historical - doesn't predict future touches
Volume profile requires consistent volume data - may not work on illiquid instruments
Break-retest detection has time window (3-20 bars) - may miss delayed retests
Maximum level limit means some valid levels may be removed
Pivot detection lags by pivot_right bars - not real-time
H&S patterns are rare and require specific market conditions
Level strength scoring is multi-factor but still subjective
Smart spacing may hide valid levels that are too close to stronger levels
Technical Implementation
Built with Pine Script v6 using:
Custom W/M pattern detection with 5-point validation
Pivot-based support/resistance tracking with arrays
Touch counting system with ATR-based zone detection
Multi-factor level strength scoring (touches + age + volume)
Volume profile calculation with 20-bin price distribution
POC detection through maximum volume identification
Break-retest monitoring with time window validation
Head & Shoulders pattern detection (regular and inverse)
Smart level spacing to prevent overlapping (1.5 ATR minimum)
Automatic level cleanup when maximum reached
Dynamic line and label management to prevent memory issues
Real-time dashboard with 4 key metrics
The code is fully open-source and can be modified to suit individual trading styles.
Originality Statement
This indicator is original in its comprehensive structural analysis approach. While pivot detection and pattern recognition are established concepts, this indicator is justified because:
It combines W/M pattern detection with dynamic support/resistance management in a unified system
The multi-factor level strength scoring (touches + age + volume) provides quantitative level assessment
Volume profile integration with POC detection adds institutional perspective to structural analysis
Break-retest detection with time window validation automates a manual trading technique
Smart level spacing prevents chart clutter while maintaining strongest levels
Head & Shoulders detection (both regular and inverse) adds major reversal pattern recognition
Automatic level cleanup maintains chart readability without manual intervention
Integration of classical patterns (W/M, H&S) with modern volume analysis creates layered confirmation
Each component contributes unique information: W/M patterns show reversals, pivots show structure, touch counting shows strength, volume profile shows institutional interest, break-retest confirms validity, H&S shows major reversals, and strength scoring quantifies importance. The indicator's value lies in presenting these complementary perspectives simultaneously with intelligent level management.
Disclaimer
This indicator is provided for educational and informational purposes only. It is not financial advice. Structural levels and patterns do not guarantee price behavior. Trading involves substantial risk of loss. Past performance does not guarantee future results. Always use proper risk management and never risk more than you can afford to lose.
-Made with passion by officialjackofalltrades Indicator

Liquidity Thermal Map [BigBeluga]🔵 OVERVIEW
Liquidity Thermal Map visualizes where the highest traded volume has accumulated across price levels over a fixed lookback period.
Instead of plotting classic volume profiles with bars, the indicator builds a horizontal thermal heatmap directly on the chart, highlighting areas of strong and weak liquidity using smooth color gradients.
This makes it easy to identify high-interest price zones, volume clusters, and the dominant Point of Control (PoC) at a glance.
🔵 CONCEPTS
Price-Level Volume Aggregation — The indicator divides the entire price range of the selected lookback period into fixed horizontal bins.
Volume Binning — Each bin accumulates total traded volume whenever price closes near its midpoint.
Thermal Gradient Mapping — Volume intensity is translated into a color gradient, forming a continuous liquidity heatmap.
Point of Control (PoC) — The price level with the highest accumulated volume is highlighted using a distinct PoC color.
🔵 FEATURES
Liquidity Heatmap — Displays horizontal volume concentration directly on the chart background.
Fixed Resolution Bins — Uses 30 evenly spaced price levels to maintain a clean and readable structure.
Adaptive Lookback Period — Volume is calculated only within the user-defined historical window.
Two-Stage Color Gradient —
• Low volume → transparent / muted tones
• High volume → stronger, warmer colors
PoC Highlighting — The most traded price level is emphasized with a dedicated PoC color and volume label.
Range-Aware Scaling — Automatically adapts to the highest and lowest prices within the lookback period.
🔵 BUY / SELL LIQUIDITY SCALE
Directional Liquidity Breakdown — The vertical scale on the right side summarizes how total traded volume is distributed between bullish and bearish candles within the analyzed range.
Buy Liquidity (Green) — Represents the total traded volume during candles that closed higher than they opened.
This approximates aggressive buying pressure and shows how much volume has accumulated below the current price.
Sell Liquidity (Red) — Represents the total traded volume during candles that closed lower than they opened.
This reflects periods where selling pressure dominated and shows how much volume accumulated above the current price.
Liquidity Percentage — Each side displays the percentage share of total traded volume.
This helps quickly identify which side of the market controlled the majority of activity within the lookback range.
Volume Imbalance — The Imbalance value at the top shows the absolute difference between total buy and sell liquidity.
A larger imbalance suggests stronger directional dominance from either buyers or sellers.
Interactive Hover Details — Hovering over the liquidity bars reveals a tooltip showing the exact accumulated volume for that section (for example total liquidity below the current price).
This allows traders to quickly inspect how much volume has been concentrated on each side of the market.
Visual Pressure Gauge — The vertical red/green bar acts as a quick visual gauge of market pressure, allowing traders to instantly see whether buyers or sellers dominate liquidity within the selected range.
PoC Highlighting — The most traded price level is emphasized with a dedicated PoC color and volume label.
🔵 HOW TO USE
Identify Liquidity Clusters — Bright or dense zones indicate prices where significant trading activity occurred.
Support & Resistance Context — High-volume zones often act as reaction areas for price.
PoC Tracking — The PoC shows where the market spent the most time and volume.
Breakout Awareness — Moves away from dense liquidity areas may signal expansion into lower-volume zones.
Contextual Analysis — Use the heatmap as a background liquidity reference alongside trend or structure tools.
🔵 VISUAL LOGIC
Cooler Colors — Lower volume participation.
Warmer Colors — Higher volume concentration.
PoC Label — Displays the exact volume value of the strongest liquidity level.
🔵 CONCLUSION
Liquidity Thermal Map provides a clean, intuitive way to visualize where liquidity truly exists across price.
By transforming raw volume data into a continuous thermal layer, it helps traders quickly locate dominant trading zones, identify high-interest price levels, and better understand how volume is distributed within the market.
Indicator

Wraith Protocol | PUT & CALL VP LevelsThis is a dual Volume Profile indicator built in Pine Script v5. It computes two independent volume profiles — one for a "PUT" lookback window and one for a "CALL" lookback window — and extracts the three key auction market theory levels from each: the Value Area High (VAH), the Point of Control (POC), and the Value Area Low (VAL). These levels are drawn as persistent horizontal lines across the chart with labeled price annotations, a colored histogram, and a summary data table.
The PUT and CALL naming convention frames these levels as options-market analog reference zones — the PUT profile represents a longer-term bearish/support structure, while the CALL profile represents a shorter-term bullish/resistance structure. Neither pulls actual options data; the names are a conceptual framing applied to standard price/volume data.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Section-by-Section Breakdown
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1. Inputs
Volume Profile group:
Profile Rows — how many horizontal price buckets to divide the range into (default 24). More rows = finer resolution.
Histogram Max Width (bars) — the visual width of the histogram in bar units (default 30).
Show Histogram — toggle the visual bars on/off.
PUT Levels group:
PUT Lookback Bars — how many bars back to include in the PUT profile (default 150, i.e. a longer-term window).
PUT Value Area % — the percentage of total volume that defines the Value Area (default 70%). Standard TPO/VP convention uses 70%.
Show PUT Levels — toggle all PUT lines/labels on/off.
PUT VAH / POC / VAL color pickers — individual line color controls.
CALL Levels group:
Same structure as PUT but defaults to a shorter 70-bar lookback. This creates a faster-moving, nearer-term profile.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Style group:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Extend Lines Right — extends all lines to the right edge of the chart (infinite extend).
Label Size — controls the text size of all price labels (tiny → huge).
2. Volume Profile Engine (same logic runs twice — for PUT and CALL)
Step 1 — Find the high/low range of the lookback window.
The script loops backward over the specified number of bars and finds the highest high and lowest low in that window. This becomes the price range for the profile.
Step 2 — Distribute volume into rows (buckets).
The range is divided into rows equally-spaced price buckets. For every bar in the lookback window, its volume is distributed proportionally across whichever buckets its high-low range overlaps. The formula is:
allocated volume = bar volume × (overlap length / bar range)
If a bar's range is zero (doji), it uses the bucket step size as a fallback to avoid division by zero.
Step 3 — Find the POC.
The bucket with the highest accumulated volume is the Point of Control (POC) — the price level where the most trading activity occurred.
Step 4 — Build the Value Area.
Starting from the POC, the script expands outward one bucket at a time, always adding the larger neighbor first (up or down), until the cumulative volume in the growing range reaches the target Value Area % of total volume. The top of the upper boundary is the VAH; the bottom of the lower boundary is the VAL.
3. Histogram Drawing
On the last bar (barstate.islast), old histogram boxes are deleted and new ones are drawn. Each row gets a colored box whose width is proportional to its volume relative to the max-volume row. Opacity varies by context:
POC row → fully opaque (transparency = 0)
Inside Value Area → semi-transparent (40)
Outside Value Area → mostly transparent (70)
PUT histogram uses red; CALL histogram uses teal. Each starts at bar_index - lookback + 1 so the histogram aligns to its respective lookback window.
4. Lines & Labels
All six lines (PUT VAH/POC/VAL, CALL VAH/POC/VAL) are deleted and redrawn on every last-bar execution, which means they update in real time as new bars form.
VAH lines — solid, width 2, extending right
POC lines — dashed, width 2, extending right
VAL lines — solid, width 2, extending right
Labels are placed at histogram_left + histogram_width + 1, i.e. just to the right of each histogram. Label text includes a human-readable role name ("PUT VAH DN SELLER EXIT", "PUT VAL BUYER EXIT", "CALL VAH BUYER EXIT", "CALL VAL DN SELLER EXIT") plus the live price value formatted to 2 decimal places.
The label role convention follows auction market logic:
Level Interpretation PUT VAHDownside seller exhaustion — sellers who pushed price into the PUT range may exit here PUT VAL Buyers who entered in the PUT range may exit here CALL VAH Buyers who pushed price into the CALL range may exit here CALL VAL Downside sellers may exit here, near the base of CALL value
5. Data Window Plots
Six plot() calls with display=display.data_window expose all six levels in PulseWire's Data Window panel. They are not drawn on the chart (no display.pane) — they exist purely for external access, alerts, or Pine Strategy consumption.
6. Info Table (Bottom Right)
A persistent 3-column × 8-row table summarizes everything in one glance:
Row Content Header "Level", "PUT (Nb)", "CALL (Nb)"VAHPUT and CALL VAH prices POC PUT and CALL POC prices VAL PUT and CALL VAL prices Spread VAH − VAL for each profile (range of the Value Area)PUT Bias "ABOVE POC" / "BELOW POC" relative to current close — green or red CALL Bias Same for CALL profile VA %The configured value area percentage for each profile
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Key Design Decisions:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Why barstate.islast only? Volume profiles are computationally expensive. Running them on every bar would be slow and generate thousands of orphaned drawing objects. By running only on the last bar and deleting/redrawing all objects, the script stays clean and efficient.
Why two separate lookbacks? The asymmetry between a 150-bar PUT profile and a 70-bar CALL profile is intentional. It creates structural levels at two different temporal horizons — analogous to how options traders think about near-term (gamma) vs. longer-term (delta) positioning zones.
Why var declarations for lines/labels? var preserves the last-assigned object reference across bars so the script can explicitly delete the previous versions before drawing new ones — preventing object accumulation.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Usage Notes:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Works on any instrument and timeframe; the lookback bars are bar-count based, not time-based.
Lowering Profile Rows to 10–15 gives broader, more tradeable zones. Increasing it to 40+ gives precision but may over-fit to noise.
The "Extend Lines Right" toggle is useful when you want clean horizontal levels extending into the future for forward reference.
The PUT/CALL bias rows in the table provide a quick structural read: if price is above both POCs, the profile structure is broadly bullish; below both is broadly bearish; split is a contested/transitional market.
Ref: My previous Script- Wraith Protocol
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
IMPORTANT NOTES
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
• This indicator is for informational and educational purposes only.
It does not constitute financial advice.
• Past performance of any level or signal does not guarantee future results.
• Always use proper risk management and combine with your own analysis.
• The Estimate field is a directional bias tool, not a trade signal.
• Best used as a confluence layer alongside your primary strategy. Enjoy !! Indicator

Indicator

Range Finder & Profile [UAlgo]Range Finder & Profile is a structured market range detection tool that combines pivot based range discovery with an embedded volume profile. Its purpose is to identify areas where price begins to rotate inside a defined boundary, track whether that balance remains intact, and then summarize how volume was distributed inside the completed range once price finally exits it.
The script starts by using pivot highs and pivot lows to define potential horizontal boundaries. When a valid upper and lower reference exist, and price is trading inside those bounds without already breaking them, the script opens a candidate range. From that point onward, it keeps monitoring the structure bar by bar, checking whether the range survives long enough to become confirmed and whether price remains accepted inside it.
What makes this indicator especially useful is that it does not stop at simply drawing a box around consolidation. Once a range becomes confirmed, it also builds a row based internal profile of all activity inside that zone. When the range eventually breaks, the script calculates Point of Control, Value Area High, and Value Area Low, then draws a compact profile directly inside the range. This transforms a simple horizontal box into a more informative market acceptance map.
The result is a tool that can help traders study balance, distribution, and eventual expansion. It is useful for identifying clean consolidation structures, understanding where the heaviest participation occurred inside a range, and interpreting whether the breakout happened after meaningful internal acceptance or after a less developed structure.
🔹 Features
🔸 Pivot Based Range Discovery
The script uses pivot highs and pivot lows to establish potential range boundaries. This creates a structure that reacts to meaningful swing points rather than arbitrary rolling highs and lows. As a result, the detected ranges tend to reflect actual market rotation more naturally.
🔸 Clean Range Validation
A new range is only created when price is already trading inside the proposed top and bottom boundaries and when no bar in the candidate history has already closed outside those levels. This helps prevent invalid or already broken ranges from being accepted.
🔸 Overlap Protection
The script tracks where the last completed range ended and avoids creating a new one that starts inside an already closed structure. This reduces repeated overlap and keeps the chart cleaner.
🔸 Minimum Range Confirmation
Not every detected range is immediately treated as valid. The structure must survive for a minimum number of bars before it becomes confirmed. This helps filter out weak or short lived consolidations.
🔸 Embedded Volume Profile
Each confirmed range contains its own internal volume profile. The vertical height of the range is divided into configurable rows, and every bar contributes volume into the relevant price segments. This creates a compact distribution map inside the actual range boundaries.
🔸 Proportional Volume Allocation
The script does not simply drop full bar volume into a single row unless the bar has no height. Instead, when a candle spans multiple rows, its volume is distributed proportionally across the overlapped sections. This produces a more realistic representation of participation across the range.
🔸 Point of Control Detection
After the range is complete, the script finds the profile row with the highest accumulated volume. This row becomes the Point of Control, giving the user a quick view of the price area with the strongest concentration of activity.
🔸 Value Area Calculation
The script expands outward from the Point of Control and accumulates neighboring rows until the selected percentage of total range volume is reached. This produces Value Area High and Value Area Low, which highlight the area where most participation occurred.
🔸 Gradient Range Background
The active and completed range is drawn with a multi slice background gradient between the upper and lower colors. This improves readability and gives the zone a more polished visual structure.
🔸 Histogram Inside the Range
When a range is confirmed and completed, the script draws horizontal histogram bars inside the zone. Rows inside the value area use a dedicated color, while rows outside the value area use a separate profile color. This makes internal acceptance easy to read visually.
🔸 Live Active Range Updates
While the range is still active and not yet broken, the background extends forward in time with every new bar. Once the range becomes confirmed, profile and value area calculations are refreshed continuously until the breakout occurs.
🔸 Practical Market Structure Use
This makes the indicator useful for consolidation analysis, acceptance and rejection studies, and breakout context. A trader can see not only where price paused, but also how volume built inside that pause before expansion occurred.
🔹 Calculations
1) Pivot Detection for Range Anchors
float ph = ta.pivothigh(high, lengthInput, lengthInput)
float pl = ta.pivotlow(low, lengthInput, lengthInput)
if not na(ph)
recentPH := ph
recentPHIndex := bar_index
if not na(pl)
recentPL := pl
recentPLIndex := bar_index
This is the starting point of the whole script.
The code asks PulseWire to detect a pivot high and a pivot low using the selected swing length. A pivot high appears only after enough bars have formed on both sides of the swing, and the same logic applies to a pivot low. Because of that, pivots are confirmed reference points rather than instant highs or lows.
When a valid pivot high is found, the script stores two things.
The pivot price itself in recentPH
The bar index where that pivot actually occurred in recentPHIndex
The same is done for pivot lows through recentPL and recentPLIndex .
This means the script always keeps track of the latest confirmed upper swing and the latest confirmed lower swing. Those two swing references become the raw ingredients for a possible trading range.
2) Candidate Range Creation Logic
bool canCreateRange = na(activeRange) and not na(recentPH) and not na(recentPL)
if canCreateRange
float top = math.max(recentPH, recentPL)
float bot = math.min(recentPH, recentPL)
if top > bot and close <= top and close >= bot
int sIndex = math.min(recentPHIndex, recentPLIndex)
int barsBack = bar_index - sIndex
This block decides whether the script is even allowed to start a new range.
First, canCreateRange requires three conditions:
there must be no currently active range,
there must be a recent pivot high,
and there must be a recent pivot low.
If those conditions are met, the script builds a provisional upper bound and lower bound using the greater and smaller of the two pivot prices. Then it checks whether current price is actually inside that proposed range. This is important because it prevents the script from creating a range that price has already escaped.
The code also finds sIndex , which is the earlier of the two pivot bar indices. That earlier point becomes the true starting location of the range. Then barsBack measures how many bars ago the range began.
So at this stage, the script has a full candidate structure:
an upper price,
a lower price,
and a starting point in time.
3) Overlap Prevention and Broken History Check
bool isOverlapping = false
if sIndex <= lastClosedRangeEndIndex
isOverlapping := true
if not isOverlapping
bool broken = false
if barsBack > 0
for i = 0 to barsBack
if close > top or close < bot
broken := true
break
This section filters out bad candidates before a range is created.
First, the script checks whether the proposed start index falls inside or before the end of the last completed range. If it does, the new candidate is marked as overlapping and rejected. This keeps the indicator from repeatedly generating new boxes on top of old structures.
Next, even if there is no overlap, the script scans every bar from the proposed start point up to the present. It checks whether any close moved above the top boundary or below the bottom boundary. If that happened, the candidate is marked as broken.
This is a very important quality filter. It means the script does not simply connect two pivots and call that a range. It also verifies that price actually stayed accepted inside those boundaries over the full candidate history.
4) Initializing the Range Object
activeRange := RangeData.new(
startIndex = sIndex,
startTime = time ,
endIndex = bar_index,
endTime = time,
topPrice = top,
bottomPrice = bot,
isActive = true,
isConfirmed = false,
totalVolume = 0.0,
pocPrice = na, pocVolume = 0.0, pocIndex = -1, vah = na, val = na,
bgBoxes = na, histBoxes = na, pocLine = na, vahLine = na, valLine = na, pocLabel = na, vahLabel = na, valLabel = na
)
activeRange.initProfile(profileRows)
Once the script is satisfied that the candidate is valid, it creates a new RangeData object.
This object stores all important information about the range:
where it starts,
where it currently ends,
its top price,
its bottom price,
whether it is still active,
whether it is confirmed,
and all profile related values such as total volume, Point of Control, Value Area High, and Value Area Low.
Immediately after creating the object, the script calls initProfile(profileRows) . That method prepares the internal volume profile rows that will later hold the distribution data.
So this is the moment where the script moves from pure detection into active tracking.
5) Building the Internal Profile Rows
method initProfile(RangeData this, int rowsCount) =>
float step = (this.topPrice - this.bottomPrice) / rowsCount
this.profile := array.new()
for i = 0 to rowsCount - 1
float pBottom = this.bottomPrice + (i * step)
float pTop = pBottom + step
this.profile.push(ProfileRow.new(pTop, pBottom, 0.0))
This method divides the height of the range into a fixed number of rows.
First, it calculates step , which is the height of one profile row. That is simply the total range height divided by the selected number of profile rows.
Then it creates an empty profile array and fills it row by row. Each row stores:
its upper price,
its lower price,
and the total volume accumulated in that row.
At this moment, every row starts with zero volume. The profile is just an empty framework waiting to receive bar by bar contributions.
This design is important because the script is not using a prebuilt PulseWire volume profile function. It is constructing the profile manually, row by row, inside the exact range boundaries.
6) Adding Volume Into the Profile
method addVolume(RangeData this, float bHigh, float bLow, float bVol) =>
float overlapHigh = math.min(bHigh, this.topPrice)
float overlapLow = math.max(bLow, this.bottomPrice)
if bHigh == bLow and bHigh <= this.topPrice and bHigh >= this.bottomPrice
for i = 0 to this.profile.size() - 1
ProfileRow row = this.profile.get(i)
if bHigh >= row.priceBottom and bHigh <= row.priceTop
row.volumeTotal += bVol
this.totalVolume += bVol
break
else if overlapHigh > overlapLow
float overlapHeight = overlapHigh - overlapLow
float totalHeight = bHigh - bLow
float effectiveVol = totalHeight > 0 ? bVol * (overlapHeight / totalHeight) : bVol
for i = 0 to this.profile.size() - 1
ProfileRow row = this.profile.get(i)
float rowOverlapHigh = math.min(overlapHigh, row.priceTop)
float rowOverlapLow = math.max(overlapLow, row.priceBottom)
if rowOverlapHigh > rowOverlapLow
float rowOverlapHeight = rowOverlapHigh - rowOverlapLow
float rowRatio = rowOverlapHeight / overlapHeight
float addedVol = effectiveVol * rowRatio
row.volumeTotal += addedVol
this.totalVolume += addedVol
This is one of the most important calculations in the whole script.
The goal here is to take a candle and distribute its volume into the profile rows that the candle actually overlaps.
First, the script limits the candle to the range boundaries using overlapHigh and overlapLow . This ensures that only the part of the candle inside the range contributes to the profile.
Then two cases are handled.
If the candle has no height, meaning bHigh == bLow , the full volume is assigned to the single row that contains that exact price.
If the candle does have height, the script calculates how much of the candle actually overlaps the range. That overlapping height becomes the valid section for profile allocation. Then, for each profile row, the script measures how much of that valid section overlaps the row. Volume is distributed proportionally according to that overlap share.
This is much more accurate than placing the full candle volume into a single row. It means tall candles contribute volume across the price levels they truly passed through, which creates a more realistic internal distribution.
7) Filling the New Range With Historical Volume
if barsBack >= 0
for i = 0 to barsBack
float bVol = na(volume ) ? 1.0 : volume
activeRange.addVolume(high , low , bVol)
Right after a new range is created, the script goes back through all bars that belong to that range from its start until the current bar.
For each of those bars, it reads the volume and sends the bar high, bar low, and volume into addVolume .
This step is essential because it backfills the profile immediately. Without it, the range would start with an empty volume profile and would only accumulate data from future bars. Instead, the script reconstructs the whole internal history of the range as soon as the range is created.
Also notice the fallback 1.0 when volume data is missing. That ensures the script can still function on symbols where actual volume may not be available.
8) Range Confirmation and Break Detection
bool isBroken = close > activeRange.topPrice or close < activeRange.bottomPrice
if (bar_index - activeRange.startIndex) >= minRangeLen
activeRange.isConfirmed := true
Once a range is active, the script keeps evaluating two key questions on every bar.
The first question is whether the range is broken.
If the current close moves above the top or below the bottom, the range is considered finished.
The second question is whether the range has lasted long enough to be trusted.
If the number of bars since the range started is at least the user selected minimum, isConfirmed becomes true.
This creates a useful distinction between a candidate range and a confirmed range. A short structure can exist visually for a while, but it only becomes analytically meaningful after it survives long enough.
9) Live Updating While the Range Is Active
if not justCreated
float barVol = na(volume) ? 1.0 : volume
activeRange.addVolume(high, low, barVol)
if activeRange.isConfirmed
activeRange.calcValueArea(valAreaPct)
activeRange.drawProfile(colorBgTop, colorBgBot, colorProfile, colorProfileVA, colorPOC, colorVA)
else
activeRange.updateBgRight(time, colorBgTop, colorBgBot, colorBorder)
This block explains how the range evolves in real time.
If the current bar is not the same bar where the range was created, the script adds the latest candle volume into the profile. That keeps the internal distribution up to date bar by bar.
Then the script behaves differently depending on confirmation state.
If the range is already confirmed, it recalculates the value area and redraws the full profile. This means Point of Control, Value Area High, Value Area Low, and the histogram are all updated continuously as long as price remains inside the range.
If the range is not yet confirmed, the script only extends the background box to the current time. In other words, the market structure is still being monitored, but the full profile is not drawn until the range has proven itself.
10) Point of Control Discovery
float maxVol = -1.0
int pIndex = -1
for i = 0 to this.profile.size() - 1
ProfileRow row = this.profile.get(i)
if row.volumeTotal > maxVol
maxVol := row.volumeTotal
pIndex := i
this.pocIndex := pIndex
this.pocVolume := maxVol
ProfileRow pocRow = this.profile.get(pIndex)
this.pocPrice := (pocRow.priceTop + pocRow.priceBottom) / 2.0
This is the first phase inside the value area calculation.
The script scans every profile row and looks for the one with the largest accumulated volume. That row becomes the Point of Control row.
Once that row is found, the script stores:
the row index in pocIndex ,
the largest row volume in pocVolume ,
and the row midpoint price in pocPrice .
So the Point of Control is not guessed from the center of the range or from price action alone. It is derived directly from the heaviest profile row.
11) Expanding to Build the Value Area
float targetVol = this.totalVolume * (pct / 100.0)
float currentVol = maxVol
int upIndex = pIndex + 1
int downIndex = pIndex - 1
while currentVol < targetVol and (upIndex < this.profile.size() or downIndex >= 0)
float upVol = upIndex < this.profile.size() ? this.profile.get(upIndex).volumeTotal : -1.0
float downVol = downIndex >= 0 ? this.profile.get(downIndex).volumeTotal : -1.0
if upVol == -1.0 and downVol == -1.0
break
Here the script begins with the Point of Control row and tries to accumulate enough neighboring volume to reach the selected percentage of total range volume.
First, it calculates targetVol , which is the amount of total volume required for the value area. For example, if the input is 70 percent, the target is 70 percent of the full profile volume.
The process then starts from the Point of Control row. currentVol begins at the Point of Control volume itself. From there, the script looks one row up and one row down and keeps expanding until the target is reached or no more rows remain.
This is the classic logic of building a value area around the highest participation zone.
12) Choosing Whether to Expand Up or Down
bool addUp = false
if upVol > downVol
addUp := true
else if downVol > upVol
addUp := false
else
int distUp = upIndex - pIndex
int distDown = pIndex - downIndex
if distUp < distDown
addUp := true
else if distDown < distUp
addUp := false
else
addUp := true
This section decides which side should be added next to the value area.
If the row above the current zone has more volume than the row below, the script expands upward.
If the row below has more volume, it expands downward.
If both sides have the same volume, the script breaks the tie by comparing distance from the Point of Control. If distance is also equal, it defaults upward.
This matters because value area construction should not be arbitrary. It should expand toward the heaviest nearby participation first. That keeps the final value area centered around the most meaningful volume concentration.
13) Final VAH and VAL Calculation
int finalUp = math.min(upIndex - 1, this.profile.size() - 1)
int finalDown = math.max(downIndex + 1, 0)
this.vah := this.profile.get(finalUp).priceTop
this.val := this.profile.get(finalDown).priceBottom
After expansion is complete, the script converts the final upper and lower included rows into actual price boundaries.
vah becomes the top of the highest included row.
val becomes the bottom of the lowest included row.
These two values form the value area envelope, showing the price zone that contains the selected percentage of all volume traded inside the range.
So the final value area is not a fixed distance from Point of Control. It adapts to the actual row by row distribution.
14) Drawing the Gradient Range Background
method drawBg(RangeData this, color cBgTop, color cBgBot, color cBorder, int rTime) =>
if not na(this.bgBoxes)
for b in this.bgBoxes
b.delete()
this.bgBoxes := array.new()
int bgSlices = 10
float sliceStep = (this.topPrice - this.bottomPrice) / bgSlices
for i = 0 to bgSlices - 1
float bBot = this.bottomPrice + (i * sliceStep)
float bTop = bBot + sliceStep
this.bgBoxes.push(box.new(this.startTime, bTop, rTime, bBot, border_color=na, bgcolor=sliceCol, xloc=xloc.bar_time))
This method handles the visual background of the range.
Before drawing anything new, the script deletes previously drawn background boxes. Then it splits the range vertically into ten slices. Each slice receives an interpolated color between the selected bottom background color and top background color.
Finally, each slice is drawn as a time based box from the range start to the chosen right edge time.
The result is a smooth vertical color transition across the range body, which makes the zone easier to read and visually separates upper and lower sections.
15) Drawing the Histogram, POC, VAH, and VAL
if this.isConfirmed
float maxVol = this.pocVolume
if maxVol > 0
int rangeTimeWidth = math.max(rightTime - this.startTime, 1000)
int maxTimeWidth = math.round(rangeTimeWidth * 0.35)
for i = 0 to this.profile.size() - 1
ProfileRow row = this.profile.get(i)
if row.volumeTotal > 0
float widthRatio = row.volumeTotal / maxVol
int boxTimeWidth = math.round(maxTimeWidth * widthRatio)
int boxLeftTime = rightTime - boxTimeWidth
bool inVA = (row.priceTop <= this.vah and row.priceBottom >= this.val)
color finalHistCol = inVA ? histVaCol : histCol
this.histBoxes.push(box.new(boxLeftTime, t, rightTime, b, border_color=na, bgcolor=finalHistCol, xloc=xloc.bar_time))
this.pocLine := line.new(this.startTime, this.pocPrice, rightTime, this.pocPrice, color=pocCol, style=line.style_solid, width=2, xloc=xloc.bar_time)
this.vahLine := line.new(this.startTime, this.vah, rightTime, this.vah, color=vaCol, style=line.style_dashed, width=1, xloc=xloc.bar_time)
this.valLine := line.new(this.startTime, this.val, rightTime, this.val, color=vaCol, style=line.style_dashed, width=1, xloc=xloc.bar_time)
This is the drawing engine for the completed profile.
For each row with volume, the script calculates a width ratio relative to the Point of Control volume. Rows with more volume receive wider histogram boxes. Rows with less volume receive narrower boxes.
That width is converted into time space, so the histogram grows leftward from the right edge of the range. This creates a compact in range horizontal profile.
The script also checks whether each row lies inside the value area. If it does, the row uses the value area histogram color. If it does not, it uses the normal profile color. This makes the high participation area visually distinct.
Finally, the script draws three key lines across the full width of the range:
Point of Control,
Value Area High,
and Value Area Low.
These lines convert the internal profile data into easy to read structure references on the chart.
16) What Happens When the Range Breaks
if isBroken
activeRange.isActive := false
activeRange.endIndex := bar_index
activeRange.endTime := time
if not activeRange.isConfirmed
if not na(activeRange.bgBoxes)
for b in activeRange.bgBoxes
b.delete()
else
activeRange.calcValueArea(valAreaPct)
activeRange.drawProfile(colorBgTop, colorBgBot, colorProfile, colorProfileVA, colorPOC, colorVA)
lastClosedRangeEndIndex := bar_index
activeRange := na
This block defines the final lifecycle of a range.
When price closes outside the range boundaries, the active structure is terminated. The script records the ending bar and ending time, then checks whether the range had ever become confirmed.
If the range was never confirmed, its background is deleted and the structure is discarded. This prevents weak or short lived ranges from leaving unnecessary clutter.
If the range was confirmed, the script performs a final value area calculation and profile draw on the completed structure. It also stores the ending index so future ranges do not overlap with this one.
Then the active range is cleared from memory, which allows the script to start searching for the next valid structure. Indicator

Liquidity Depth [UAlgo]Liquidity Depth is a price distribution and participation map designed to show where market activity has concentrated across a recent trading range. Instead of focusing only on candle by candle direction, the script builds a structured profile of how volume has been allocated across price levels inside a rolling lookback window. The result is a visual depth curve that helps identify areas where buyers or sellers may have shown stronger relative presence.
The indicator works by taking the highest and lowest prices inside the selected lookback, dividing that range into evenly spaced bins, and then assigning bar volume into those bins using one of two distribution models. This transforms raw volume into a spatial map of activity, allowing traders to see where liquidity has accumulated rather than simply when it appeared.
A central strength of the script is that it separates participation into buy side and sell side estimates using candle direction as a practical heuristic. Bullish candles contribute to the buy side profile and bearish candles contribute to the sell side profile. While this is not exchange level bid ask data, it creates a highly usable approximation of directional participation that is often more intuitive for chart based analysis.
The profile is drawn directly on the chart as a right side structure with smoothed depth curves, shaded fills, a Point of Control line, contextual range framing, and automatically detected strong liquidity pockets. This makes the tool especially useful for traders who want to study where activity is clustering, where resistance or support may be forming, and which parts of the recent range are attracting stronger participation.
Because the output is overlay based and visually compact, Liquidity Depth can be used in a wide variety of workflows. It can complement trend analysis, help frame pullback entries, identify acceptance and rejection zones, or simply provide a clearer understanding of where recent market interest has been strongest.
🔹 Features
🔸 Price Range Liquidity Mapping
The script scans a rolling lookback window, identifies the active price range, and divides that space into a configurable number of bins. Each bin becomes a small price segment where participation is accumulated. This produces a clear distribution style view of liquidity across the full recent range.
🔸 Two Distribution Modes
The indicator supports two ways of assigning volume into the profile.
Close Bin places the full bar volume into the single bin that contains the closing price. This creates a sharper and more concentrated structure that emphasizes where bars finished.
Wick Spread distributes the bar volume evenly across all bins touched by the candle from low to high. This produces a broader and more spatially balanced profile that better represents the full path of the bar through price.
These two modes give the user control over whether the profile should be more precise and concentrated or more inclusive and range aware.
🔸 Buy Side and Sell Side Separation
The script maintains separate depth values for buying and selling participation. Bullish candles add volume to the buy side and bearish candles add volume to the sell side. This creates two distinct distribution curves that help reveal whether the lower part of the range is showing stronger buying interest or whether the upper part is attracting stronger selling interest.
🔸 Smoothed Liquidity Curves
Instead of plotting raw bin values only, the script applies curve smoothing to the side distributions. This creates a cleaner, more readable shape that reduces visual noise and highlights the underlying structure of participation. The result is a profile that feels fluid and analytical rather than fragmented.
🔸 Glow Enhanced Curve Rendering
The current build uses a glow style rendering around the main liquidity curves. This improves visual separation on the chart and makes strong participation bulges easier to recognize at a glance, especially when the profile is viewed on darker chart themes.
🔸 Automatic Strong Pocket Detection
One of the most practical parts of the script is its ability to detect strong liquidity pockets. These are clusters of consecutive bins where smoothed participation exceeds a chosen strength threshold. When found, the script highlights the zone and labels it as a strong buy pocket or strong sell pocket. These pockets can be useful for identifying areas of acceptance, defense, or possible future reaction.
🔸 Point of Control Highlighting
The indicator finds the price bin with the highest total participation and marks it as the Point of Control. This is the most active price area inside the profile and often serves as an important reference for equilibrium, attraction, or repeated interaction.
🔸 Range Frame and Midpoint Context
A visual frame is drawn around the active profile range, including the highest level, the lowest level, and the midpoint. This gives the distribution a clear structure and helps the user understand where participation is concentrated relative to the center of the recent range.
🔸 Side Summary Readout
The script prints a compact summary that shows estimated buy side and sell side percentages, along with total side volumes. This provides a quick interpretation layer so the user can understand the current balance of participation without needing to inspect each curve manually.
🔸 Theme Adaptive Colors
Colors are selected dynamically according to the chart background tone. This helps the profile remain readable across both light and dark themes while preserving clear differentiation between buy side, sell side, frame lines, and Point of Control.
🔸 Efficient Object Management
All boxes, lines, fills, and labels are refreshed on the last visible bar so the profile stays clean and up to date. Internal object arrays are actively cleared and rebuilt, which keeps the display organized and avoids uncontrolled accumulation of chart objects.
🔹 Calculations
1) Active Range Construction
The script begins by defining the working range from the highest high and lowest low across the selected lookback window. This creates the vertical space where the full profile will be built.
The total span is then divided into the configured number of bins, which creates evenly spaced price segments from the bottom of the range to the top. Each bin stores its lower boundary, upper boundary, midpoint, buy volume, sell volume, and total volume.
In practical terms, this means the indicator converts the recent market range into a structured ladder of price levels so activity can be measured spatially.
2) Bin Initialization
Once the range is known, every bin is reset and rebuilt. Each bin receives:
its lower boundary,
its upper boundary,
its midpoint,
and empty participation values for buy, sell, and total activity.
This reset process ensures that the profile always reflects only the current rolling window rather than carrying stale values from older bars.
3) Volume Assignment Logic
For every bar inside the lookback, the script reads the volume and determines whether the candle is bullish or bearish. From there, distribution depends on the selected mode.
With Close Bin , the full bar volume is assigned to the bin that contains the close. If the candle is bullish, that volume is counted on the buy side. If the candle is bearish, it is counted on the sell side.
With Wick Spread , the script finds every bin touched between the candle low and candle high. The bar volume is divided evenly across those crossed bins. That distributed share is then assigned entirely to the buy side for bullish candles or entirely to the sell side for bearish candles.
This approach creates a practical estimate of where participation occurred across price, while also preserving directional context.
4) Total Participation and Point of Control
After all bars are processed, each bin contains a buy volume, a sell volume, and a total volume equal to the sum of the two. The script then scans the full array of bins to find the highest total value. The bin with that maximum total becomes the Point of Control.
The Point of Control represents the most concentrated participation zone inside the profile and is drawn as a dedicated horizontal reference line.
5) Midpoint Split and Side Totals
The active range midpoint is calculated as the average of the range high and range low. This midpoint is used as the divider between the lower half and upper half of the profile.
For summary purposes, buy side totals are accumulated from bins at or below the midpoint, while sell side totals are accumulated from bins above the midpoint. The script also records the highest buy side bin value and the highest sell side bin value.
This design gives the profile a simple structural interpretation:
lower range strength is associated with buying participation,
upper range strength is associated with selling participation.
That makes the summary especially useful for understanding whether the range is showing stronger support style accumulation below or stronger supply style pressure above.
6) Smoothing Engine
To reduce jaggedness, the script smooths each side of the profile with a local weighted kernel built from five neighboring bins. The center bin carries the highest influence, adjacent bins carry moderate influence, and outer bins carry smaller influence.
The smoothed result is then blended with the raw bin value according to the user selected smoothing factor. A low smoothing value preserves more of the original structure, while a high smoothing value creates a softer and more continuous curve.
This process helps reveal the true shape of participation without overreacting to isolated bin spikes.
7) Curve Projection and Shape Refinement
Once a side is smoothed, its value is normalized against the maximum strength of that side. The normalized result is converted into horizontal width inside the selected profile width. This is what determines how far the curve extends to the right from its anchor point.
The script also applies an additional running refinement to the horizontal curve position from one bin to the next. This makes the drawn path more fluid and helps eliminate abrupt lateral jumps between neighboring levels.
The final effect is a polished depth curve that communicates intensity clearly while remaining visually smooth.
8) Strong Pocket Detection
Strong liquidity pockets are found by scanning for consecutive bins where normalized smoothed participation exceeds the pocket threshold.
For the upper half of the profile, the script searches for strong sell side runs.
For the lower half of the profile, the script searches for strong buy side runs.
When a qualifying run lasts for at least the minimum required number of bins, a zone is drawn across that price region and labeled accordingly. The horizontal size of the zone is linked to the peak strength found inside that run.
This means the pocket logic is not simply marking a single peak. It is identifying sustained participation clusters, which often carry more analytical value than isolated extremes.
9) Visual Frame and Range Guides
The script adds a top guide at the range high, a bottom guide at the range low, and a midpoint guide through the center of the profile. These references help the user interpret the shape of liquidity in relation to the broader active range.
A curve concentrated near the midpoint suggests balance or repeated acceptance.
A strong bulge in the upper section can imply stronger supply style participation.
A strong bulge in the lower section can imply stronger demand style participation.
10) Summary Metrics
The summary label presents estimated buy side and sell side percentages along with total side volumes. These percentages are derived from the midpoint based side totals described above.
This gives the user a fast read on the internal balance of the profile without needing to inspect the full shape manually. It is especially useful when comparing one instrument or one session structure to another. Indicator

Swing Volume Profile Pro [WillyAlgoTrader]📊 Swing Volume Profile Pro is an overlay indicator that builds a true volume distribution profile for each completed swing leg — distributing each candle's volume across price bins proportionally to how much of the candle's range overlaps each bin (TPO-like allocation), then calculating the Point of Control (highest-volume price), Value Area (70% of volume around POC), buy/sell delta per bin, and swing VWAP. The result is a volume profile that maps exactly to the swing structure, not to arbitrary time intervals.
Most volume profile tools on PulseWire are session-based or fixed-period — they split time into equal windows (daily, weekly, or N-bar segments) and build a profile for each. This means a single profile can contain parts of two different swing legs going in opposite directions, mixing bullish and bearish volume into one distribution. The POC and Value Area from such profiles reflect the time window, not the price structure.
This indicator solves that by anchoring each profile to the actual swing structure: a profile starts at one pivot (swing high or swing low) and ends at the next. Every bar within that swing leg contributes its volume to the bins of that specific leg. The POC tells you where the most trading occurred during that exact directional move. The Value Area shows the 70% concentration zone for that move. The delta profile shows which bins were buy-dominant vs sell-dominant within that leg. This structural anchoring makes the volume data directly relevant to the swing you're analyzing.
🧩 WHY THESE COMPONENTS WORK TOGETHER
A volume profile alone tells you where trading concentrated — but without structural context, you don't know whether that concentration happened during an impulse or a correction. A swing detector alone tells you direction changed — but without volume data, you don't know whether the reversal had participation behind it.
This indicator connects them into a single analytical unit:
Pivot detection → Swing leg identification → Candle-range volume distribution → POC/VA/VWAP/Delta calculation → Structural visualization
The swing detector (ta.pivothigh/pivotlow) defines the boundaries of each leg. The volume distribution engine allocates each candle's volume to the correct price bins based on the candle's actual range overlap (not just its close). The POC identifies the price where the market spent the most effort during that specific move. The Value Area defines the consensus price zone. The delta shows whether buyers or sellers dominated at each price level. And the swing VWAP gives the fair value for the entire move. Together, these components answer: "during this specific swing move, where did the market agree on value, and who was in control?"
🔍 WHAT MAKES IT ORIGINAL
1️⃣ Candle-range volume distribution (TPO-like allocation).
Standard volume profiles assign each candle's entire volume to a single bin (usually the close price). This creates distortion: a wide-range candle that spans 10 bins puts all its volume in one, leaving 9 bins empty. This indicator distributes volume proportionally:
For each candle, for each bin:
overlap = max(0, min(candle_high, bin_high) − max(candle_low, bin_low))
portion = overlap / candle_range
allocated_volume = candle_volume × portion
A candle spanning 5 bins distributes its volume across all 5, weighted by how much of its range falls within each bin. This produces a smooth, accurate volume distribution that reflects where the market actually traded within each candle, not just where it closed.
Additionally, each candle is classified as bullish (close ≥ open) or bearish (close < open), and its allocated volume is tracked separately in buy and sell arrays. This enables the delta profile: at every price bin, you can see whether buy or sell volume dominated.
2️⃣ Swing-anchored profiles (not time-anchored).
Profiles are built between confirmed pivot highs and pivot lows detected by ta.pivothigh(high, swingLen, swingLen) and ta.pivotlow(low, swingLen, swingLen). Each completed swing leg (from one pivot to the next) becomes its own volume profile with independent POC, Value Area, delta, and VWAP. The bins span the exact swing range (min to max price within the leg), and only bars within the leg contribute volume.
A noise filter skips swings smaller than 0.3× ATR(200) — preventing micro-swings from generating meaningless profiles.
3️⃣ Value Area calculation using the CME expansion method.
The Value Area is computed using the standard market profile algorithm: starting from the POC bin, expand alternately upward and downward, adding whichever adjacent bin has more volume, until 70% of total swing volume is captured.
In code: starting with accumulated = volume , the algorithm compares volume vs volume . If the upper bin has more volume (or equal), it expands upward and adds that volume. Otherwise, it expands downward. This continues until accumulated ≥ totalVolume × 0.70. The result is VA High (top of the uppermost included bin) and VA Low (bottom of the lowermost included bin).
This is the same expansion method used by the CME for market profile — it's not a simple percentile calculation. The VA wraps around the POC in the direction of volume concentration, which may be asymmetric.
4️⃣ POC zone with persistent extension.
The POC is not just a single line — it includes the full price bin (top and bottom boundaries) displayed as a shaded zone. This zone extends rightward from the end of the swing leg until the next profile appears, providing a forward-looking support/resistance reference. When a new swing completes, the previous POC zone is trimmed to the boundary of the new profile, and the new zone begins extending.
This means you always see the most recent POC zone extending into current price action — if price is trading within the POC zone, it's at the highest-volume price of the last completed swing. If price breaks above/below the zone, it's leaving the area of strongest volume consensus.
5️⃣ Buy/sell delta profile.
When enabled, each profile bin is colored by its buy/sell imbalance: green if buy volume ≥ sell volume, red if sell volume dominates. A bullish swing with mostly green bins confirms strong demand throughout the move. A bullish swing with red bins at the top suggests sellers are absorbing the advance — potential exhaustion. This buy/sell classification is based on candle direction (close ≥ open = buy candle), applied proportionally through the same distribution mechanism as total volume.
6️⃣ Swing VWAP per leg.
A separate VWAP is calculated for each swing leg: sum(typical_price × volume) / sum(volume), where typical_price = (high + low + close) / 3 for each bar within the leg. This gives the volume-weighted fair value for that specific move — distinct from session VWAP or rolling VWAP. If price retests a previous swing VWAP, it's returning to the average traded price of that move.
7️⃣ Dual visualization modes: histogram profile + heatmap.
Two display modes for the volume distribution:
— Profile mode (default): horizontal histogram bars extending from the swing boundary, with a polyline outline. Width proportional to volume at each bin. The highest-volume bin (POC) is highlighted.
— Heatmap mode : fills the entire swing range with color-gradient boxes. Higher volume = more opaque/saturated color. Lower volume = more transparent. This gives a density map of where volume concentrated within the swing.
Both modes support delta coloring. The profile mode includes volume text on the POC bin.
8️⃣ Real-time forming swing profile.
The indicator doesn't wait for a swing to complete — it continuously builds a profile for the current forming swing leg. As each new bar adds volume, the real-time profile updates: bins are recalculated, POC may shift, Value Area may expand. This profile is drawn in a neutral color (gray) to distinguish it from confirmed profiles. When the swing completes (next pivot confirmed), the real-time profile is replaced by the finalized historical profile in the swing's directional color.
9️⃣ Comprehensive tooltip data on swing labels.
Each swing pivot label (▲ for bullish, ▼ for bearish) contains a tooltip with complete swing statistics: total volume, buy volume, sell volume, delta percentage, POC price, Value Area range, and swing VWAP. This compresses all the analytical data into a single hover interaction — you can quickly review any historical swing's volume profile data without cluttering the chart.
⚙️ HOW IT WORKS — CALCULATION FLOW
Step 1 — Swing detection: ta.pivothigh(high, swingLen, swingLen) and ta.pivotlow(low, swingLen, swingLen) detect confirmed pivots. Pivots are confirmed swingLen bars after they form. Direction flips when a new pivot type appears (swing high → bearish direction, swing low → bullish direction).
Step 2 — Swing leg boundaries: When direction flips, the completed leg is defined from the previous pivot index to the current pivot index. The swing range (top − bottom) is divided into N bins (default 20). A noise filter requires swing range > 0.3× ATR(200).
Step 3 — Volume distribution: For each bar in the leg, the candle's volume is distributed across bins proportional to range overlap. Buy/sell arrays track bullish vs bearish candle volume separately. Typical price × volume is accumulated for VWAP.
Step 4 — POC: The bin with the highest total volume is identified. Its center price becomes POC, and its upper/lower boundaries define the POC zone.
Step 5 — Value Area: Starting from the POC bin, expand alternately toward the bin with more volume (up or down) until 70% of total swing volume is accumulated. The top of the upper boundary and bottom of the lower boundary define VA High and VA Low.
Step 6 — Visualization: Profile boxes are drawn with width proportional to volume/maxVolume × halfSpan. The polyline outline traces the profile shape. POC zone extends rightward until the next profile. VA lines span the leg. VWAP line marks the fair value.
Step 7 — Real-time update: On the last bar, the current forming swing is profiled with the same algorithm. All real-time drawings are deleted and recreated each bar (delete-before-create pattern) for clean updates.
📖 HOW TO USE
🎯 Quick start:
1. Add the indicator — profiles appear on each completed swing leg
2. The widest bar in each profile = POC (highest volume price)
3. Blue dashed lines = Value Area boundaries (70% of volume)
4. Green/red bin colors = buy vs sell dominance at each price level
5. The POC zone (shaded) extends rightward — watch how price interacts with it
👁️ Reading the chart:
— 🟢 Green profile = bullish swing leg (low → high)
— 🔴 Red profile = bearish swing leg (high → low)
— ⚫ Gray profile = current forming swing (not yet confirmed)
— 🔵 Dark blue line + shaded zone = POC (extends rightward as S/R reference)
— 🔵 Blue dashed lines = Value Area High / Low
— 🟣 Purple solid line = Swing VWAP (fair value for the leg)
— 🟢🔴 Bin colors (delta mode) = buy vs sell dominance per price level
— ▲/▼ labels at pivots = swing reversals (hover for full volume data)
📊 Key analysis patterns:
— POC at swing extreme : heavy volume at the high/low of the swing → potential exhaustion (climax volume)
— POC in middle of swing : most volume at fair value → healthy acceptance, trend likely to continue
— Wide Value Area : volume distributed broadly → uncertainty, ranging behavior
— Narrow Value Area : volume concentrated tightly → strong consensus, potential breakout energy stored
— Delta divergence : bullish swing with red bins at top → sellers absorbing the rally → watch for reversal
— Price retesting POC zone : if the extended POC zone acts as support/resistance, the volume consensus from the previous swing is holding
📊 Dashboard fields:
— Trend: current swing direction (Bullish ▲ / Bearish ▼)
— POC: point of control price for the current/last swing
— VA 70%: value area range (low — high)
— VWAP: swing VWAP price
— Volume: total volume in the swing leg
— Delta: buy vs sell imbalance percentage (positive = buy dominant)
— Timeframe and version
⚙️ KEY SETTINGS REFERENCE
⚙️ Main:
— Swing Detection Length (default 21): pivot lookback — higher = larger swings, lower = more frequent
— Profile Bins (default 20): price resolution — higher = finer detail, lower = smoother
🎨 Visual:
— Volume Profile (default On): histogram display
— Heatmap (default Off): color-gradient fill instead of histogram
— Delta Profile (default On): buy/sell coloring per bin
— ZigZag (default On): swing connector lines (Dotted/Dashed/Solid)
— POC Line (default On): point of control with extending zone
— POC Zone Fill (default On): shaded POC bin
— Value Area (default On): VA High/Low lines
— Swing VWAP (default Off): volume-weighted average per leg
— Swing Labels (default On): pivot markers with tooltip data
— Reversal Signals (default Off): confirmed swing direction change markers
— Auto / Dark / Light theme
🔧 Advanced:
— POC Width (default 2): POC line thickness
— VA Width (default 1): Value Area line thickness
🔔 Alerts
— 🟢 SWING BULLISH — ticker, price, timeframe, POC, delta %
— 🔴 SWING BEARISH — same fields
Both support plain text and JSON webhook format. Bar-close confirmed.
⚠️ IMPORTANT NOTES
— 🚫 No repainting of confirmed profiles. Historical profiles are built on barstate.isconfirmed when a swing direction flip occurs. Once drawn, they don't change. The real-time forming profile updates each bar (by design — it's a live calculation), but confirmed profiles are final.
— 📊 Volume data required. The profile, POC, Value Area, delta, and VWAP calculations all depend on volume data. On instruments without volume (some forex pairs), the profiles will be flat (all bins equal) and the analysis loses its meaning. The indicator works best on instruments with reliable volume: crypto, stocks, futures.
— 📐 The candle-range distribution is an approximation of intrabar volume distribution. True tick-level distribution would require tick data, which PulseWire doesn't provide. The proportional overlap method is the best approximation available and significantly more accurate than assigning all volume to the close price.
— ⚖️ The delta classification (buy vs sell) uses candle direction (close ≥ open), not actual trade-level order flow. A bullish candle's volume is classified as "buy" and a bearish candle's as "sell." This is a standard approximation used by most volume analysis tools on candle data.
— 📏 Swing Detection Length controls profile granularity. Length 21 produces medium-term swing profiles. Length 5–10 produces many small profiles (noisy). Length 50–100 produces few large profiles (macro structure). Choose based on your trading timeframe.
— 🔄 The POC zone extends rightward until the next profile appears. If no new swing occurs for a long time, the zone keeps extending — this is by design (the last known POC remains relevant until a new volume structure forms).
— 🛠️ This is a volume analysis and structural visualization tool , not an automated trading bot. It reveals where volume concentrated within each swing — trade decisions remain yours.
— 🌐 Works on all markets with volume data. All timeframes supported. Indicator

3D Volume Profile [UAlgo]3D Volume Profile is a chart based volume profile indicator that takes a classic horizontal profile concept and presents it as a pseudo 3D structure directly on price. Instead of drawing flat histogram bars only, the script renders each profile row as a shaded 3D block with a front face, a side face, and a top face, which creates a stronger visual sense of depth and distribution.
The indicator runs on price ( overlay=true ) and builds a rolling volume profile over a user defined lookback window. It divides the recent price range into fixed bins, distributes candle volume across those bins, identifies the Point of Control and the Value Area, and then draws the result on the right side of the chart. Each row is color coded by dominant flow direction, which means the profile can show whether a bin was more buy dominated or sell dominated in addition to showing how much total volume accumulated there.
This makes the tool useful for traders who want more than a basic profile display. It combines:
A rolling horizontal volume profile
Buy versus sell dominance shading
Point of Control and Value Area detection
A forward projected 3D style histogram
Clear POC, VAH, and VAL reference lines on the chart
The final result is a visually rich profile tool designed for fast structural reading, especially when identifying acceptance zones, thin areas, and dominant participation regions.
🔹 Features
🔸 1) Rolling Volume Profile Over a Recent Window
The script builds a rolling profile from the most recent user selected number of bars. This means the profile continuously adapts as new bars come in, making it more useful for current market structure analysis than a fixed session only approach.
🔸 2) 3D Style Histogram Rendering
Each volume row is drawn as a pseudo 3D block rather than a flat rectangle. The script creates:
A front face
A side face
A top face
The side and top faces are shaded versions of the main color, which gives the profile a depth effect and makes the structure easier to read visually.
🔸 3) Customizable 3D Depth in X and Y
The 3D effect is controlled with two settings:
3D Depth X , which controls how far the rear face is shifted horizontally in bars
3D Depth Y , which controls how far the rear face is shifted vertically as a percentage of row height
This allows the user to make the profile look flatter or more pronounced depending on preference.
🔸 4) Buy and Sell Volume Dominance Coloring
Each bin tracks both buy volume and sell volume. If buy volume is greater than or equal to sell volume, the row uses the bullish color. If sell volume dominates, the row uses the bearish color.
This means the profile is not only a measure of total activity. It also adds directional context to each price zone.
🔸 5) Point of Control Detection
The script identifies the row with the highest total volume and marks it as the Point of Control. The POC is highlighted with its own dedicated color and is visually distinct from the rest of the profile.
This gives traders an immediate reference for the most active price zone in the rolling range.
🔸 6) Value Area Calculation
The indicator calculates a Value Area around the Point of Control based on the user selected percentage. Bins inside the Value Area are marked and recolored with the Value Area color, which makes the high participation region easy to identify.
🔸 7) Forward Projected Profile Layout
The profile is drawn to the right of current price using a configurable offset. This keeps the active candle area readable while still placing the profile in a clear and accessible location.
🔸 8) Adjustable Resolution and Width
Users can control:
The lookback length
The number of profile rows
The maximum width of the histogram
The right side offset
This makes the indicator suitable for both coarse structural analysis and more detailed profile inspection.
🔸 9) POC, VAH, and VAL Reference Lines
After the profile is built, the script calculates the POC, Value Area High, and Value Area Low, then projects horizontal reference lines across the chart. Labels are placed to the right so the key levels are clearly marked.
🔸 10) Row by Row Dominance and Acceptance Reading
Because each row stores total volume, buy volume, sell volume, Value Area membership, and POC status, the indicator gives a layered view of the market:
Where the most activity occurred
Which zones were accepted
Which zones were dominated by buyers
Which zones were dominated by sellers
🔸 11) Premium Visual Presentation
The script uses shaded faces, dedicated POC highlighting, Value Area recoloring, and clean right side labels. This makes it more presentation focused than a basic flat profile and improves chart readability for manual analysis.
🔹 Calculations
1) Profile Range Detection
The script first finds the highest high and lowest low inside the active lookback window. This defines the full vertical range of the volume profile. Only the most recent bars inside that window are used for profile construction.
2) Bin Initialization
Once the recent range is known, the script divides that price range into the chosen number of bins. Each bin stores:
Top boundary
Bottom boundary
Total volume
Buy volume
Sell volume
Flags for Value Area and POC
The bin size is calculated by dividing the total price range by the number of rows.
3) Volume Distribution Across Price Bins
For each candle, the script determines which bins the candle spans. It then spreads that candle’s volume evenly across all touched bins.
This is important because the script does not place the full candle volume into a single price level. Instead, it allocates the candle volume across the portion of the profile that candle covers.
Important implementation note:
This script uses equal distribution across the spanned bins, not proportional overlap weighting. That means each touched row receives the same share of the candle’s volume.
4) Buy Versus Sell Volume Classification
The script classifies each candle as buy dominated or sell dominated using candle direction:
If close is greater than or equal to open, the candle is treated as buy volume
If close is below open, the candle is treated as sell volume
That candle’s allocated volume is then added to either volBuy or volSell inside each touched bin.
This is a practical directional approximation, not true bid ask tape volume.
5) Total Volume and POC Detection
After all candles are processed, the script scans every bin and calculates:
The total volume across the profile
The maximum single bin volume
The POC index
The POC is the bin with the highest total volume. That bin is marked as both isPOC and isVA before Value Area expansion begins.
6) Value Area Expansion Logic
The Value Area is built around the POC by expanding upward and downward until the selected percentage of total profile volume is included.
The script compares the next bin above and the next bin below the current Value Area. It adds whichever side has greater volume first. This continues until cumulative included volume reaches the target Value Area percentage.
This creates a standard profile style Value Area centered on the highest participation region.
7) Histogram Width Normalization
Each row’s width is scaled relative to the maximum volume row:
The row with the most volume becomes the widest
Smaller rows are scaled proportionally
This means width directly communicates relative participation at each price zone.
8) Color Selection Logic
For each bin, the script first determines whether buy volume or sell volume dominates:
If buy volume is greater than or equal to sell volume, it uses the bullish color
Otherwise it uses the bearish color
Then the script overrides that base direction color if needed:
If the row is the POC, it uses the POC color
If the row is inside the Value Area, it uses the Value Area color
This gives the profile a clear visual hierarchy:
POC first
Value Area second
Directional dominance otherwise
9) 3D Face Construction
Each row is rendered as a pseudo 3D object using:
A front rectangle
A shifted back edge using the X and Y depth settings
A side face when horizontal depth is visible
A top or bottom face depending on vertical depth direction
The script shades the side face darker and the top face brighter than the base color to create a depth illusion.
This is a visual projection technique, not a true 3D engine, but it produces a convincing 3D profile effect on the chart.
10) Rendering Order Logic
The script changes draw order depending on the sign of the Y depth:
If vertical depth is positive, rows are drawn from bottom to top
If vertical depth is negative, rows are drawn from top to bottom
This helps the 3D faces stack more cleanly and reduces visual overlap issues.
11) POC, VAH, and VAL Price Calculation
After the profile is complete:
The POC price is the midpoint of the POC bin
VAH is the highest top boundary among all Value Area bins
VAL is the lowest bottom boundary among all Value Area bins
These levels are then drawn as horizontal lines extending from the left side of the lookback window toward the right side label area.
12) Label Placement
The labels for POC, VAH, and VAL are placed slightly to the right of the profile. This keeps them readable and avoids overlap with the 3D bars themselves. Indicator

Value Area Levels [crlmx]Calculated from native volume-at-price data vaLevels shows Value Area
levels (VAH, POC, VAL) across three independently configurable timeframes.
Requires PulseWire Premium or above plan for Footprint data access,
Short of that refere to Lite version (coming soon).
Key Features
- Three independent VA slots with on/off toggles
- Timeframe selection: D, W, M, 30min, 1H, 4H, 8H, 12H
- Session-based VA on slot 3: NYC, London, Asia, Custom
- Custom session with user-defined time window and label prefix
- Auto-calculated row resolution per instrument type
- Manual ticks-per-row override for fine-tuning
- Configurable Value Area percentage (default 68%)
- Individual VAH, POC, VAL toggles per slot
- Optional price display in labels
- Requires PulseWire Premium or Ultimate plan
- Streamlined input / UI brought to you by crlmx
Trading Applications
- Map previous day area against weekly and session VAs to identify confluence zones
- Track VAH/VAL as breakout triggers when price moves outside the prior value area
- Compare session VA (NYC/LDN) against daily VA to for reactions
- When daily and weekly VAs overlap, expect stronger reactions at the shared boundary
- Combine with prLevels for a complete prior-level picture (price levels + volume levels)
- Recommended Settings
Intraday S/R: D + W + NYC | Chart: 1-15 min
Session Trading: D + 4H + LDN | Chart: 1-5 min
Swing Reference: D + W + M | Chart: 30 min - 4H
Version History
- v0.10: Initial release
Indicator

Price Normalized RSI Profile [UAlgo]Price Normalized RSI Profile is a hybrid visualization tool that combines a rolling RSI distribution study with a profile style overlay drawn directly on the price chart. Instead of plotting a classic RSI line in a separate oscillator pane, this script collects historical RSI readings, groups them into fixed 0 to 100 bins, weights each bin by traded volume, and then renders the resulting distribution as a horizontal profile on the right side of the main chart.
The goal of the script is not to show where price traded the most, but to show where RSI states accumulated the most volume over the selected lookback period. In other words, it answers a different question than a traditional volume profile. Rather than asking which prices were most active, it asks which RSI regimes were most active, then maps those oscillator regimes visually into the chart’s price space for easier on-chart interpretation.
The indicator highlights:
A volume weighted RSI Point of Control (POC)
A Value Area around that POC
A right side histogram of RSI regime distribution
A color gradient that reflects bullish versus bearish RSI zones
Reference labels for POC, VAH, and VAL
Lookback boundary markers for profile context
This makes the script useful for traders who want to blend oscillator distribution analysis with chart based execution, especially when comparing current price position against historically dominant RSI states.
Important note: The POC, VAH, and VAL in this script are derived from an RSI distribution profile , not from a standard price based volume profile. They are visually mapped onto the current chart range for presentation.
🔹 Features
🔸 1) Volume Weighted RSI Distribution Profile
The script collects RSI values over a rolling lookback window and assigns each reading into one of several fixed RSI bins. Each bin accumulates volume , not just frequency, so the profile reflects how much traded participation occurred while RSI was in that zone.
This makes the output more meaningful than a simple occurrence count because highly active bars contribute more weight.
🔸 2) Fixed 0 to 100 RSI Bin Framework
The profile is built over the natural RSI range from 0 to 100, divided into a user defined number of bins. This creates a stable oscillator distribution model that is consistent across symbols and timeframes.
Lower bin counts create thicker, smoother profile bars.
Higher bin counts create finer resolution and more detailed structure.
🔸 3) Overlay on the Main Price Chart
Unlike most RSI tools, this script runs with overlay=true and renders the profile directly on the price chart. It maps RSI bins onto the vertical span of the recent chart range, allowing traders to see the distribution without leaving the main chart.
This is a visual convenience feature and creates a unique fusion of oscillator logic and price space presentation.
🔸 4) Point of Control (POC) Detection
The indicator identifies the RSI bin with the highest accumulated volume and treats it as the RSI Profile POC. This is the most active RSI zone by volume over the lookback window.
The POC is highlighted with:
A wider profile bar
A unique color
A label showing the POC volume
🔸 5) Value Area (VAH / VAL) Calculation
The script builds a Value Area around the POC using the selected percentage of total profile volume. This identifies the core RSI regime zone where the majority of the volume weighted RSI activity occurred.
The Value Area is visually emphasized with more visible bars and separate VAH / VAL guide lines.
🔸 6) Gradient Color Mapping by RSI Regime
Each bin is colored using a gradient based on its RSI location:
Lower RSI zones lean bullish color
Higher RSI zones lean bearish color
This reflects the script’s chosen visual logic, where low RSI bins appear in the bullish color family and high RSI bins appear in the bearish color family.
🔸 7) Distinct Styling for POC, Value Area, and Outside Value
The script visually separates three categories:
POC bin
Bins inside the Value Area
Bins outside the Value Area
This helps traders quickly distinguish the dominant RSI regime from the broader accepted RSI zone and from lower importance outer regions.
🔸 8) Forward Projected Histogram Layout
The profile is drawn to the right of current price using configurable:
Maximum width in bars
Horizontal offset
This keeps the histogram out of the way of current candles while preserving clear visibility on the active chart.
🔸 9) Lookback Context Markers
The script draws a vertical line marking the start of the profile lookback window, plus horizontal guide lines across the chart high and low range used for the profile mapping. This makes it easy to understand which portion of the chart is being analyzed.
🔸 10) Compact On Chart Labels
The indicator adds right side labels for:
POC
VAH
VAL
This makes the distribution easier to read without manually inspecting each bar.
🔸 11) Rolling History Buffer for RSI and Volume
The script stores both RSI and volume into arrays, allowing the profile to be rebuilt from recent history on the last bar. This keeps the logic fully rolling and independent from session boundaries.
🔸 12) Structured Object Based Design
The script uses custom types:
RsiBin for each RSI interval
RsiProfile for the full profile state, including POC and Value Area indexes
This makes the internal logic cleaner and easier to maintain.
🔹 Calculations
1) RSI Calculation
The script calculates RSI from the chosen source and length:
float rsi_val = ta.rsi(rsi_src, rsi_len)
This value is the basis for all binning and profile accumulation.
2) Rolling RSI and Volume History Storage
Every bar, the script pushes the latest RSI value and volume into rolling arrays:
rsi_history.push(rsi_val)
vol_history.push(volume)
To prevent unlimited growth, the arrays are trimmed when they exceed:
lookback + 100
This keeps enough buffer for profile stability while controlling memory size.
3) Fixed RSI Bin Initialization
The profile divides the 0 to 100 RSI range into equal bins:
float step = 100.0 / bins_count
for i = 0 to bins_count - 1
float min_v = i * step
float max_v = (i + 1) * step
this.bins.push(RsiBin.new(min_v, max_v, 0.0, 0))
Each bin stores:
RSI minimum value
RSI maximum value
Accumulated volume
Observation count
4) Volume Weighted Population of the RSI Profile
When populating the profile, each historical RSI value is mapped into the correct bin:
int bin_idx = math.floor(r_val / 100.0 * this.bins.size())
The index is clamped to remain inside valid bounds:
bin_idx := math.min(bin_idx, this.bins.size() - 1)
bin_idx := math.max(bin_idx, 0)
Then the script adds the corresponding bar volume to that bin:
b.volume += v_val
b.count += 1
this.total_vol += v_val
This means the profile is volume weighted RSI distribution , not a simple count histogram.
5) POC Detection
As bins are populated, the script tracks the bin with the highest accumulated volume:
if b.volume > this.max_vol
this.max_vol := b.volume
this.poc_idx := bin_idx
This bin becomes the profile POC and acts as the center for Value Area expansion.
6) Value Area Calculation
The Value Area target is calculated from total profile volume:
float target_vol = this.total_vol * (va_percent / 100.0)
The script starts from the POC and expands outward, comparing the next upper and lower bin volumes:
float vol_up = (top < max_idx) ? this.bins.get(top + 1).volume : 0.0
float vol_dn = (bot > 0) ? this.bins.get(bot - 1).volume : 0.0
Whichever side has more volume is added first. This continues until the accumulated volume reaches the target percentage.
The final indexes are stored as:
this.va_top_idx := top
this.va_bot_idx := bot
7) Mapping RSI Bins into Price Space
A key part of this script is that RSI bins are not drawn in an oscillator pane. Instead, each RSI interval is mapped onto the chart’s recent price range:
float price_range = chart_high - chart_low
float y_bottom = chart_low + (b.min_val / 100.0) * price_range
float y_top = chart_low + (b.max_val / 100.0) * price_range
Interpretation:
RSI 0 maps to the recent chart low.
RSI 100 maps to the recent chart high.
All intermediate RSI bins are proportionally placed between them.
This is a visual mapping device, not a statement that those price levels correspond to actual RSI threshold prices.
8) Histogram Width Normalization
Each bin’s horizontal width is scaled by its volume relative to the maximum profile volume:
int bar_w = math.round((b.volume / this.max_vol) * max_width)
If the bin is the POC, it gets extra width:
if is_poc
bar_w := int(max_width * 1.15)
This makes the POC stand out clearly inside the profile.
9) POC, VA, and Outside VA Styling Logic
Each bin is categorized as:
POC
Inside the Value Area
Outside the Value Area
Then the script applies different opacity and border logic:
POC gets the dedicated POC color
VA bins are more visible
Outside VA bins are more faded
This creates clear visual hierarchy in the profile.
10) Color Gradient by RSI Position
Base color is determined from bin position in the RSI scale:
color base_col = color.from_gradient(b.min_val, 0, 100, c_bull, c_bear)
This means lower RSI bins transition toward the bullish color and higher RSI bins transition toward the bearish color. This is a stylistic mapping choice built into the script.
11) POC Label and Volume Display
When the POC is drawn, the script also adds a label showing:
The text POC
The accumulated volume of that bin
text="POC " + str.tostring(b.volume, format.volume)
This provides quick information about the dominant RSI regime’s participation size.
12) VAH and VAL Price Level Rendering
The script converts the Value Area top and bottom RSI bin indexes into mapped chart levels:
For VAH:
float vah_level = chart_low + (b_vah.max_val / 100.0) * price_range_val
For VAL:
float val_level = chart_low + (b_val.min_val / 100.0) * price_range_val
It then draws dashed horizontal lines and small labels for both.
Important note:
These are RSI profile Value Area boundaries mapped into price space , not true price based VAH and VAL from a market profile.
13) Lookback Boundary Drawing
The start of the lookback window is marked with a vertical dotted line:
int start_bar_idx = bar_index - lookback
line.new(start_bar_idx, chart_low, start_bar_idx, chart_high, ...)
This makes it easier to visually understand which section of chart history contributed to the current profile.
14) Chart Range Anchoring
The vertical display range used for the RSI to price mapping is derived from:
float chart_high = ta.highest(high, lookback)
float chart_low = ta.lowest(low, lookback)
This means the profile always stretches across the full recent visible price range used in the calculation window.
15) Last Bar Rendering Behavior
The profile is built and rendered only on the last bar:
if barstate.islast
vp.init(bin_count)
vp.populate(rsi_history, vol_history, lookback)
vp.calc_va(va_pct)
vp.render(...)
Indicator

HTF Candle Profile [UAlgo]HTF Candle Profile is a higher timeframe candle visualization tool that rebuilds each selected HTF candle from the lower timeframe bars that form it, then projects a horizontal volume profile inside that HTF candle range. The goal is to make intrabar participation visible directly on the price chart, so you can see where volume concentrated within the candle, where it was thin, and where the dominant traded price level emerged.
Instead of treating a daily or four hour candle as a single block, the script aggregates the lower timeframe bars as they arrive and distributes their volume across price bins covering the HTF candle’s high to low range. The result is a compact profile drawn from the start time of the HTF candle toward the right, with width proportional to relative volume per bin and color intensity driven by a gradient. This provides a fast read of internal structure: balanced candles, directional candles, rejection wicks, and consolidation pockets become easier to interpret because you can see the volume distribution inside the candle.
The indicator draws on the main chart and keeps a small rolling history of recent HTF candles to stay responsive and to respect object limits.
🔹 Features
1) Multi Timeframe HTF Candle Reconstruction
The script listens for a new HTF candle event using the selected timeframe input. When a new HTF candle begins, the previous one is finalized and drawn. During the active HTF candle, each incoming lower timeframe bar updates the running OHLC and stores its high, low, and volume for profiling.
This approach enables a live building profile for the current HTF candle while preserving completed profiles for recent candles.
2) Intrabar Volume Profile Built from LTF Data
For each HTF candle, the price range from low to high is divided into a user defined number of bins. Each lower timeframe bar contributes volume into all bins it spans. Volume is distributed evenly across the spanned bins to approximate participation within that bar’s range. This produces a per bin volume distribution that is stable and visually interpretable even when lower timeframe candles have large ranges.
3) Gradient Based Profile Intensity
Each bin is drawn as a horizontal box. Its color comes from a gradient that maps low volume to a softer profile color and high volume to a stronger profile color. This makes it easy to spot high participation nodes and low participation voids within the HTF candle.
Inputs allow independent control for bullish and bearish candle coloring and for the low volume and high volume profile colors.
4) POC Line Option
The script can optionally plot a POC line representing the price level of maximum volume within the HTF candle. This is drawn as a dashed horizontal line that spans the candle’s start time to end time. POC is often used as a reference for acceptance, fair value, or a magnet level during retracements.
5) Candle Body, Wick, and Time Boundaries
To keep the profile anchored and readable, the script also draws:
A translucent body box from HTF open to HTF close
A vertical wick line from HTF high to HTF low
A dotted start boundary and a dotted end boundary for the HTF candle window
These elements provide context so the profile is always interpreted within the candle structure that produced it.
6) Object Management and Rolling History
To keep charts clean and avoid exceeding platform limits, the script maintains a small history of HTF candles and deletes drawings for older ones. Each candle owns its objects and can fully clear them when removed from the rolling window.
🔹 Calculations
1) New HTF Candle Detection
A new candle event is detected using timeframe change on the selected timeframe:
isNew = timeframe.change(tf)
When isNew is true:
The previous HTF candle is finalized by setting its end time and drawing it
A new HTF candle object is created and added to the array
Old candles beyond the history limit are removed and their drawings deleted
2) HTF Candle Aggregation from LTF Bars
Each incoming lower timeframe bar updates the active HTF candle:
method addLtf(HtfCandle this, float h, float l, float c, float v) =>
this.ltfData.push(LtfBar.new(h, l, v))
this.h := math.max(this.h, h)
this.l := math.min(this.l, l)
this.c := c
Interpretation:
High is updated to the maximum seen so far within the HTF candle window
Low is updated to the minimum seen so far
Close is updated to the most recent close
Each LTF bar is stored with its high, low, and volume for later bin distribution
3) Bin Construction Across the HTF Candle Range
When drawing a candle, the script divides the HTF range into binCount segments:
float step = (this.h - this.l) / bCount
for i = 0 to bCount - 1
this.bins.push(ProfileData.new(this.l + i * step, this.l + (i + 1) * step, 0.0, na))
Each bin stores:
minP and maxP boundaries
accumulated volume for that price segment
a box handle for drawing
4) Volume Distribution from Each LTF Bar into Bins
For each stored LTF bar, the script determines which bins the bar spans and distributes volume evenly across them:
int startIdx = int((ltf.l - this.l) / step)
int endIdx = int((ltf.h - this.l) / step)
startIdx := math.max(0, math.min(startIdx, bCount - 1))
endIdx := math.max(0, math.min(endIdx, bCount - 1))
int spanned = endIdx - startIdx + 1
float vPerBin = ltf.v / spanned
for j = startIdx to endIdx
ProfileData b = this.bins.get(j)
b.vol += vPerBin
Interpretation:
The bar range is mapped to bin indexes
Indexes are clamped so they remain inside the array
Volume is divided by the number of spanned bins
Each spanned bin receives an equal share of that bar’s volume
This is a robust approach for intrabar profiling without tick data.
5) POC Computation
The script finds the bin with the maximum accumulated volume and sets the POC price at the midpoint of that bin:
float maxVol = 0.0
float pocP = na
for b in this.bins
if b.vol > maxVol
maxVol := b.vol
pocP := math.avg(b.minP, b.maxP)
If enabled, a dashed POC line is drawn across the HTF candle window:
if sPoc and not na(pocP)
this.lPoc := line.new(x1=this.st, y1=pocP, x2=this.et, y2=pocP, xloc=xloc.bar_time, color=cPoc, style=line.style_dashed, width=2)
6) Profile Box Width Scaling
Each bin’s box width scales by its volume relative to the maximum volume bin. Width is capped as a fraction of the candle’s time duration:
int duration = math.max(this.et - this.st, 1)
int volWidth = int((duration * 0.40) * (b.vol / maxVol))
int boxRight = this.st + volWidth
Interpretation:
duration represents the HTF candle time width
0.40 is the maximum profile width fraction of the candle duration
b.vol / maxVol converts volume to a normalized ratio
boxRight is calculated so all profile boxes start at the candle start time and extend rightward based on volume
7) Gradient Coloring of the Profile
Each bin color is mapped from low volume to high volume using a gradient:
color gradColor = color.from_gradient(b.vol, 0, maxVol, cLow, cHigh)
This keeps low participation zones visually lighter and high participation zones more prominent.
8) Candle Body and Wick Drawing
The script draws an HTF candle body box and a wick line for context:
float topP = math.max(this.o, this.c)
float botP = math.min(this.o, this.c)
this.bBody := box.new(left=this.st, top=topP, right=this.et, bottom=botP, xloc=xloc.bar_time, bgcolor=color.new(c, 85))
this.lWick := line.new(x1=midTime, y1=this.h, x2=midTime, y2=this.l, xloc=xloc.bar_time, color=color.new(c, 30), width=2)
It also draws start and end boundary lines so the candle window is clearly defined in time.
Indicator

Elite Session Volume Distribution Engine [JOAT]Elite Session Volume Distribution Engine
Introduction
The Elite Session Volume Distribution Engine is an open-source indicator that combines session-based analysis (London, New York, Asian sessions) with volume distribution profiling, VWAP analysis, volume-weighted momentum indicators, and session high/low tracking. This mashup creates a comprehensive session and volume analysis system designed to identify when institutional volume enters the market during specific trading sessions and how that volume is distributed across price levels.
The indicator addresses a critical market reality: different trading sessions have distinct volume characteristics and institutional participation levels. London and New York sessions typically have highest volume and volatility, while Asian session is quieter. By tracking volume distribution, momentum, and key levels within each session, this tool helps traders identify optimal trading windows and understand how institutional volume shapes price action during different global market hours.
Chart showing session boxes, volume distribution, and VWAP on 45M timeframe
Why This Mashup Exists
This indicator combines five analytical frameworks that address different aspects of session-based trading:
Session Identification: Tracks London, New York, and Asian trading sessions
Volume Distribution: Analyzes how volume is distributed across price levels within sessions
VWAP Analysis: Calculates session-specific Volume Weighted Average Price
Volume Momentum: Tracks volume trends and climax conditions
Session High/Low: Identifies key levels established during each session
Each component serves a specific purpose: Session identification shows when institutional traders are active, Volume Distribution reveals where volume concentrates (value areas), VWAP shows institutional average price, Volume Momentum identifies accumulation/distribution phases, and Session High/Low marks key reference levels. Together, they create a complete picture of how institutional volume flows through different trading sessions.
The mashup is justified because these components work together in session-based trading: institutions enter during specific sessions (London/NY), create volume distribution patterns at key levels, establish VWAP as benchmark, show momentum through volume trends, and set session highs/lows that become support/resistance. Tracking all simultaneously reveals the complete session-based institutional flow.
Core Components Explained
1. Session Identification System
The indicator identifies three major trading sessions:
// London Session (03:00-12:00 GMT)
londonSession = input.session("0300-1200", "London Session")
inLondonSession = not na(time(timeframe.period, londonSession))
// New York Session (08:30-17:00 EST)
nySession = input.session("0830-1700", "NY Session")
inNYSession = not na(time(timeframe.period, nySession))
// Asian Session (00:00-09:00 GMT)
asianSession = input.session("0000-0900", "Asian Session")
inAsianSession = not na(time(timeframe.period, asianSession))
// Session overlap (London + NY)
sessionOverlap = inLondonSession and inNYSession
Session characteristics:
London Session: High volume, major currency pairs active, trend establishment
NY Session: Highest volume, US markets active, major moves occur
Asian Session: Lower volume, range-bound often, JPY pairs active
London/NY Overlap: Highest volume period, most volatile, best liquidity
The indicator can optionally display session boxes as background colors (disabled by default to reduce clutter).
2. Volume Distribution Analysis
Volume distribution shows where volume concentrates within price ranges:
// Calculate volume at different price levels
volumeAtPrice = array.new_float()
// For each price level in session range
for i = sessionLow to sessionHigh by tickSize
volumeAtLevel = sum of volume where price traded at level i
array.push(volumeAtPrice, volumeAtLevel)
// Identify Point of Control (POC) - price level with most volume
poc = price level with maximum volume
// Identify Value Area (VA) - price range containing 70% of volume
valueAreaHigh = upper bound of 70% volume
valueAreaLow = lower bound of 70% volume
Volume Distribution concepts:
Point of Control (POC): Price level with highest volume - strong support/resistance
Value Area High (VAH): Upper bound of 70% volume distribution
Value Area Low (VAL): Lower bound of 70% volume distribution
High Volume Nodes: Price levels with significant volume - support/resistance zones
Low Volume Nodes: Price levels with little volume - price moves through quickly
The indicator plots volume distribution as a histogram or profile showing where institutional volume concentrated during the session.
3. Session-Specific VWAP
VWAP resets at the start of each session:
// Session VWAP calculation
var float sessionVWAP = na
var float cumulativeTPV = 0.0 // Typical Price * Volume
var float cumulativeVol = 0.0
if session_start
cumulativeTPV := 0.0
cumulativeVol := 0.0
typicalPrice = (high + low + close) / 3
cumulativeTPV := cumulativeTPV + (typicalPrice * volume)
cumulativeVol := cumulativeVol + volume
sessionVWAP = cumulativeTPV / cumulativeVol
Session VWAP significance:
Institutional traders use VWAP as execution benchmark
Price above session VWAP = buyers in control during session
Price below session VWAP = sellers in control during session
VWAP acts as dynamic support/resistance within session
Distance from VWAP indicates overextension
The indicator plots session VWAP with dynamic coloring based on price position.
4. Volume Momentum Analysis
Volume momentum tracks institutional accumulation/distribution:
// Volume moving average
volumeMA = ta.sma(volume, 20)
// Volume classification
highVolume = volume > volumeMA * 1.5
veryHighVolume = volume > volumeMA * 2.0
climaxVolume = volume > volumeMA * 3.0
// Volume trend
volumeRising = volume > volume and volume > volume
volumeFalling = volume < volume and volume < volume
// Accumulation/Distribution
accumulation = close > open and highVolume and volumeRising
distribution = close < open and highVolume and volumeRising
// Volume momentum indicator
volumeMomentum = (volume - volumeMA) / volumeMA * 100
Volume Momentum signals:
Rising Volume + Up Close: Accumulation - bullish
Rising Volume + Down Close: Distribution - bearish
Climax Volume: Potential exhaustion or strong institutional move
Declining Volume: Lack of institutional interest
Volume Momentum > 50%: Very strong institutional participation
The indicator plots volume bars with color coding based on momentum and direction.
5. Session High/Low Tracking
Session highs and lows become important reference levels:
// Track current session high/low
var float currentSessionHigh = na
var float currentSessionLow = na
if session_start
currentSessionHigh := high
currentSessionLow := low
else
currentSessionHigh := math.max(currentSessionHigh, high)
currentSessionLow := math.min(currentSessionLow, low)
// Previous session levels
prevSessionHigh = currentSessionHigh
prevSessionLow = currentSessionLow
Session High/Low significance:
Current session high/low show intraday range
Previous session levels act as support/resistance
Breaks above previous session high = bullish continuation
Breaks below previous session low = bearish continuation
Session range size indicates volatility and institutional activity
The indicator plots only CURRENT session high/low (2 lines instead of 6) to keep chart clean. Previous session levels can be toggled on if needed.
Example showing session VWAP, volume distribution, and session high/low levels
Volume Distribution Dashboard
The dashboard (bottom-right position) displays:
Current Session: London/NY/Asian/Overlap
Session VWAP: Current VWAP value
Price vs VWAP: Distance from VWAP in %
POC: Point of Control price level
Value Area: VAH and VAL levels
Volume Status: High/Normal/Low relative to average
Volume Momentum: Rising/Falling/Climax
Session Range: High - Low distance
Accumulation/Distribution: Current phase
Visual Elements
Session Boxes: Optional background colors for each session (default: OFF)
Session VWAP: Dynamic line with color based on price position
Session High/Low: Horizontal lines for current session (2 lines only)
Volume Bars: Color-coded based on momentum and direction
Volume Distribution Profile: Histogram showing volume at price levels
POC Line: Horizontal line at Point of Control
Value Area: Shaded zone between VAH and VAL
Accumulation/Distribution Markers: Labels for strong volume phases
Dashboard: Bottom-right table with session and volume metrics
Chart demonstrating session VWAP, volume bars, and dashboard
How Components Work Together
The mashup reveals session-based institutional flow:
Session Trading Sequence:
1. Session Opens: New session begins (London/NY/Asian)
2. VWAP Establishes: Session VWAP forms as volume enters
3. Volume Distribution: Institutions create volume at key levels (POC, Value Area)
4. Session Range: High and low established through institutional activity
5. Volume Momentum: Accumulation or distribution phase identified
6. Session Close: Levels become reference for next session
Example: London session opens, price trades above session VWAP with rising volume (accumulation). Volume distribution shows POC forming at 1.2500 level. Session high reaches 1.2550. NY session opens, price respects London session high and VWAP, continues higher with climax volume. Dashboard shows strong accumulation with volume momentum +75%.
Input Parameters
Session Settings:
London Session: Time range (default: 0300-1200)
NY Session: Time range (default: 0830-1700)
Asian Session: Time range (default: 0000-0900)
Show Session Boxes: Toggle background colors (default: OFF)
Highlight Overlap: Emphasize London/NY overlap (default: enabled)
VWAP Settings:
Show Session VWAP: Toggle VWAP line (default: enabled)
VWAP Reset: Session, Daily, Weekly (default: Session)
VWAP Bands: Optional standard deviation bands (default: disabled)
Distance Alert: Alert when price moves X% from VWAP (default: 2%)
Volume Settings:
Volume MA Length: Period for volume average (default: 20)
High Volume Threshold: Multiplier for high volume (default: 1.5x)
Climax Volume Threshold: Multiplier for climax (default: 3.0x)
Show Volume Bars: Color-coded volume bars (default: enabled)
Show Distribution Profile: Volume at price histogram (default: enabled)
Session Levels:
Show Current Session H/L: Toggle current session levels (default: enabled)
Show Previous Session H/L: Toggle previous session levels (default: disabled)
Show POC: Toggle Point of Control line (default: enabled)
Show Value Area: Toggle VAH/VAL zone (default: enabled)
Display Options:
Show Dashboard: Toggle metrics table (default: enabled)
Dashboard Position: Bottom-right, top-right, etc. (default: bottom-right)
Color Theme: Choose color scheme
Transparency: Adjust visual element transparency
How to Use This Indicator
Step 1: Identify Active Session
Check dashboard to see which session is active. Focus trading during London and NY sessions for highest volume and best opportunities.
Step 2: Monitor Session VWAP
Use session VWAP as directional bias. Price above VWAP = bullish bias, below = bearish bias. VWAP often acts as support/resistance.
Step 3: Check Volume Distribution
Identify POC and Value Area. These levels often provide strong support/resistance. Price tends to return to POC (fair value).
Step 4: Assess Volume Momentum
Check if volume is rising (accumulation/distribution) or falling (lack of interest). Climax volume often marks important turning points.
Step 5: Use Session High/Low
Current session high/low define intraday range. Breaks above/below these levels signal potential breakout moves.
Step 6: Watch for Session Transitions
Session opens and closes often bring volatility. London open and NY open are particularly important for major moves.
Best Practices
Use on 5-minute to 1-hour timeframes for optimal session analysis
London/NY overlap (08:30-12:00 EST) offers highest volume and best opportunities
Session VWAP acts as magnet - price often returns to it
POC from previous session often becomes support/resistance in current session
Climax volume at session high/low often marks reversal points
Accumulation during Asian session often leads to breakout during London open
Value Area breaks signal strong directional moves
Previous session high/low become key levels for current session
Combine session analysis with other technical tools for best results
Indicator Limitations
Session times are fixed and may not account for daylight saving time changes
Volume distribution requires sufficient data within session to be meaningful
VWAP can be less relevant in very volatile or trending markets
Session high/low can be broken multiple times in volatile conditions
Lower timeframes may show choppy session transitions
Volume data quality varies across different markets and brokers
Asian session analysis less reliable due to lower volume
Requires understanding of session-based trading concepts
Visual elements can clutter chart if all options enabled
Technical Implementation
Built with Pine Script v6 using:
Session detection using time() function with session strings
Session-specific VWAP calculation with reset logic
Volume distribution profiling with POC and Value Area calculation
Volume momentum tracking with MA comparison
Session high/low tracking with persistent variables
Accumulation/distribution detection using volume and price
Dynamic dashboard with real-time session metrics
Optional session boxes with transparency control
Color-coded volume bars based on momentum
The code is fully open-source and can be modified to adjust session times, volume thresholds, and visual preferences.
Originality Statement
This indicator is original in its comprehensive session and volume integration approach. While individual components (session identification, VWAP, volume distribution, volume momentum, session high/low) are established concepts, this mashup is justified because:
It combines session-based analysis with volume distribution profiling
Session-specific VWAP provides more relevant institutional benchmark than daily VWAP
Integration of volume momentum with session context reveals accumulation/distribution phases
Simplified visual presentation (current session H/L only) reduces clutter
Dashboard presents complex session and volume data clearly
Focus on institutional trading sessions (London/NY) aligns with volume reality
Each component contributes unique information: Session identification shows when institutions are active, Volume Distribution reveals where they're trading, VWAP shows their average price, Volume Momentum shows their intent, and Session High/Low marks their range. The mashup's value lies in presenting these complementary session-based perspectives simultaneously, allowing traders to understand how institutional volume flows through different global trading sessions.
Disclaimer
This indicator is provided for educational and informational purposes only. It is not financial advice or a recommendation to buy or sell any financial instrument. Trading involves substantial risk of loss and is not suitable for all investors.
Session-based analysis and volume distribution are analytical tools that analyze past data. They do not predict future price movement or guarantee that institutional traders are active at identified levels. Market conditions change, and session patterns that worked historically may not work in the future.
VWAP and volume distribution levels can fail to provide support/resistance. Session highs and lows can be broken without leading to sustained moves. Volume momentum can change rapidly. Past session behavior does not guarantee future session behavior.
Always use proper risk management, including stop losses and position sizing appropriate for your account size and risk tolerance. Never risk more than you can afford to lose. Consider consulting with a qualified financial advisor before making investment decisions.
The author is not responsible for any losses incurred from using this indicator. Users assume full responsibility for all trading decisions made using this tool.
-Made with passion by officialjackofalltrades Indicator

HTF Candle Dynamics [LuxAlgo]The HTF Candle Dynamics indicator provides traders with a comprehensive view of Higher Timeframe (HTF) price action and volume distribution directly on their lower timeframe charts. By projecting the current developing HTF candle and its internal volume characteristics to the right of the price, users can maintain high-level context without switching tabs.
Note: Ensure the chart timeframe is lower than the selected HTF setting for the indicator to function correctly.
🔶 USAGE
This tool is designed to bridge the gap between execution timeframes and higher-level market structures. It is particularly useful for scalpers and day traders who need to stay aware of Daily or Weekly levels while trading on 1-minute or 5-minute charts.
🔹 HTF Candle Projection
Visualizes the current HTF period (e.g., Daily, Weekly) as a dynamic candle on the right side of the chart. It includes projections for the HTF Open, High, Low, and Close levels. These levels often act as significant psychological barriers where price might find support or resistance.
🔹 Intraday Volume Profile
Generates a volume profile specifically for the current HTF period. This allows traders to see where the most volume is being transacted within the developing candle. Identifying "High Volume Nodes" within the current HTF candle can signal where institutional interest is concentrated.
🔹 Dynamic POC Tracking
A polyline tracks the movement of the Point of Control (POC) throughout the HTF period, showing how the most traded price level has shifted over time. If the POC is trending upward alongside price, it confirms a healthy bullish trend; if price moves away from a static POC, it might indicate a potential mean reversion back to that high-volume level.
🔹 How to Use
Traders can utilize this indicator to align their intraday trades with the broader market direction:
Identifying Value : Use the Intraday Volume Profile to spot the Point of Control. If the price is trading above the POC, the market is currently in a premium zone for that HTF. If it is below, it may be considered "discounted" relative to the volume transacted so far.
Breakout Confirmation : When price breaks the High or Low of the projected HTF candle, traders look for volume expansion within the profile to confirm if the breakout has significant participation.
Mean Reversion : The Dynamic POC line acts as a magnet. If price overextends significantly from the POC line, traders often look for signs of exhaustion to play a move back toward the high-volume area.
🔶 DETAILS
The indicator uses security calls to fetch historical HTF data while calculating the current developing period in real-time. A dedicated status table ensures the selected HTF is valid relative to the chart timeframe to prevent calculation errors.
🔹 History Dashboard
The dashboard provides a statistical breakdown of the previous three HTF candles (T-1, T-2, T-3). This is crucial for "Contextual Trading." By seeing the OHLC values and Volume Delta of the previous periods, you can determine if the market is experiencing "Expansion" (increasing volume and candle size) or "Contraction" (decreasing volume and tighter ranges).
🔹 Volume Delta
The Volume Delta shown in the history dashboard is an approximation calculated by summing volume based on the direction of individual intraday candles.
🔶 SETTINGS
HTF Setting : Defines the timeframe for the candle projection and volume profile (default is "D").
Right Offset : Adjusts the horizontal position of the projected candle and labels to avoid overlapping with price.
Visuals : Full control over bullish/bearish colors, POC lines, and projection offsets.
Volume Profile : Toggle the profile visibility and customize the number of rows or the maximum width of the bars.
History Dashboard : Toggle the history dashboard and adjust its position (Top Right, Bottom Right, etc.) or size.
Indicator
