Volume Spike Aftershock Planner [AGPro Series]Volume Spike Aftershock Planner
🧠 Core Idea
After a volume spike, is price actually defending the impulse, absorbing it, or losing control completely?
📌 Overview / What it does
Volume Spike Aftershock Planner is designed to evaluate what happens after an abnormal volume expansion candle appears on the chart. Instead of stopping at the spike itself, the script studies the post-impulse behavior and organizes that structure into a readable decision-support framework.
The script maps a spike anchor, an active aftershock band, a failure boundary, and a target-room reference. It also produces contextual labels, right-side price tags, and a compact information panel that summarizes the current aftershock condition with a rule-based score.
This script does not attempt to predict the next candle, automate entries, or generate guaranteed continuation signals. It is an analytical visualization tool that helps users judge whether the spike is still being respected, partially absorbed, or fully invalidated.
🎯 Purpose & Design Philosophy
This script was built to solve a common gap in volume analysis.
Most traders can see when volume suddenly expands. The harder question is what to do with that information after the impulse bar closes. A large volume candle can lead to continuation, rejection, absorption, or complete failure, and those outcomes do not deserve the same interpretation.
This tool helps traders who want a more structured way to read post-spike behavior. It supports a patient, evidence-based mindset by focusing on participation quality, impulse defense, failure thresholds, and available room rather than hype or prediction.
⚡ Why This Script Is Different
Most volume tools focus on spike detection, raw histogram expansion, or one-bar climax alerts.
This script does NOT stop at identifying unusual participation.
Instead, it tracks the aftershock environment that forms after the spike, measures whether price is holding the impulse anchor, maps when the move is being absorbed, and highlights when the context has either matured or failed. The result is not just a volume event marker, but a structured framework for interpreting what the spike still means.
⚙️ Methodology
1. Context Detection
The script scans for abnormal volume participation and range expansion relative to recent behavior. It also reviews body quality so that weak, indecisive candles are filtered more carefully.
2. Reference Mapping
Once a valid spike is confirmed, the script establishes a spike anchor and builds an aftershock band around that reference. It also defines a failure boundary and a room projection.
3. Reaction Evaluation
Price is then evaluated relative to the anchor and surrounding rails. The script checks whether the impulse is being defended, fading back through the anchor, or failing beyond the allowed structure.
4. Visual Output
The final output includes the aftershock band, anchor reference, room line, failure line, event labels, right-side tags, optional bar coloring, and a dashboard panel that summarizes the current state.
🗺️ How to Read the Chart
Zones:
The aftershock band represents the active post-spike area where the market is being evaluated. It is the main structure zone for interpreting whether the impulse still matters.
Labels:
Labels mark important contextual events such as bull spike, bear spike, holding behavior, absorbed behavior, target review, and failure.
Colors:
Teal highlights constructive bullish behavior or defended impulse structure.
Pink highlights bearish structure, invalidation, or failed context.
Gold highlights review areas such as absorption or target-room interaction.
Indigo highlights the spike anchor reference.
Panel:
The panel summarizes the spike state, the Aftershock Score, participation quality, available room, and the current action state.
🚦 Signals & States
• Bull Spike → A bullish high-participation impulse anchor has been detected.
• Bear Spike → A bearish high-participation impulse anchor has been detected.
• Holding → Price is still defending the impulse structure after the spike.
• Aftershock Ready → The post-spike condition is strong enough to deserve active attention.
• Absorbed → Price has moved back through the anchor and the impulse is losing control.
• Target Review → The projected first room objective has been reached and context should be reassessed.
• Failed → The active aftershock structure has broken down beyond the allowed limit.
• Wait Spike → No valid active spike context is currently available.
• Expired → The spike is too old to remain actionable within the current framework.
🔔 Alerts Logic
Alerts can trigger when a new bullish or bearish spike is detected, when price begins to hold the impulse, when the aftershock condition becomes ready, when the move becomes absorbed, when target room is reached, or when the context fails.
These alerts are attention markers only. They highlight a structural event inside the script logic. They are not trade instructions, automated entries, or guarantees of follow-through.
🧩 Confluence Logic
The context becomes stronger when multiple conditions align at the same time.
For example, a high relative-volume spike with strong candle expansion, defended anchor structure, stable participation decay, and clear room beyond the band creates a much stronger environment than a spike that immediately collapses back through its reference level.
This confluence logic is what separates a meaningful aftershock structure from a noisy one-bar event.
📊 When to Use
• Markets with reliable volume behavior
• Crypto pairs with clean participation swings
• Stocks and indices with readable impulse candles
• Breakout or breakdown follow-through evaluation
• Continuation review after a strong reaction candle
• 1H, 4H, and 1D chart studies where impulse quality matters
⚠️ When NOT to Use
• Illiquid symbols with distorted or unreliable volume
• Extremely noisy low-range environments
• Symbols where volume feed quality is poor
• Isolated one-bar anomalies with no structural follow-through
• Extreme volatility conditions where impulse rails become unstable too quickly
🎛️ Key Inputs
• Relative Volume Length → Controls the participation baseline used for spike comparison.
• Minimum Relative Volume → Controls how large the volume expansion must be before the candle qualifies as a spike.
• Minimum Range Ratio → Controls how much price expansion is required.
• Minimum Body Ratio → Filters out weak spike candles with poor body commitment.
• Aftershock Band ATR → Controls the depth of the active aftershock zone.
• Failure Buffer → Controls how far price can move before the spike idea is considered broken.
• Minimum Ready Score → Controls how strict the script is before showing stronger actionable states.
• Visual Settings → Control labels, panel location, theme, font size, and optional chart styling.
🖥️ Interface & Visual Design
The visual design is built around clarity at first glance.
The panel gives a fast structural summary without forcing the user to inspect every line manually. The chart layer uses premium contrast and a clear hierarchy so the aftershock band, anchor, failure boundary, and room references remain readable without overwhelming the candles.
The goal is not decoration. The goal is clean interpretation under live market conditions.
🧪 Practical Usage Workflow
1. Read the panel to understand the current spike state and score.
2. Check whether a valid spike anchor and aftershock band are active.
3. Evaluate whether price is holding, absorbed, or failing relative to the anchor.
4. Review available room and decide whether the current context is mature, early, or already extended.
5. Use labels and tags as structured context markers, not as automatic commands.
🔍 Interpretation Guidelines
Treat the script as a structured reading framework.
A stronger score suggests that the spike had better participation, cleaner range expansion, and more stable post-spike structure. A weaker score suggests that the move may be losing informational value.
An absorbed state does not mean reversal is guaranteed. It means the original impulse is no longer being defended as cleanly as before.
A target-review state does not mean the move must stop. It means the first projected room objective has already been reached and the user should reassess the context rather than assuming endless continuation.
🚫 What This Script Is NOT
This script is not a prediction engine.
It is not a financial advice tool.
It is not an automated trading system.
It is not a broker integration.
It does not place orders.
It does not guarantee continuation, reversal, or profitability.
⚠️ Limitations & Transparency
This script is rule-based and depends on the quality of the underlying market data.
Timeframe changes can materially alter how spikes, bands, and room projections appear. High-volatility environments can also reduce the stability of post-spike structures. In thin or distorted markets, volume expansion may look meaningful while carrying very little analytical value.
The script should always be interpreted in broader market context rather than in isolation.
🧠 Market Context Notes
Volume spikes are often strongest when they appear at meaningful structure transitions, liquidity shifts, or expansion points where the market is forced to reveal intent.
That said, not every spike represents sustainable conviction. Some are exhaustion bursts, some are absorption events, and some are temporary reactions inside a larger opposing structure. The aftershock behavior is often more important than the spike itself.
🧾 Use Case Examples
Example 1:
Price breaks above a local range with a large bullish volume surge. The script marks a bull spike, price holds above the anchor, and the panel shifts into a stronger aftershock state. This suggests the impulse still deserves attention.
Example 2:
Price prints a large bearish impulse, but then quickly moves back through the anchor. The script shifts into an absorbed condition, signaling that the original downside impulse is losing control.
Example 3:
A high-volume move expands sharply, then reaches the target-room area. The script marks target review, reminding the user to reassess the move rather than assuming continuation is still efficient.
🧱 System Philosophy
AGPro Series tools are designed as decision-support frameworks, not signal vending machines.
The philosophy is simple: map structure clearly, make states readable, reduce noise, and help the user think better around live price behavior.
🔐 Non-Promise Statement
This script does not promise certainty.
It does not promise that a volume spike will continue, reverse, hold, or fail in any predetermined way. It simply organizes the available structure so the user can evaluate the situation with more clarity.
📉 Risk Disclosure
Trading and investing involve risk.
Market conditions can change quickly, and any analytical tool can produce outputs that become invalid under new volatility, liquidity, or structural conditions. Users remain fully responsible for their own decisions, risk management, and execution.
This script is provided for educational and analytical purposes only. It is not financial advice.
📚 Educational Note
This tool is most useful when treated as a market-reading assistant.
The best results usually come from combining it with broader structure analysis, liquidity awareness, and disciplined risk management rather than using it as a standalone trigger system.
Indicator

Absorption Range Ledger [JOAT]Absorption Range Ledger
Introduction
Absorption Range Ledger is an open-source range and participation overlay built to detect high-participation ranges, estimate internal bull-vs-bear ownership, track weighted equilibrium, and monitor whether the market is being absorbed, contained, reclaimed, or broken. It is designed for traders who want richer range context than a basic support/resistance box.
The script identifies high-participation candles, merges overlapping activity into persistent range zones, tracks a weighted equilibrium line inside the zone, and then highlights whether that zone is acting as supportive absorption, resistant absorption, or a two-way transfer area. Optional TP/SL rails are created when weighted reclaims or range breaks occur on confirmed bars.
Core Concepts
1. High Participation Detection
The script compares current volume to a baseline moving average. When participation exceeds the threshold, the candle is eligible to build or extend an absorption range.
2. Range Merging
New high-participation candles are merged into existing ranges when overlap conditions are satisfied. This creates broader institutional-style transfer zones rather than isolated candle markers.
3. Ownership Split
Each active range tracks approximate bullish and bearish ownership internally. This is displayed visually using sub-boxes and summarized numerically in the dashboard.
4. Weighted Equilibrium
A weighted equilibrium line is maintained inside the dominant active range. This level serves as a practical internal reference for reclaim and failure behavior.
5. Range Events
The script distinguishes containment, weighted-line reclaims, and outright range breaks. These states are used for dashboard context and optional TP/SL scaffolding.
Features
High-participation range detection: Builds active ranges when volume exceeds the baseline threshold
Range merging: Overlapping participation bars are combined into richer zones
Bull/bear ownership split: Internal sub-boxes show approximate participation balance
Weighted equilibrium line: A central reference inside the active range
Dominant active range logic: Tracks the most relevant current range for context
Range reclaim and break states: Distinguishes contained trade from directional escape
Optional TP/SL ladder: Builds informational risk rails on confirmed reclaims and breaks
Top-right dashboard: Shows state, active count, weighted level, balance, range width, and event condition
How to Use This Indicator
Step 1: Identify whether a dominant active range exists.
Step 2: Check the ownership balance. Strong positive balance suggests bid-side absorption. Strong negative balance suggests offer-side absorption.
Step 3: Watch how price behaves around the weighted equilibrium line. Reclaims and failures often provide better context than touching the raw box boundary alone.
Step 4: Use confirmed breaks of the dominant range as state changes, not as guaranteed trend starts.
Indicator Limitations
Ownership balance is an internal estimate, not a true order-flow measurement
Range merging depends on the chosen volume threshold and can be too broad or too narrow if poorly configured
Old ranges expire by design and will not remain indefinitely on the chart
The TP/SL ladder is informational and not an execution engine
Originality Statement
Absorption Range Ledger is original in the way it combines participation-based zone merging, internal ownership splitting, weighted equilibrium governance, and event-driven scaffolding into one open-source range tool. It is published as a contextual market-transfer indicator rather than a simple breakout box.
Disclaimer
This indicator is provided for educational and informational purposes only. It is not financial advice. Participation, ownership, and absorption states are inferred from historical price and volume behavior and may not reflect future outcomes. Use independent analysis and risk management.
-Made with passion by jackofalltrades
Indicator

Wick Absorption Reversal Planner [AGPro Series]Wick Absorption Reversal Planner
🧠 Core Idea
Is an extended wick showing absorption, and did the candle body reclaim enough structure to treat the reversal context seriously?
📌 Overview / What it does
Wick Absorption Reversal Planner maps extended wick reactions as absorption pockets and evaluates whether price can reclaim the body rail after that reaction.
The script displays a wick absorption pocket, body reclaim rail, failure shelf, room reference, event labels, right-side tags, optional bar coloring, and a compact AG Pro dashboard with a 0-100 reversal score.
It does not predict reversals. It helps organize wick absorption, body reclaim quality, pressure, room, invalidation, and action state.
🎯 Purpose & Design Philosophy
Many candle tools label rejection candles, engulfing candles, or generic wick events.
This script was built for the next layer: whether the wick reaction is being absorbed and whether the candle body can reclaim the important zone afterward.
It helps traders separate random wick noise from a structured absorption pocket with a body reclaim rail and failure logic.
⚡ Why This Script Is Different
Most wick indicators focus on the wick itself.
This script does NOT treat every long wick as a reversal signal.
Instead, it maps the wick pocket, checks body reclaim, measures pressure and room, and gives a clear action state. The goal is interpretation, not prediction.
⚙️ Methodology
1. Wick Absorption Detection
The script checks upper and lower wick size relative to ATR and total candle range.
2. Context Mapping
The wick is compared with recent structure to avoid treating every isolated candle as meaningful.
3. Body Reclaim Evaluation
After a wick absorption pocket is detected, the body reclaim rail becomes the key threshold for reversal planning.
4. Visual Output
The chart receives the wick pocket, body reclaim rail, failure shelf, room rail, labels, right-side tags, optional bar coloring, and dashboard panel.
🗺️ How to Read the Chart
The wick absorption pocket marks the area created by the extended wick reaction.
The body reclaim rail shows the level price needs to recover for the reversal context to improve.
The failure shelf marks where the absorption context fails.
The room rail marks the nearest structure reference in the reversal direction.
Labels highlight wick absorption, body reclaim, pocket pressure, room tests, and absorption failure.
Colors represent context:
• Teal → bullish wick absorption
• Pink → bearish wick absorption or failure
• Gold → room reference or waiting context
• Indigo → pocket pressure or monitoring context
The panel summarizes:
• Pocket
• Reversal Score
• Pressure
• Room
• Action
🚦 Signals & States
• Bull Wick Absorption → lower wick absorption pocket detected
• Bear Wick Absorption → upper wick absorption pocket detected
• Body Reclaim → price reclaimed the body rail after absorption
• Pocket Pressure → price is testing the wick pocket without clean reclaim
• Room Test → price reached the active room reference
• Absorption Failed → price crossed the failure shelf
• READY → body reclaim and score quality are strong enough to monitor
• MONITOR → pocket or reclaim context is active but not fully ready
• WAIT → no strong active context exists
• INVALIDATED → the wick absorption context failed
• EXPIRED → the pocket is too old to remain active
🔔 Alerts Logic
Alerts can trigger when a bullish or bearish wick absorption pocket appears, when body reclaim appears, when READY state appears, when pocket pressure appears, when the room rail is reached, or when absorption fails.
Alerts are attention markers only. They are not trade instructions.
🧩 Confluence Logic
The context becomes stronger when wick size, wick-to-range ratio, structural location, participation, body reclaim, and room align.
For example, a lower wick into recent structure followed by body reclaim and available room is more useful than a random wick in the middle of noisy price action.
📊 When to Use
• Reversal watch areas after extended wicks
• Support/resistance reactions with visible rejection
• Pullbacks where wick absorption may matter
• Failed breakdown or failed breakout reactions
• Liquid symbols with readable candles and stable spreads
• 1h, 4h, and 1D charts where wick structure is visible
⚠️ When NOT to Use
• Very low-liquidity markets
• Symbols with unreliable candle structure
• Random spike candles from illiquid prints
• News candles with unstable spreads
• Extremely noisy ranges where every candle has exaggerated wicks
🎛️ Key Inputs
• ATR Length → controls normalization for wick size and visual spacing
• Wick Context Lookback → controls structural comparison
• Minimum Wick ATR → controls required wick size
• Minimum Wick / Range → controls required wick dominance inside the candle
• Minimum Relative Volume → filters very thin wick reactions
• Body Reclaim Buffer ATR → controls the reclaim rail threshold
• Failure Buffer ATR → controls where absorption fails
• Room Lookback → controls the room reference
• Visual settings → control pocket, rails, labels, tags, panel, and bar colors
🖥️ Interface & Visual Design
The visual hierarchy is designed around the wick pocket first, then the reclaim rail.
The pocket defines the reaction, the body reclaim rail defines improvement, the failure shelf defines risk, and the panel gives a quick state read.
The goal is a premium wick absorption map without turning the chart into a generic candle-label board.
🧪 Practical Usage Workflow
1. Check whether a wick absorption pocket is active
2. Read the reversal score and action state
3. Inspect the body reclaim rail
4. Compare pocket pressure with room
5. Watch the failure shelf
6. Confirm the context with broader structure and timeframe alignment
🔍 Interpretation Guidelines
A wick absorption pocket means the candle showed a meaningful wick reaction in context.
Body reclaim means price recovered the reclaim rail after the wick reaction.
READY means the rule-based context has enough quality to monitor.
Room is a reference for structure, not a promised target.
🚫 What This Script Is NOT
This script is not a prediction engine.
It is not a guaranteed reversal system.
It is not a generic candle pattern detector.
It is not a volume absorption zone engine.
It is not an automated trading tool.
It does not provide financial advice.
It does not guarantee reversal, continuation, profit, or a specific target.
⚠️ Limitations & Transparency
Wick behavior depends on market structure, liquidity, volatility, session conditions, and timeframe.
Some long wicks are random noise.
Some absorption pockets may fail quickly.
The score is a rule-based context score, not a certainty model.
🧠 Market Context Notes
Wicks can show rejection, absorption, stop activity, or simply noise.
The key question is whether price can reclaim the body rail after the wick event.
Use the pocket as context, not as confirmation by itself.
🧾 Use Case Examples
When price prints a long lower wick into recent structure, the script can map a bullish wick absorption pocket.
If price later reclaims the body rail, the script marks body reclaim and updates the panel state.
If price loses the failure shelf, the script marks absorption failure.
🧱 System Philosophy
This script follows the AGPro Series approach: turn a familiar chart behavior into a structured decision-support map.
The focus is not prediction. The focus is wick context, body reclaim, pressure, room, invalidation awareness, and visual clarity.
🔐 Non-Promise Statement
No script can remove uncertainty from markets.
This tool does not promise accuracy, profitability, or future price movement.
Its purpose is to organize wick absorption context so the user can interpret the chart more clearly.
📉 Risk Disclosure
Trading involves risk.
Market conditions can change quickly, and any analytical output can fail.
Users are responsible for their own decisions, risk management, and trade execution.
This script is for educational and analytical purposes only and does not provide financial advice.
📚 Educational Note
Do not read a wick by itself.
The strongest reads usually come when wick absorption, body reclaim, structure, participation, and room align.
Indicator

JOAT Pressure Composite [JOAT]JOAT Pressure Composite
Introduction
JOAT Pressure Composite is an open-source accumulation-distribution and participation oscillator built to measure whether buying or selling pressure is strengthening, weakening, rotating, or diverging from price.
It is designed to expose internal sponsorship behind price movement rather than price movement alone.
The script combines weighted close-location flow, relative-volume sponsorship, volume sigma, effort, efficiency, momentum bias, VWAP bias, and confirmed higher-timeframe context into one composite pressure model.
The problem it solves is hidden participation.
Price can rise on weak effort.
Price can fall on poor sponsorship.
Price can continue moving while internal pressure deteriorates.
Pressure Composite tries to expose those changes earlier by measuring how much of the move is actually being sponsored by participation.
The oscillator pane carries the composite, signal line, envelope, flow ribbon, and extreme states.
At the same time, the indicator projects tailored information onto the main chart.
Price divergence is labeled clearly.
Expansion and absorption states are labeled directly on candles.
Anchored VWAP and trend context are overlaid on price so the oscillator and chart remain connected.
Core Concepts
1. Weighted Pressure Engine
The base flow uses close-location value and weighted volume.
closeLocationValue = (2.0 * close - low - high) / barRange
weightedVolume = volume * sponsorshipFactor
2. Pressure Z-Score
The raw pressure series is normalized with a Z-score.
3. Sigma and Effort Layers
Volume sigma and effort help distinguish aggressive participation from ordinary rotation.
4. Efficiency Bias
The script measures whether price is moving efficiently over the selected lookback.
5. VWAP Bias
Distance from anchored VWAP is normalized in ATR terms.
6. Confirmed Divergence Logic
Pivot-based divergence compares oscillator highs and lows to price highs and lows.
7. Expansion and Absorption Labels
The chart prints Bid Expansion, Offer Expansion, Bull Absorption, and Bear Absorption labels directly on price.
8. Confirmed Higher-Timeframe Context
The script pulls confirmed HTF composite states only.
Features
Composite pressure model: blends pressure, effort, sigma, efficiency, and VWAP bias
Flow ribbon: shows whether pressure is widening or fading
Envelope and extreme states: separates normal expansion from aggressive pressure
Confirmed divergence detection: compares oscillator pivots to price pivots
Clear divergence labeling: bullish and bearish pressure divergence is labeled directly on price
Expansion / absorption labels: market states are marked on actual candles
Anchored VWAP context: projected onto the chart for alignment
Fast / slow trend context: price-side guides remain visible while using the oscillator
Confirmed HTF states: non-repainting higher-timeframe pressure context
No dashboard: information is pushed into the chart and oscillator instead of a table
Input Parameters
Composite Engine:
Smoothing Type
Flow Smoothing
Normalization Length
Relative Volume Baseline
Relative Volume Boost
Volume Sigma Length
Effort Smoothing
Efficiency Length
Signal Length
Envelope Length
Envelope Multiplier
Extreme Multiplier
Pivot Length
Divergence Scan
ATR Length
Qualification / Display:
Use Trend Gate
Trend Fast EMA
Trend Slow EMA
Use VWAP Gate
Minimum Spread
Show Histogram
Show Signal Line
Show Envelope
Show Flow Ribbon
Show Divergence
Tint Price Bars
Shade Momentum States
Show Price Context
Show Price Event Labels
How to Use This Indicator
Step 1: Read the composite vs signal relationship to judge widening or fading pressure.
Step 2: Check whether the state is expansion or absorption.
Step 3: Watch labeled divergences closely, especially after extension.
Step 4: Use anchored VWAP and trend overlays to connect the oscillator back to price structure.
Step 5: Use confirmed HTF context as a quality filter rather than a prediction tool.
Indicator Limitations
Divergences can persist before price responds
Confirmed higher-timeframe context intentionally lags unfinished HTF candles
Low-volume environments can flatten the composite even while price drifts
Pressure quality does not guarantee immediate reversal or continuation
Originality Statement
This script is original in how it integrates weighted close-location flow, RVOL sponsorship, sigma, effort, efficiency, VWAP distance, confirmed HTF context, and direct price-chart state labeling into one coherent participation framework.
The components are combined because they all address one question:
how much real sponsorship exists behind current price movement.
Disclaimer
This indicator is provided for educational and informational purposes only.
It is not financial advice.
Pressure readings and divergences do not guarantee reversal or continuation.
Use the script as context and confirmation, not as a promise of outcome.
Best Use Cases
Measuring whether price movement is being sponsored by real participation
Spotting divergence between price and internal pressure
Reading expansion versus absorption conditions
Combining participation context with VWAP and trend structure
Interpretation Notes
The strongest bullish pressure states usually include positive pressure, supportive spread, constructive effort, and favorable price context above value.
The strongest bearish pressure states are the mirror image.
Divergences are most useful when they appear after extension or at major contextual levels.
Absorption labels should be treated as warnings that apparent directional continuation may be losing quality.
Publication Notes
This script is intended to be published with a clean chart where the oscillator, labeled divergence, and at least one price-context label are clearly visible.
Because there is no dashboard, the publication image should make the chart-side annotations easy to read.
Keep the chart clean so the viewer can immediately understand that the script links oscillator behavior back to price.
-Made with passion by jackofalltrades\
Indicator

Order Flow Imbalance Recovery Planner [AGPro Series]Order Flow Imbalance Recovery Planner
🧠 Core Idea
Can a high-volume displacement pocket recover with enough absorption and follow-through to become actionable chart context?
📌 Overview / What it does
Order Flow Imbalance Recovery Planner maps high-volume displacement candles, converts them into practical imbalance recovery pockets, and evaluates whether price can recover that pocket with measurable response.
The script produces imbalance pockets, recovery rails, continuation corridors, invalidation shelves, target reference rails, event labels, and a compact AG Pro dashboard with a 0-100 recovery score.
This script does not read live order book data, footprint data, bid/ask tape, or true exchange-level order flow. It uses chart-available volume, relative volume, candle displacement, wick response, and recovery behavior as a practical visual proxy.
🎯 Purpose & Design Philosophy
The script was built for traders who want a structured way to study volume imbalance recovery instead of reacting to every large candle.
Many displacement candles look important at first, but the useful question is whether price can return to the pocket, absorb pressure, and recover the key rail.
The design supports a context-first workflow: identify the imbalance, observe the test, evaluate the recovery quality, and then read the current state.
⚡ Why This Script Is Different
Most tools mark volume spikes or wide candles as isolated events.
This script does NOT treat every high-volume candle as a signal.
Instead, it builds a recovery pocket, scores the reaction around that pocket, separates test conditions from READY conditions, and keeps invalidation visible.
⚙️ Methodology
1. Context Detection
The script searches for directional displacement candles with elevated relative volume, meaningful candle range, and sufficient body commitment.
2. Reference Mapping
When a valid imbalance is found, the script maps a recovery pocket and a recovery rail around the displacement body.
3. Reaction Evaluation
Price interaction with the pocket is evaluated through retest behavior, close location, wick response, relative volume, freshness, and failure distance.
4. Visual Output
The script displays the active pocket, recovery rail, target rails, invalidation shelf, event labels, bar state color, and dashboard state.
🗺️ How to Read the Chart
Zones represent the active imbalance recovery pocket.
The recovery rail marks the key level price needs to reclaim or lose before the context improves.
Labels highlight new imbalance pockets, pocket tests, ready recovery events, invalidations, and expirations.
Colors:
• Teal = bullish recovery context
• Pink = bearish recovery context or failed context
• Gold = neutral or wait state
• Indigo = monitor or reference state
The panel summarizes imbalance state, recovery score, flow response, risk, and action.
🚦 Signals & States
• Bull Imbalance → a bullish high-volume displacement pocket has been mapped
• Bear Imbalance → a bearish high-volume displacement pocket has been mapped
• Pocket Test → price is interacting with the active imbalance pocket
• Ready Recovery → the recovery score has reached the required threshold
• Invalidated → price has moved beyond the active failure edge
• Expired → the imbalance pocket is too old to remain active
🔔 Alerts Logic
Alerts can trigger when a new imbalance pocket is locked, when price tests the active pocket, when recovery reaches READY status, or when the context is invalidated.
Alerts are attention markers only. They are not trade instructions and do not guarantee future price behavior.
🧩 Confluence Logic
The context becomes stronger when high relative volume, large displacement, clean pocket retest, wick absorption, and recovery close align around the same pocket.
📊 When to Use
• After high-volume displacement candles
• During pullback and recovery phases
• Around breakout continuation attempts
• When studying absorption after aggressive movement
• On liquid symbols with reliable volume data
⚠️ When NOT to Use
• Very low-liquidity markets
• Symbols with unreliable volume data
• Extremely noisy sideways sessions
• News-driven spikes with unstable spreads
• Markets where chart volume does not represent meaningful participation
🎛️ Key Inputs
• Minimum Displacement Range → controls how large a candle must be relative to ATR
• Minimum Body Ratio → filters weak candles with too much wick noise
• Minimum Relative Volume → controls how much volume confirmation is required
• Minimum Ready Score → controls how strict the READY state is
• Projection Bars → controls how far active pockets and rails extend
• Visual Settings → control labels, zones, right-side tags, panel, font size, and bar colors
🖥️ Interface & Visual Design
The dashboard is designed as a quick decision-support panel, not a separate oscillator.
The chart uses a clear hierarchy: pocket first, recovery rail second, labels third, and targets only after recovery context becomes relevant.
The goal is to keep the chart premium, readable, and useful at first glance.
🧪 Practical Usage Workflow
1. Read the panel state
2. Locate the active imbalance pocket
3. Check whether price is testing or recovering the pocket
4. Review the recovery score and risk
5. Compare the output with broader market structure
🔍 Interpretation Guidelines
A READY state means the script has detected enough recovery behavior around the imbalance pocket to mark the context as worth attention.
It does not mean price must continue.
Use the output as structured context together with trend, liquidity, volatility, and higher-timeframe conditions.
🚫 What This Script Is NOT
This script is not a prediction engine.
It is not a true order book, footprint, or bid/ask delta tool.
It is not an automated trading system.
It does not provide guaranteed signals.
It is not financial advice.
⚠️ Limitations & Transparency
The script uses chart-available data only.
Volume quality differs between markets, brokers, exchanges, and asset classes.
Timeframe changes may alter the appearance and timing of imbalance pockets.
Extreme volatility may produce rapid invalidation or repeated displacement events.
🧠 Market Context Notes
Order-flow style interpretation should always consider liquidity, volatility, structure, and session context.
A strong recovery pocket in a clean trend may carry more practical meaning than the same pocket inside a noisy range.
🧾 Use Case Examples
When price creates a high-volume bullish displacement candle and later retests the pocket, the script evaluates whether the retest shows enough absorption and recovery strength to become a READY context.
When price loses the recovery edge, the script marks invalidation rather than keeping the setup visually alive.
🧱 System Philosophy
AGPro Series tools are designed as decision-support engines.
The goal is not to simplify markets into blind signals, but to organize complex price behavior into readable structure, state, and risk context.
🔐 Non-Promise Statement
No script can provide certainty.
No signal guarantees continuation, reversal, or profit.
Outputs should be interpreted as analytical context only.
📉 Risk Disclosure
Trading involves risk.
Users are responsible for their own decisions, risk management, and trade execution.
This script is for educational and analytical purposes only and does not provide financial advice.
📚 Educational Note
Use this tool to study how volume displacement, imbalance pockets, absorption, and recovery behavior interact across different markets and timeframes.
Indicator

Foundry Range Ledger [JOAT]Foundry Range Ledger
Introduction
Foundry Range Ledger is an open-source range and auction-structure indicator that maps active supply, active demand, and the live auction corridor between them.
The script is built for traders who need to know where the market is being offered, where it is being defended, and whether price is rotating cleanly between those two points or breaking away from them.
Instead of relying on a large dashboard to explain everything, Foundry is designed so the main value is visible directly on the chart.
The indicator draws split supply and demand boxes, top and bottom rails, an equilibrium reference, an auction corridor, and candle-state coloring so the structure can be read without hunting through text.
The problem Foundry solves is range readability.
Many range indicators either mark too little and disappear once the first break occurs, or they mark too much and become unreadable.
Foundry focuses on a smaller number of cleaner, higher-visibility structures so the trader can immediately understand whether the market is boxed, rotating, absorbing, rejecting, or releasing through an active zone.
Core Concepts
1. Pivot-Derived Supply and Demand Seeding
Foundry begins with confirmed pivot highs and pivot lows.
Each confirmed pivot can seed a new zone.
If a new pivot forms close enough to the prior pivot of the same type, the zone is treated as a stronger cluster rather than as unrelated noise.
This lets the script represent repeated defense or repeated supply more clearly than a single-touch model.
2. Split-Zone Construction
Each zone is drawn as a body with two internal halves.
For supply, the upper half represents the more aggressive offer side and the lower half represents the response pocket below it.
For demand, the lower half represents the more aggressive bid side and the upper half represents the response pocket above it.
This creates a cleaner institutional-style visual than a single flat rectangle.
3. Top, Bottom, and Equilibrium Rails
Foundry does not leave the zone as only a filled box.
Each active zone has clear rails at its boundary and a dashed equilibrium line through its center.
These rails make it easier to judge exactly where price is entering, holding, or releasing from the zone.
4. Participation Inside the Zone
The indicator tracks directional participation inside the active zone.
Touches are counted only when price actually interacts with the zone.
Buy-side and sell-side participation are then compared to determine whether the zone is absorbing or rejecting.
This information drives both state text and the internal color emphasis of the split halves.
5. Auction Corridor Logic
When both an active supply zone and an active demand zone exist at the same time, Foundry calculates the live auction corridor between them.
That corridor is the space where price is rotating between opposing areas of interest.
The script highlights that corridor directly on the chart and adds an equilibrium reference so range traders can see where the market is most balanced.
6. Release and Post-Break Behavior
A zone is not immediately forgotten once price breaks it.
Foundry can keep released zones visible as post-break context, allowing the trader to study whether price is cleanly escaping or coming back to retest the released area.
This is important because the first break is often only part of the story.
The retest frequently matters more than the break itself.
7. Candle-State Coloring
Candles are recolored based on where price is interacting.
If price is trading inside active supply, the candles reflect offer pressure.
If price is trading inside active demand, the candles reflect bid pressure.
If price is rotating in the live corridor, the candles shift toward the neutral response color.
This creates immediate chart feedback without cluttered shapes.
Features
Confirmed supply and demand zones: Zones are seeded from confirmed pivots rather than unconfirmed intrabar motion
Cluster-aware strengthening: Repeated pivots near the same level strengthen the visual and informational quality of the zone
Split zone bodies: Each supply and demand box is divided internally for cleaner auction reading
Boundary rails and midpoint rail: Top, bottom, and equilibrium references remain visible directly on the chart
Auction corridor cloud: When both sides are active, the space between them is highlighted as a live range environment
Stateful release behavior: Broken zones can remain visible as post-break structure instead of vanishing instantly
Retest labels: Optional tags mark when price revisits released structure
Zone interaction candle coloring: Price bars reflect supply interaction, demand interaction, or corridor rotation state
Six-row dashboard: Only the highest-value summary fields remain, keeping the chart as the primary information surface
Confirmed-bar alerts: Alerts are available for releases, retests, active auction states, and balanced corridor conditions
Input Parameters
Range Construction:
Pivot Length: Number of bars required on each side to confirm a pivot
Cluster Tolerance ATR: Distance allowed between repeated pivots before they are treated as one stronger cluster
Zone Width ATR: ATR-scaled depth of each zone
Forward Extend Bars: Number of bars the active zone projects forward on the chart
Minimum Zone Age: Minimum number of bars before a break qualifies as a meaningful release
Context and Behavior:
Show Auction Cloud toggle
Keep Broken Zones toggle
Show Retest Tags toggle
Show Zone Labels toggle
Recolor Candles toggle
Broken Zone Fade Bars: Controls how long released zones remain visible when historical persistence is disabled
Break Body Quality and filter toggle: Prevents weak-body candles from being treated as high-quality releases
How to Use This Indicator
Step 1: Identify Whether Supply, Demand, or Both Are Active
If only supply is active, the market is currently capped from above.
If only demand is active, the market is currently supported from below.
If both are active, price is trading inside a live auction corridor.
That is the first and most important read.
Step 2: Read the Box Geometry, Not Just the Labels
The top and bottom rails define the actual interaction edges.
The dashed midpoint shows the local equilibrium of the zone.
When price enters the zone, watch where it spends time, where it rejects, and whether the candles recolor in the expected direction.
Step 3: Use the Corridor as a Rotation Map
When both zones are active, the space between demand top and supply bottom becomes the tradable balance corridor.
That space is where mean-reversion and auction-style logic are most relevant.
A clean release out of that corridor changes the context immediately.
Step 4: Watch Release Quality
Foundry does not treat every poke outside a zone as equally important.
Body quality can be used as a filter so weak noise does not count the same as committed expansion.
This helps reduce false structural releases.
Step 5: Retests Matter
A released zone that price retests cleanly can be more informative than the initial break itself.
Use the retest labels and the remaining zone structure to judge whether the prior range is truly being left behind or simply probed.
Indicator Limitations
Pivot-based zones confirm only after the pivot is complete, so the script will always favor non-repainting structure over earliest possible marking
If price trends strongly without forming relevant repeat pivots, the indicator may show fewer zones than a more aggressive retail-style detector
A zone is contextual, not predictive; price can ignore supply or demand completely when momentum is strong enough
Balanced corridor conditions do not guarantee rotation and can still resolve into directional continuation
The recolored candle state is contextual feedback, not an entry signal by itself
Originality Statement
Foundry Range Ledger is original in the way it combines pivot-seeded supply and demand bodies, split internal zone construction, visible auction corridor rendering, participation-aware state handling, and post-break structural persistence into one chart-first overlay.
The script is designed to make range structure visually readable, not to hide it behind a large panel or reduce it to generic rectangles.
Disclaimer
This indicator is provided for educational and informational purposes only.
It does not provide financial advice or trading recommendations.
Supply and demand zones can fail, release, or be ignored entirely by price.
Balanced ranges can break violently without warning.
Always use independent confirmation and risk management.
Indicator

Caldera Relative Pressure [JOAT]Caldera Relative Pressure
Introduction
Caldera Relative Pressure is an open-source effort-versus-result oscillator designed to measure whether price movement is being supported by participation, directional efficiency, and close location within the bar. It is built to distinguish clean directional drive from absorption, exhaustion, and two-way rotation.
The problem this script solves is that raw price movement does not explain whether a move is efficient, forced, rejected, or fading. A wide candle on low participation is not the same as a wide candle with expanding participation and strong close location. Caldera converts candle anatomy, relative volume, range behavior, and baseline context into a structured pressure model that is easier to read in real time.
Core Concepts
1. Effort-Versus-Result Framework
The script blends three weighted components:
Effort: candle body and directional spread relative to true range
Result: directional efficiency relative to ATR
Location: where the bar closes inside its own range, adjusted by wick pressure
Those three parts are multiplied by relative volume so that quiet moves and committed moves do not receive the same score.
2. Directional Drive Detection
Bull and bear drive states require a sufficiently large composite pressure reading, positive spread between the composite and its signal line, and close location agreement. This keeps small or conflicted moves from being treated as decisive tape control.
3. Absorption Detection
Absorption is identified by unusually strong volume combined with limited body progress and asymmetric wick behavior. In practical terms, that means participation increased but result did not expand proportionally. This is often a useful clue that one side is meeting aggressive pressure with passive liquidity.
4. Exhaustion Detection
The script also tracks exhaustion. It compares the current pressure state with recent pressure extremes and short-term momentum fade. A move can still be directionally positive or negative while simultaneously losing efficiency.
5. Multi-Layer Pressure Visualization
The pane includes a histogram, composite line, signal line, drive quality line, balance line, participation band, efficiency band, location band, rotation ribbon, and reference ladders. These are separate on purpose:
The histogram shows raw directional pressure
The composite and signal lines show state and rotation
Drive quality shows how healthy the move is
Participation, efficiency, and location bands show what is contributing to the reading
Features
Composite pressure engine: Candle anatomy, ATR efficiency, location, and relative participation
Bull and bear drive states: Measures directional initiative
Bull and bear absorption states: Flags high-effort / low-result behavior
Bull and bear exhaustion states: Flags fading pressure after prior extremes
Baseline context filter: Can require price to align with a directional baseline
Drive quality and balance lines: Separate force from quality
Participation, efficiency, and location bands: Show what is driving the current reading
Rotation ribbon: Highlights positive and negative carry
Dashboard summary: State, bias, strength, regime, context, participation, quality, balance, rotation, and compression
Input Parameters
Core Engine:
Relative Volume Length
Range Normalization Length
Baseline Context Length
Signal Smoothing
Pressure Model:
Effort Weight
Result Weight
Location Weight
Drive Threshold
Expansion Threshold
State Logic:
Absorption Volume Z
Absorption Range Cap
Exhaustion Lookback
Recent State Window
Baseline Context Filter toggle
How to Use This Indicator
Step 1: Read the State Row
The State row tells you whether the market is currently showing directional drive, absorption, exhaustion, or balance. This is the first layer of interpretation.
Step 2: Compare Pressure With Quality
A strong pressure reading with weak drive quality can be unstable. A smaller pressure reading with improving quality can be more constructive. Use those two together rather than treating histogram height alone as the answer.
Step 3: Inspect Participation, Efficiency, and Location
These bands explain why the model is leaning in one direction. If participation is strong but efficiency is weak, the move may be absorption. If efficiency and location are strong but participation is weak, the move may be less durable.
Step 4: Watch the Rotation Ribbon
Rotation tells you whether pressure is continuing, stabilizing, or turning. This can be useful for early changes in internal character even when the headline state has not fully flipped yet.
Indicator Limitations
Relative volume is broker and instrument dependent, so the same thresholds may not transfer perfectly across markets
Absorption and exhaustion are contextual states, not guaranteed turning points
High-volatility event bars can temporarily distort effort-versus-result relationships
A baseline filter improves context but can delay state recognition during sharp reversals
Originality Statement
Caldera Relative Pressure is original in the way it turns candle anatomy, participation, efficiency, and location into a layered pressure model with separate drive, absorption, and exhaustion states. The script is not a simple volume oscillator or candle-coloring tool. Its design is centered on explaining how price is moving, not only how far it moved.
Disclaimer
This script is provided for educational and informational purposes only. It is not financial advice. Pressure readings are based on historical bar data and can misclassify conditions during abnormal liquidity or fast event-driven moves. Always use independent confirmation and prudent risk management.
Indicator

Effort vs Result Reaction Map [AGPro Series]Effort vs Result Reaction Map
⚖️ OVERVIEW
Effort vs Result Reaction Map is a premium volume-price reaction indicator built around one of the most practical ideas from Wyckoff and Volume Spread Analysis: effort only matters when it is compared with result.
Many volume tools stop at identifying high volume, relative volume spikes, wide candles or bullish/bearish pressure. This script goes further by asking a more selective question:
Is the market actually getting progress for the effort being spent?
The indicator compares normalized participation effort, ATR-adjusted price progress, close-location quality, directional efficiency and wick behavior. The output is a clean reaction map that highlights two specific event families:
• High effort + poor result
• Low effort + strong result
That makes the script different from a simple volume spike detector, a generic pressure map, a support/resistance drawer or a full Wyckoff phase tool. It is focused on the moment where participation and progress become meaningfully disconnected.
🔬 CORE IDEA
Effort is built from two dimensions:
• Relative volume versus a rolling participation baseline
• Candle spread normalized by ATR
Result is built from:
• Price progress over a configurable number of bars
• Close-location quality in the direction of progress
• ATR-normalized movement quality
Efficiency measures the relationship between those two sides. A bar can show strong volume, but if price does not achieve directional progress, the script treats that as a potential failed-progress reaction. A bar can also move cleanly with surprisingly low effort, which can reveal ease of movement and directional acceptance.
🧭 WHAT MAKES IT DIFFERENT
Most public volume indicators answer one of these questions:
• Is volume high?
• Is relative volume expanding?
• Is price near a volume shelf?
• Is pressure bullish or bearish?
• Is a Wyckoff phase forming?
Effort vs Result Reaction Map answers a narrower and more actionable chart-reading question:
Did the market receive enough result for the effort it spent?
This keeps the tool focused and prevents it from overlapping with broader volume profile, relative volume, delta, session reaction or support/resistance scripts. It does not try to label accumulation, distribution, spring, upthrust or phase structure. Instead, it turns effort/result imbalance into a compact reaction framework that can sit cleanly on any chart.
🎯 SIGNAL TYPES
High Effort + Poor Result
This event appears when participation and spread are unusually active but price progress remains weak. The script studies wick behavior and candle direction to estimate which side attempted progress and failed. The label then expresses the opposite reaction bias:
• Failed Bull Progress
• Failed Bear Progress
Low Effort + Strong Result
This event appears when price makes strong directional progress while effort remains unusually light. This can suggest ease of movement, cleaner directional travel or a lack of opposing participation in that moment:
• Low Effort Rise
• Low Effort Drop
Each event must pass a confidence threshold and a visual cooldown before it appears on the chart. This keeps the output selective and suitable for publication-quality screenshots.
🟦 REACTION BOXES
The script can draw rectangular reaction boxes around qualified events. These boxes are not generic support and resistance zones. They are event-native reaction ranges created only when the effort/result engine finds a meaningful imbalance.
Reaction boxes help the user track whether the market later respects, revisits or ignores the area where effort and result became disconnected. The box length, padding, transparency and minimum confidence are configurable.
This gives the chart more structure without turning the indicator into another broad zone tool.
📊 PANEL
The compact panel reports:
• Effort
• Result
• Efficiency
• Reaction Bias
• Confidence
The first panel row follows the AGPro standard format: one merged blue header row containing only the script name. Panel location, panel theme and panel font size are all configurable from the settings.
⚙️ KEY SETTINGS
Engine
• Effort Baseline Length controls the volume normalization baseline.
• ATR Normalization Length controls spread, progress and object spacing.
• Result Progress Bars defines how far back the result comparison looks.
• Volume Weight In Effort balances relative volume versus candle spread.
Reaction Thresholds
• High Effort Threshold defines unusual participation.
• Low Effort Threshold defines unusually light participation.
• Poor Result Threshold filters failed-progress events.
• Strong Result Threshold filters low-effort strong-result events.
• Minimum Event Confidence controls final event selectivity.
• Visual Cooldown Bars keeps labels and boxes from clustering.
Reaction Boxes
• Box Minimum Confidence keeps boxes more selective than labels if desired.
• Box Extend Right Bars controls how long reaction ranges remain visible.
• Box ATR Padding gives boxes a clean margin around the event candle.
• Box Transparency controls chart softness.
Labels And Markers
• Event labels can be enabled or disabled.
• Label confidence can be shown or hidden; it is hidden by default for cleaner screenshots.
• Label font size defaults to Normal.
• Label offset uses ATR so labels stay away from candle bodies.
• Directional markers provide a minimal visual cue for qualified reactions.
🧠 HOW TO USE
Apply the script to a liquid market and start with the default settings.
Watch for high-effort poor-result labels when volume and spread expand but the market fails to make clean progress. These areas can be useful for studying absorption, failed pushes and short-term reaction shifts.
Watch for low-effort strong-result labels when price moves cleanly without requiring heavy participation. These events can help identify easier directional travel and cleaner movement conditions.
Use the reaction boxes as context zones created by the event itself. They are best read together with structure, trend context, liquidity areas, session behavior or your own discretionary framework.
✅ BEST USE CASES
• Spotting failed directional progress after heavy participation
• Comparing volume effort with actual price result
• Identifying clean movement when result expands on lighter effort
• Studying short-term absorption and efficiency shifts
• Adding Wyckoff/VSA-inspired logic without using a full phase detector
• Keeping a premium chart layout with selective labels and contextual boxes
🧩 LIMITATIONS AND TRANSPARENCY
Effort vs Result Reaction Map is an analytical indicator, not a strategy.
It does not classify full Wyckoff phases, does not draw generic support/resistance, and does not attempt to forecast future price. Its purpose is to organize observed effort/result behavior into a clean visual framework.
Event quality depends on symbol behavior, timeframe, volume reliability and selected thresholds. Markets with unreliable volume data may need more conservative settings.
The script is designed to be selective by default, but users can tune thresholds, confidence, cooldown, label size, panel theme and reaction box visibility to match their preferred chart style.
Indicator

Volume Absorption Zones [AGPro Series]Volume Absorption Zones
🔷 Overview
Volume Absorption Zones is a chart-overlay volume analysis tool built around one specific market condition: high effort with limited price result.
Instead of marking every high-volume candle as important, the script looks for candles where participation expands while the candle range stays compressed, the close location shows directional control, and the resulting price area can be tracked as a forward absorption zone.
When a valid event appears, the script draws a rectangular bullish or bearish absorption box, projects it forward, adds an invalidation level, and continues monitoring whether the zone is defended, failed, or left as active context.
The goal is to make absorption visible as a lifecycle on the chart rather than a one-bar marker.
🔹 Core Idea
Absorption is not the same thing as a volume spike.
A volume spike can appear during expansion, exhaustion, liquidation, news reactions, or ordinary session activity. This script focuses on a narrower structure:
- Volume expands relative to its recent baseline.
- Candle spread remains compressed relative to its recent range baseline.
- The close location shows directional control.
- The wick/body structure leaves a usable absorption range.
- The zone remains visible after the event so later defense or failure can be evaluated.
Bullish absorption is modeled as high participation absorbed near the lower side of the candle while the close finishes with upper-side control.
Bearish absorption is modeled as high participation absorbed near the upper side of the candle while the close finishes with lower-side control.
This makes the script an effort-versus-result zone model, not a generic volume highlight.
💎 What Makes This Script Different
Most volume absorption scripts and high-volume tools stop at one of three outputs:
- A candle color.
- A triangle or label.
- A simple high-volume marker.
Volume Absorption Zones goes further by converting the detected event into a managed chart zone.
The script keeps asking questions after the first signal:
- Where is the absorption range?
- Is the zone still active?
- Has price defended the zone?
- Has price closed beyond the invalidation level?
- Is follow-through improving or fading?
- How old is the zone?
- Is the current context bullish absorption, bearish absorption, defended, failed, or mature?
This lifecycle approach is the main design difference. The first event creates the zone; the later candles tell the story.
🧭 Difference From Other AGPro Scripts
This script was designed to sit in a separate lane from existing AGPro volume and price-action tools.
It is not Volume Climax Detector.
Volume Climax Detector focuses on extreme participation and climax-style events. Volume Absorption Zones focuses on compressed effort: elevated volume with limited spread and a forward zone that can later defend or fail.
It is not Relative Volume Pressure Map.
Relative Volume Pressure Map classifies broader relative-volume pressure and pressure efficiency. Volume Absorption Zones does not try to build a broad pressure regime. It isolates concrete absorption ranges and follows their lifecycle.
It is not Volume Delta Imbalance Map.
Volume Delta Imbalance Map is built around flow imbalance behavior. Volume Absorption Zones does not estimate bid/ask delta, CVD, or directional transaction flow. It stays OHLCV-native and uses candle structure plus relative volume effort.
It is not Volume Profile Acceptance Ladder or a POC tool.
This script does not build volume profile bins, value area, POC magnets, acceptance ladders, or auction distribution zones. Its zones come only from absorption-candle conditions.
It is not a general support/resistance drawer.
The boxes are not swing highs, swing lows, pivots, order blocks, or manually projected support/resistance areas. A box appears only when the absorption engine detects high effort, compressed result, close-location control, and sufficient quality.
That separation is important: the script is not a renamed version of another AGPro concept. Its role is absorption-zone lifecycle tracking.
⚙️ How The Engine Works
The script evaluates each candle through a structured sequence:
1. Volume Effort
Current volume is compared with a rolling volume baseline. The event must show elevated participation before any absorption zone can be created.
2. Spread Compression
The candle range is compared with a recent spread baseline. A qualifying event needs limited price travel relative to normal range behavior.
3. Close Location
Bullish absorption requires the close to finish in the upper part of the candle. Bearish absorption requires the close to finish in the lower part of the candle.
4. Absorbed Wick Share
The script checks whether the candle leaves enough absorbed-side structure to define a useful zone.
5. Absorption Quality
Effort, compression, and close-location behavior are blended into a quality score. This helps filter weaker events and keeps the chart focused on stronger absorption structures.
6. Zone Projection
When the event qualifies, the script draws a rectangular zone and extends it forward for the selected number of bars.
7. Invalidation Level
Each zone receives an ATR-buffered invalidation line beyond the absorption range.
8. Defense / Failure Tracking
After the zone is created, the script tracks whether price defends the range or closes beyond invalidation.
📦 Zone States
Active
The zone has been created and remains unresolved.
Defended
Price interacts with the zone and closes back in favor of the zone direction.
Failed
Price closes beyond the ATR-buffered invalidation level.
Mature
The zone remains active beyond the selected age threshold.
These states help the user understand whether an absorption zone is still relevant, has been respected, or has lost its structure.
📊 AGPro Panel
The dashboard summarizes the latest absorption context without requiring the user to inspect every box manually.
Panel fields:
- Absorption Side
- Effort Score
- Spread Compression
- Follow-through
- Zone Status
- Zone Age
The panel follows the AGPro publication layout:
- Single merged blue header row.
- Header contains only the script panel title.
- Adjustable panel location.
- Adjustable panel theme.
- Adjustable panel font size.
🎯 Visual Design
The script is designed to be readable on clean publication charts:
- Bullish zones use the AGPro teal state color.
- Bearish zones use the AGPro pink state color.
- Failed zones shift to the neutral state color.
- Defended zones shift to the accent state color.
- Invalidation lines are dotted and subtle.
- Event labels are offset from candles so they remain visible.
- Label cooldown and maximum-label settings keep density under control.
- Active zone count is capped for performance and readability.
The default visual style is intentionally active, because absorption is easier to understand when the zone lifecycle is visible on the chart.
🔔 Alerts
Included alert conditions:
- Bullish Absorption Zone
- Bearish Absorption Zone
- Absorption Zone Defended
- Absorption Zone Failed
These alerts are tied to the same lifecycle states shown on the chart.
🛠 Key Inputs
Volume Baseline Length
Controls the lookback used to normalize current volume.
High Effort Threshold
Defines how much relative volume expansion is required before a candle can qualify.
Spread Baseline Length
Controls the range baseline used for spread compression.
Maximum Spread Ratio
Defines how compressed the candle must be relative to its baseline.
Strong Close Location
Controls how strongly the candle must close toward the active side.
Minimum Absorbed Wick Share
Requires visible absorbed-side candle structure before a zone can be accepted.
Minimum Absorption Quality
Filters events by the combined effort, compression, and close-location score.
Zone Extension Bars
Controls how far absorption boxes project forward.
Max Active Zones
Caps the number of active boxes retained on the chart.
Invalidation Buffer ATR
Controls the ATR buffer used for each zone's invalidation level.
Mature Zone Age
Defines when an unresolved zone is considered mature.
Max Zone Memory Bars
Removes older zones so the chart remains focused on recent, visible absorption context.
Label Cooldown Bars
Controls spacing between event labels.
Max Event Labels
Controls the maximum number of retained labels.
Label Font Size / Panel Font Size
Both default to Normal and can be adjusted from settings.
🧩 Best Use
Volume Absorption Zones is designed for traders who want to study:
- High-effort, low-result candles.
- Absorption zones that remain visible after the initial event.
- Whether later price action defends or fails those zones.
- Market areas where volume expands but price travel remains compressed.
- Weekly, daily, and intraday absorption structures without needing a lower-pane volume dashboard.
The script can be used across symbols and timeframes where PulseWire volume data is available. The quality of results depends on the instrument, session structure, liquidity, and reliability of the volume feed.
🔍 Limitations & Transparency
This script uses standard PulseWire OHLCV data.
It does not access order book data, bid/ask data, footprint data, true delta, or exchange-native transaction flow.
The absorption model is rule-based. It approximates absorption through relative volume effort, spread compression, close-location behavior, wick/body structure, and later zone interaction.
It does not predict future price movement and it does not issue buy or sell commands. It organizes absorption context on the chart so users can evaluate how price behaves around those zones.
Different instruments and timeframes may require input adjustments. Thin markets, irregular volume feeds, major gaps, and unusual sessions can affect event quality.
✅ Chart Reading Guide
For the clearest view, use a clean chart with only this script loaded. The boxes, labels, dotted invalidation lines, and panel are designed to explain the absorption lifecycle without requiring additional overlays.
Indicator

AMD Absorption | AnonycryptousAmd Absorption | Anonycryptous
Description & user manual
Why this indicator is different
Most AMD indicators do the same thing. They draw a box for Asia, a box for London, a box for New York, and call it a cycle. They show you where the sessions are. They do not show you what is happening inside them.
Amd Absorption works differently.
It detects the full accumulation-manipulation-distribution cycle mechanically, bar by bar, within whatever session windows you define. It does not assume the cycle follows a fixed schedule. It finds it where it actually forms. And it only confirms a signal when the manipulation sweep shows evidence of institutional absorption — high volume on a bar that barely moves. That is the difference between a sweep that fails and a sweep that leads somewhere.
Most traders can look at a chart in hindsight and identify an AMD cycle. The challenge is identifying it in the moment, on any asset, at any time. That is what this indicator is built to do.
It works on every instrument. Crypto, futures, forex, stocks, commodities. The session windows, detection parameters, and absorption thresholds adapt to the asset class through a preset system. The same logic that detects a liquidity sweep on a bitcoin five-minute chart detects it on a gold two-minute chart, a nasdaq futures one-minute chart, or a forex fifteen-minute chart.
Important notice
Amd Absorption generates trading signals based on pattern detection and volume analysis.
These signals are not financial advice.
They do not predict the future.
They do not guarantee profitability.
All trading decisions are made entirely by the user.
Always manage your own risk. Always apply your own judgment.
1. Overview
Amd Absorption is a cycle detection and entry timing indicator built around three phases of price behavior: accumulation, manipulation, and distribution.
What it includes:
- Mechanical AMD cycle detection within configurable session windows
- Absorption filter on the manipulation bar using volume and body/range analysis
- Five asset class presets with individually tuned detection parameters
- Three-phase candle coloring showing accumulation, manipulation, and distribution in real time
- Absorption dot markers on qualifying manipulation bars
- Distribution target box with configurable stop loss mode and risk/reward ratio
- Volume-weighted price levels as structural reference and target zones
- Vertical session boundary lines at open and close
- Configurable session background colors
- Live dashboard showing session status, preset, last signal, and absorption statistics
- Alerts for bull and bear setups
2. The AMD cycle
2.1 Accumulation
A defined period of price compression. The market moves within a narrow range while smart money builds a position. Amd Absorption detects this as a rolling high-low range falling below a configurable percentage threshold over a set lookback period. During this phase, candles are colored gray.
2.2 Manipulation
After accumulation, price sweeps beyond the range boundary — above the high for a bearish setup, below the low for a bullish setup. This is the liquidity grab. Market orders resting beyond the range are collected. Stops are hit. Retail traders enter in the wrong direction. During this phase, candles are colored in the direction of the sweep — red for a bear sweep, green for a bull sweep.
2.3 Distribution
The real move begins. Price reverses from the sweep extreme and creates a fair value gap — a three-candle imbalance confirming displacement. The signal fires. A distribution target box is drawn from the entry close to the calculated take profit level. Candle coloring continues in the signal direction for the duration of the distribution box, then stops automatically.
The cycle can repeat multiple times within a single session. There is no hard limit on setups per session.
- A note on signal quality versus cycle validity
An AMD cycle that does not produce a signal triangle can still play out fully. The triangle means the manipulation bar showed mechanical absorption — volume confirmed, body was small. That is additional evidence of institutional presence at the sweep level. It raises conviction. It does not make setups without it invalid. Many clean AMD cycles complete without a qualifying absorption bar. The candle coloring will show the full cycle regardless. The triangle is a quality filter, not the only valid setup.
3. The absorption filter
The absorption filter is what separates Amd Absorption from a standard cycle detector.
A manipulation sweep can occur for many reasons. Not every sweep leads to a reversal. The ones that do tend to share a specific characteristic on the sweep bar itself: high volume combined with a small candle body relative to the bar's range.
This pattern means price moved far on heavy participation — a big wick — but the bar closed near where it opened. Something was absorbing the selling or buying pressure. The move did not follow through. That is absorption. It is the mechanical fingerprint of institutional defense of a level.
When the absorption filter is enabled, the signal only fires if the manipulation bar meets both conditions: volume above a configurable multiple of the rolling average, and a body-to-range ratio below a configurable threshold. Bars that qualify are colored in the absorption color and marked with a dot above or below the candle.
The filter can be disabled. With the filter off, every valid AMD + FVG pattern fires a signal. With it on, only the setups with volume confirmation fire. The trade-off is signal frequency versus quality.
4. Presets
Presets automatically configure the four core detection parameters — accumulation lookback, maximum range width, absorption volume multiplier, and absorption body ratio — for each asset class.
Crypto
Lookback: 15 bars. Range: 1.20%. Volume multiplier: 1.2×. Body ratio: 0.55.
Wider range tolerance for volatile 24/7 markets. Looser volume threshold because crypto volume behavior differs from traditional markets.
Futures
Lookback: 20 bars. Range: 0.40%. Volume multiplier: 1.4×. Body ratio: 0.45.
Tight range detection for institutionally driven instruments. Higher volume requirement to match the tick-level precision of futures order flow.
Forex
Lookback: 25 bars. Range: 0.25%. Volume multiplier: 1.3×. Body ratio: 0.50.
Longest lookback and tightest range for the slow, deliberate consolidations common in major pairs. Moderate volume threshold.
Stocks
Lookback: 22 bars. Range: 0.50%. Volume multiplier: 1.4×. Body ratio: 0.50.
Balanced settings between futures and forex. Works across individual equities and equity indices.
Commodities
Lookback: 22 bars. Range: 0.35%. Volume multiplier: 1.4×. Body ratio: 0.50.
Designed for gold, silver, oil, and similar instruments. Tighter than forex but more tolerant than futures. Handles institutional spikes well.
Custom
All four parameters are set manually in the Amd Logic and Absorption Filter groups. Use this when the presets do not match the behavior of a specific instrument or timeframe combination.
Note: the manipulation search window, FVG size filter, and ATR length are always set manually regardless of preset. These three parameters are active for all presets and can be adjusted freely.
5. Sessions
Amd Absorption detects AMD cycles only within active session windows. Outside of sessions, no accumulation is tracked, no sweeps are detected, and candle coloring is inactive. This prevents false setups forming during off-hours thin markets.
Three sessions are configurable: Asia, London, and New York. Each session has an independent toggle, a clock-picker for start and end time, and a background color. All session times are entered in your selected timezone, which can be set to any UTC offset from UTC-12 to UTC+12.
A thin vertical line marks both the opening and closing of each active session. This gives you a clear visual boundary for each session's cycle. The opening line and closing line use the same configurable color.
6. Distribution box
When a signal fires, a distribution target box is drawn from the entry bar forward. The box represents the expected move from entry to take profit.
Two stop loss modes are available:
Atr mode
Stop loss distance is calculated as ATR × the configured multiplier. This gives a consistent distance across all setups regardless of the exact FVG size. Useful for instruments where ATR matches your natural stop placement.
Fvg structure mode
Stop loss is placed at the outer edge of the FVG candle — above the FVG high for a bear setup, below the FVG low for a bull setup. This uses the actual market structure as the invalidation point, which is how many practitioners manage stops on this type of setup.
The take profit is calculated as: entry ± stop distance × RR ratio. The default ratio is 2.0, giving a 1:2 reward-to-risk setup. The ratio is adjustable.
The box width is fixed in bars. It does not track price. When the configured number of bars elapses, candle coloring for the distribution phase stops automatically. For position sizing and stop management, Risk Management Engine by Anonycryptous can be used alongside this indicator.
7. Price levels
Volume-weighted pivot highs and lows are drawn as horizontal reference lines. Pivot highs above current price act as resistance. Pivot lows below current price act as support. Each level shows its exact price value.
Line appearance reflects volume strength. A stronger volume reading at the pivot produces a more visible glow layer. Weaker pivots are more subdued.
Levels disappear automatically when price touches them. The maximum number of visible levels is configurable. These levels serve as structural context and potential distribution targets for confirmed signals.
8. Candle coloring
Amd Absorption colors candles to show the current phase of the cycle. The coloring is active only within session windows.
Gray — accumulation phase. Price is consolidating within the detected range.
Red (bear) or green (bull), dim — manipulation phase. A sweep has been detected and the indicator is searching for a confirming FVG. Colors the sweep candles and any subsequent candles until the FVG fires or the search window expires.
Absorption color (default purple) — absorption bar. A candle within the manipulation phase that meets both volume and body conditions. Also marked with a dot above or below the bar.
Red (bear) or green (bull), dim — distribution phase. Fires from the signal bar and continues until the distribution box width elapses.
Priority: absorption color overrides distribution, which overrides manipulation, which overrides accumulation.
9. Dashboard
The dashboard shows:
- Session — current active session or off
- Preset — active asset preset
- Last signal — direction of the most recent confirmed signal
- Last session — which session the last signal occurred in
- Abs / setups — absorption-confirmed signals vs total AMD setups detected
- Abs filter — whether the absorption filter is on or off
- Accumulation — current accumulation state: active, searching, or none
Position is configurable: top left, top right, bottom left, or bottom right. Size is configurable: tiny, small, or normal.
10. Settings reference
10.1 Sessions
- Timezone — utc offset for session time entry
- Asia / London / New York — toggle, time picker, background color per session
- Show session open lines — vertical lines at session open and close
- Session line color
10.2 Preset
- Asset preset — crypto / futures / forex / stocks / commodities / custom
10.3 Amd logic
- Accumulation lookback — bars used to measure consolidation range (custom only)
- Max accumulation range (%) — maximum range width to qualify (custom only)
- Manipulation search window — bars to search for a sweep after accumulation
- Min fvg size (atr multiplier) — minimum gap size for distribution confirmation
- Atr length — period for atr calculation
- Sl mode — atr or fvg structure
- Sl atr multiplier — stop distance multiplier in atr mode
- Rr ratio — reward-to-risk ratio for the distribution box
- Distribution box width (bars) — fixed bar width of the distribution target box
10.4 Absorption filter
- Enable absorption filter — toggle on/off
- Min volume multiplier — minimum volume relative to average (custom only)
- Max body/range ratio — maximum body-to-range ratio (custom only)
- Volume average length — lookback for rolling volume average
10.5 Price levels
- Show price levels — toggle on/off
- Pivot lookback — bars left and right to confirm a pivot
- Min volume multiplier — minimum volume at the pivot bar
- Volume average length — lookback for volume average
- Support level color — color for pivot lows
- Resistance level color — color for pivot highs
- Max levels shown — maximum number of visible levels
10.6 Visuals
- Show accumulation box
- Show manipulation box
- Show fvg box
- Show entry signal
- Bull color — color for bullish setups and signals
- Bear color — color for bearish setups and signals
- Absorption color — color for absorption bar highlight and dot
- Distribution color — candle color during the distribution phase
10.7 Dashboard
- Show dashboard
- Position
- Size
11. How to use
11.1 Initial setup
1. Select the preset that matches your instrument.
2. Set your timezone to match your location or preferred session reference.
3. Enable the sessions you trade. Set the times to match the actual session opens for your timezone.
4. Choose a stop loss mode. Fvg structure is the more precise option. Atr is more consistent if FVGs on your timeframe vary significantly in size.
5. Set your RR ratio. Default 2.0 is a starting point — adjust to your own risk management rules.
6. If using the custom preset, start with the preset values as a reference and tune from there.
11.2 Reading the chart
Look at the session background. Once a session opens, accumulation detection begins.
When candles turn gray, accumulation is active. The indicator has found a range that qualifies as consolidation. This is the waiting phase.
When candles turn red or green, a sweep has been detected. The indicator is now looking for a confirming FVG. This is the alert phase — something is happening.
When a purple (or absorption-colored) candle appears with a dot, the sweep bar showed absorption. This is the highest-quality moment within the manipulation phase. A signal is likely imminent if a FVG forms on the next bars.
When a signal triangle fires, the full AMD cycle has confirmed with FVG and absorption. The distribution box appears showing the entry level and target.
11.3 Illustrative bull scenario
Educational example only. Not a trading recommendation.
Session opens. Candles turn gray — accumulation detected between two levels. After several bars, price dips below the accumulation low on a high-volume candle that closes near its open. The candle colors purple. A dot appears below it. Two bars later, a gap forms above — price has displaced back through the range. A green triangle fires below the entry bar. The distribution box extends to the right showing the 1:2 target. A support level line sits just below the sweep low confirming the structural context.
11.4 Illustrative bear scenario
Educational example only. Not a trading recommendation.
Session opens in London. Candles turn gray — a tight consolidation forms. Price spikes above the range high on elevated volume. The spike candle has a large wick and closes back below the high — body is less than 40% of the bar range. The candle turns purple. A dot appears above it. A FVG opens below. A red triangle fires above the entry bar. The distribution box drops from entry toward the calculated take profit. A resistance level hovers just above the sweep high.
11.5 Using the absorption filter
With the filter on, the signal only fires when the manipulation sweep bar shows mechanical absorption. This reduces total signals but increases the average quality of what does fire. The dashboard shows abs / setups — how many confirmed absorptions versus total AMD patterns detected. A ratio of 1/5 is normal. The filter is stricter by design.
With the filter off, every valid AMD + FVG pattern produces a signal regardless of volume. Use this to explore how many setups form on your instrument before deciding whether the absorption requirement is helping or filtering too aggressively.
Regardless of filter setting, the candle coloring always shows the full AMD cycle. A setup without a triangle is still visible through the gray accumulation, the colored manipulation phase, and the FVG box. Traders who want to act on every AMD cycle can use the visual coloring as their cue and treat the triangle as an additional confirmation rather than a requirement.
11.6 Timeframe guide
- 1m–3m: scalp setups. Absorption filter on. Tight preset (futures or commodities).
- 5m–15m: intraday setups. All presets apply. Standard settings.
- 30m–1h: swing context. Manipulation window and accumulation lookback can be increased.
- 4h and above: macro context only. Signals will be infrequent. Use to identify major cycle pivots.
12. Tips
The manipulation search window is your primary tuning lever. If the indicator misses setups you can see visually, increase the manipulation window. If it produces setups that do not look like genuine sweeps, tighten the range width or increase the volume multiplier.
The absorption filter is directional. A bear sweep that qualifies will have a large upper wick and a small body. A bull sweep that qualifies will have a large lower wick and a small body. If you see a purple dot on a bar with a small wick, the volume threshold is too low — raise the min volume multiplier.
Price levels are structural context, not signals. Use them to assess whether a distribution target has a logical resting point — a prior support or resistance level aligned with the take profit zone strengthens the setup.
Multiple AMD cycles can form within a single session. The state resets after each completed cycle. If an accumulation forms but no sweep follows within the search window, the state clears automatically and the indicator waits for the next consolidation.
Candle coloring stops at the session close. If candles outside the session boundaries show unexpected colors, check that your session times are correctly set for your timezone.
13. Disclaimer
This indicator is provided for educational and informational purposes only. Nothing in this document constitutes financial advice or any form of recommendation. Trading financial instruments involves substantial risk of loss. Past performance is not indicative of future results. You may lose all of your invested capital.
Anonycryptous accepts no responsibility or liability for any losses incurred as a result of using this indicator.
Indicator

Institutional Candle Detector [AGPro Series]🕯️ Institutional Candle Detector
Every trader has stared at a massive candle and asked the same question: "Was that the start of a move, the end of one, or just noise?" Most indicators stop at detection — they paint the candle, drop a label, and walk away. This one keeps watching.
Institutional Candle Detector uses a dual-track engine. The body-driven track flags high-conviction candles where ATR-normalized body size and relative volume both expand together, then classifies each event by body/wick geometry. The independent absorption track captures a different signature entirely — low-body candles on extreme volume, the classic aggression-absorbed footprint that body-only detectors miss. Every detected event is then re-evaluated over the following bars to produce a measurable outcome scorecard.
🔹 OVERVIEW
The script scans each bar for two separate, mutually-exclusive institutional signatures:
• Body-driven events. Body must exceed a multiple of ATR AND volume must exceed a multiple of its rolling average. Classified by geometry into Continuation, Reversal or Exhaustion.
• Absorption events. Volume extremely elevated BUT body contained — the market paid for a big move and did not get one. Price was absorbed.
Every detected candle is then given a reaction zone projected forward, and its outcome is automatically tagged after the configured look-forward window — Follow-Through (FT), Reverse (RV) or Consolidation (CN). The panel accumulates aggregate statistics across the loaded chart so the trader can see which candle type actually works on their instrument and timeframe.
🔸 UNIQUE EDGE
What separates this tool from generic "big candle" or "volume spike" indicators:
• Dual-track detection. A single filter cannot capture both explosive moves and absorption. This script runs two engines in parallel with independent thresholds.
• Four-class geometric taxonomy, each backed by a distinct detection path. Continuation and Reversal fire from the body-driven track with different geometry. Exhaustion catches the mid-profile edge cases. Absorption runs entirely off its own volume-first track.
• Automatic after-behavior tracking. Each event is re-examined after N bars and tagged with an outcome code. This is the part most scripts omit — and it's where edge lives.
• Aggregate statistics panel. Follow-through rate, reverse rate, consolidation rate, and per-class counts are computed continuously. The panel tells you whether institutional candles on this asset actually extend, reverse, or fade.
• Forward-projected zones, colored by class. Body-driven bull/bear events use state colors. Absorption uses an indigo accent so the rarer signature is instantly recognizable. Reversal zones use the contrarian color to emphasize the expected directional flip.
🔹 METHODOLOGY
Body-Driven Track (produces CONT, REV, EXH)
– Body is measured as absolute (close − open) and required to exceed Body × ATR multiple.
– Volume is required to exceed a configurable multiple of its SMA average.
– An optional wick filter rejects candles where total wick exceeds the body beyond a given ratio, removing wide-range noise that looks institutional but is not.
– Continuation: body% ≥ configured threshold (clean directional close).
– Reversal: opposing wick% ≥ configured threshold (sharp rejection after initial push).
– Exhaustion: passes the dual-gate but falls into neither clean category — mid profile, often late in a move.
Absorption Track (produces ABS)
– Volume must exceed an independently configurable multiple (higher than body-driven default).
– Body must be small — below a max Body × ATR and below a max Body / Range.
– When absorption fires, it takes precedence over body-driven classification.
After-Behavior Layer
– After lookFwd bars, the script compares the extreme price move in each direction against the original body size.
– If same-direction extension ≥ ftPct × body → Follow-Through (FT).
– If opposite-direction retrace ≥ revPct × body → Reverse (RV).
– Otherwise → Consolidation (CN).
Aggregate counters accumulate across the loaded chart, producing a running scorecard visible in the panel.
🔸 SIGNALS, STATES & MARKERS
On-chart signals
• Institutional body recolored by class — bull/bear direction for CONT and EXH; contrarian color for REV; accent color for ABS.
• Directional triangle marker above/below the bar.
• Classification label: INST-Bull 3.2x CONT or INST-Bear 5.4xV ABS format, ASCII only. Labels offset from the candle to stay readable on dense charts.
• Reaction zone box projected forward from the candle's high-low range, color-coded by class.
• Outcome marker (FT / RV / CN) plotted lookFwd bars after the event.
Alerts available
• Institutional Continuation
• Institutional Reversal
• Institutional Absorption
• Institutional Exhaustion
All four alerts fire on confirmed bars only.
🔹 KEY INPUTS
Detection Core (body-driven track)
– ATR Length (default 14)
– Volume Average Length (default 20)
– Min Body × ATR (default 2.0)
– Min Volume Multiple (default 2.5)
– Wick filter toggle and max Wick/Body ratio (default 2.5)
Absorption Track
– Enable Absorption Detection
– Absorption Min Volume Multiple (default 4.0)
– Absorption Max Body × ATR (default 1.5)
– Absorption Max Body / Range (default 0.40)
Classification
– Continuation body% threshold (default 0.60)
– Reversal opposing-wick% threshold (default 0.40)
After-Behavior
– Look-forward bars (default 5)
– Follow-through threshold as fraction of body (default 0.50)
– Reverse threshold as fraction of body (default 0.60)
Visuals
– Show/hide zones, zone projection length, opacity, max active zones
– Label size (default Small; increase if labels feel too compact)
– Institutional border width
– Outcome marker toggle
Panel
– 8-position panel placement
– Dark / Light theme
– Font size (default Normal)
– Recent events mini-list toggle
🔸 HOW TO USE
1. Start with defaults on a liquid asset. 4H is a strong baseline; 1H for active traders; Daily for swing context. On Daily, consider lowering Min Body × ATR to 1.5 if events are too rare.
2. Watch the panel accumulate events over two to four weeks on your instrument. The follow-through rate tells you whether institutional candles on this chart tend to extend or fade.
3. Trade-context usage:
– Continuation with a high historical follow-through rate on this asset → trend trades in candle direction after pullback into the zone.
– Reversal with a high historical reverse rate → fade setups at key levels.
– Absorption → aggressive flow was met by an equal or greater defender; often precedes a reversal or compression phase.
– Exhaustion → proceed with caution; frequently a late-move signature where the trend is losing clean structure.
4. Reaction zones act as provisional supply/demand. A retest of a zone with another institutional event near it is a confluence worth noting.
5. Tune thresholds per asset. High-liquidity instruments may need Body × ATR of 2.5+ to keep events selective; low-liquidity pairs can go down to 1.5. Absorption volume multiple can also be adjusted upward on already-volatile instruments.
🔹 LIMITATIONS & TRANSPARENCY
• This is an analytical indicator, not a strategy. No entry, exit, or stop logic is defined and no performance claims are made.
• Aggregate statistics are computed over the loaded chart window and will shift as more bars load or as timeframes change.
• Volume quality depends on the data feed; exchange-reported volume differs across sources for the same asset.
• Follow-through evaluation uses a fixed look-forward window; real trade management will differ.
• All results are historical and descriptive. Past behavior of any candle class does not guarantee future behavior.
🔸 RISK DISCLOSURE
Trading carries substantial risk. This tool is provided for analytical and educational purposes. Do your own research. Use position sizing and risk management appropriate to your account. Nothing in this script constitutes financial advice. Indicator

CVD Multi Exchange PercentileCVD Multi Exchange Percentile
Aggregated order flow across four major crypto derivatives exchanges — with historical percentile ranking to measure how extreme today's session really is.
A Cumulative Volume Delta (CVD) indicator with daily reset, divergence detection, and absorption signals, built for perpetual futures.
It combines Binance, Bybit, OKX, and Bitget into a single aggregated flow, then ranks it against its own history to give you objective context.
█ 🧩 KEY FEATURES
🔹 Multi Exchange Aggregation
Four sources (Binance, Bybit, OKX, Bitget) can be toggled independently. The aggregated delta captures cross-exchange order flow that single-source CVD cannot detect — especially during liquidations or arbitrage-driven moves.
🔹 Historical Percentile System
Each session's peak CVD is stored in a rolling buffer, separated by direction (bull vs bear). The current session is ranked against this distribution to measure how extreme the flow is compared to recent history.
🔹 Live Percentile
A real-time percentile tracks the current CVD value as the session develops — no need to wait for session close.
🔹 Swing Divergence
Detects divergences between price and CVD structure:
- Bullish: price makes lower low, CVD makes higher low
- Bearish: price makes higher high, CVD makes lower high
Filtered by percentile threshold and optional trend filter.
🔹 Volume Absorption
Highlights conditions where price and CVD move in opposite directions under high volume:
- Bullish absorption: price down, CVD up
- Bearish absorption: price up, CVD down
Requires elevated volume and percentile confirmation.
🔹 Visual Encoding
Histogram color reflects direction and momentum. Signal markers:
- Divergence bullish: dark green triangle up
- Divergence bearish: blue triangle down
- Absorption bullish: orange circle
- Absorption bearish: purple circle
Optional info table provides real-time stats.
Signal examples on TRXUSDT.P (1H) — three signal types visible:
- Orange circle (Absorption Bull): price dropping but CVD rising on high volume — buying pressure hidden under falling price
- Blue triangle (DIV- Bearish): price making higher high but CVD making lower high — selling pressure building despite rising price
- Purple circle (Absorption Bear): price rising but CVD falling on high volume — selling pressure hidden under rising price
Signal examples on ETHUSDT.P (1H) — bullish signals visible:
- Dark green triangles (DIV+ Bullish): price making lower lows but CVD making higher lows — buying pressure increasing despite falling price, signaling potential reversal
- Orange circle (Absorption Bull): same logic as above — hidden buying under selling candles
█ 🔧 HOW IT WORKS
The script fetches lower-timeframe OHLCV data from each exchange using `request.security_lower_tf()`.
Each intrabar volume is classified using a CLV-based model (close location within range) to estimate buying vs selling pressure. The resulting deltas are summed across all exchanges and accumulated into a daily CVD, resetting at the start of each new UTC session.
█ 📖 HOW TO USE
Apply the indicator to Perpetual Futures charts (.P).
The symbol is auto-detected from the chart and mapped across all supported exchanges — no manual input needed.
Suggested timeframe: 1H (default percentile lookback is 336 bars, which equals ~14 days on 1H charts).
Signals are contextual, not standalone triggers. Use them to identify:
- flow/price divergences
- potential absorption zones
- extreme participation conditions
█ ⚙️ SETTINGS
Data Sources (Perpetual Futures Only) — Enable/disable Binance, Bybit, OKX, Bitget
Settings — Intrabar precision (1/5/15/60), daily reset
Signals — Percentile lookback (default 336 bars, ~14 days on 1H), min percentile for divergence (75), swing length (8), trend filter SMA (20), absorption volume lookback (10) and multiplier (1.5), show/hide toggles for divergences, absorption, trend filter, and info table
█ 💡 WHAT MAKES THIS DIFFERENT
Most CVD indicators rely on a single exchange and lack statistical context.
This script aggregates flow across venues and ranks it using a percentile system, providing a clear measure of whether current activity is extreme or routine.
Bull and bear distributions are handled separately, avoiding distortion from mixed data.
█ ⚠️ LIMITATIONS
— Works only on perpetual futures (.P required)
— Delta is estimated from OHLCV, not tick-level order book data
— Exchange data availability may vary by symbol
— Intrabar resolution affects precision and performance
█ 📌 DISCLAIMER
This is a contextual analysis tool, not a signal generator.
It does not provide buy/sell signals and should not be used as a standalone trading system. Always apply proper risk management.
Indicator

Indicator

AG Pro Relative Volume Pressure Map [AGPro Series]AG Pro Relative Volume Pressure Map
Overview / What it does
AG Pro Relative Volume Pressure Map is designed to evaluate whether relative volume is translating into efficient bullish pressure, efficient bearish pressure, inefficient two-way absorption, or possible climax behavior.
Instead of treating relative volume as a standalone “high volume” condition, this script maps how that volume is interacting with candle structure, close location, wick behavior, and short-term pressure efficiency. The result is a rules-based pressure framework built to help organize active price-volume interaction directly on the chart.
This script is not built as a basic RVOL meter, a generic volume spike detector, or a standalone entry engine. Its purpose is to classify whether elevated relative volume is being accepted as directional pressure, being absorbed into unstable churn, or appearing late enough to justify caution.
The visual design is intentionally chart-facing. Pressure events, backdrop zones, memory trails, and the summary panel are meant to help traders read whether volume is supporting directional intent or fading into friction. It is a decision-support map, not a prediction model.
Unique Edge
The main difference of this script is simple:
It does not ask only whether volume is above average.
It asks whether above-average volume is producing usable directional pressure.
That distinction matters.
Many relative volume tools stop at “volume is elevated.” This script goes further and evaluates whether that elevated participation is accompanied by efficient body structure, strong close positioning, limited opposing wick pressure, and acceptable short-horizon follow-through context. In other words, it attempts to separate meaningful pressure from noisy activity.
This also makes the script materially different from several other AG Pro tools:
- It is not a Volume Profile framework. It does not map acceptance, rejection, POC interaction, or value-area structure.
- It is not a VWMA extension tool. It does not measure dislocation from a volume-weighted moving anchor.
- It is not a money-flow proxy. It does not attempt to infer broader accumulation or distribution from flow-style formulas.
- It is not a breakout-quality map. It does not judge level breaks, retests, or structural invalidation around support/resistance rails.
- It is not a trend regime meter. It focuses on active pressure quality around current bars rather than broad market-state classification.
Its niche inside the AG Pro lineup is more specific:
AG Pro Relative Volume Pressure Map focuses on whether current relative volume is being converted into directional pressure efficiently, inefficiently, or excessively.
Methodology
The script starts with relative volume. Current volume is compared against its recent average so the tool can determine whether participation is dry, normal, elevated, or extreme.
From there, the script evaluates how price is behaving inside the same bar:
- Body efficiency: how much of the total range is being expressed through the real body.
- Close location: whether the bar is closing with directional conviction or fading into the middle of its range.
- Opposing wick pressure: whether the active side is being challenged by rejection.
- Stretch versus ATR: whether the move is becoming extended relative to recent volatility.
- Optional one-bar follow-through filter: whether short-horizon continuation is present when pressure is classified.
These components are combined into a pressure logic model that classifies price-volume behavior into five chart states:
1. Bull Pressure
Elevated relative volume is aligned with an efficient bullish body, strong close placement, limited upper-wick resistance, and acceptable follow-through context.
2. Bear Pressure
Elevated relative volume is aligned with an efficient bearish body, strong close placement, limited lower-wick resistance, and acceptable follow-through context.
3. Absorption
Relative volume is elevated, but directional efficiency is weak, conflicted, or unstable. This often reflects churn, friction, or two-way participation where raw activity does not cleanly convert into directional pressure.
4. Climax Risk
Relative volume is extreme and the bar is stretched enough to justify caution. The script uses this state to identify situations where pressure may be arriving in a late or inefficient form rather than in a fresh, clean expansion phase.
5. Passive
No major pressure condition is active. Participation is comparatively dry, mixed, or below the threshold required for the more expressive states above.
States / Alerts
This script is organized around states rather than trade commands.
Available state logic includes:
- Bull Pressure
- Bear Pressure
- Absorption
- Climax Risk
- Pressure State Change
These alerts are intended to reflect changes in price-volume character, not guaranteed opportunity. They can be used as workflow events, review prompts, or contextual filters inside a broader chart process.
The panel summarizes the active environment through fields such as:
- RVOL state
- Current pressure state
- Pressure side
- Quality
- Strength
- Efficiency
- Absorption risk and short-horizon bias
The chart layer complements this with event labels, backdrop zones, and pressure memory trails so the user can see not only what state is active now, but how recent pressure has evolved across the visible structure.
Why this is different from the other AG Pro scripts
AG Pro Relative Volume Pressure Map was intentionally designed to avoid overlap with the existing AG Pro publication line.
Where some AG Pro tools are built around breakout structure, moving-average displacement, equilibrium logic, profile interaction, or directional survival around a specific technical framework, this script stays centered on one narrower question:
Is current relative volume producing efficient pressure, inefficient absorption, or late-stage risk?
That makes it different in both concept and use case.
For example:
- A breakout-quality tool is asking whether a level event is structurally convincing.
- A profile-based tool is asking whether price is accepting or rejecting volume-defined areas.
- A reclaim/dislocation tool is asking whether price is stretching away from or reclaiming a known reference.
- This script is asking whether participation itself is translating into directional pressure cleanly enough to matter.
So even when the chart user applies multiple AG Pro tools together, this one is not meant to duplicate them. It fills a different layer of analysis: active pressure efficiency around relative volume.
Key Inputs
Relative Volume Length
Controls the lookback used to normalize current volume versus its recent baseline.
ATR Length
Used for stretch evaluation and several visual placement rules.
Pressure Smoothing
Smooths the relative volume component to reduce one-bar noise.
Use 1-Bar Follow-Through Filter
Adds a simple continuation requirement so pressure states can be made more selective.
Elevated RVOL Threshold
Defines the point at which participation becomes meaningfully above normal.
Extreme RVOL Threshold
Defines the threshold used for more exceptional activity and climax-style conditions.
Minimum Body Efficiency
Controls how much real-body participation is required before a pressure bar is considered efficient.
Strong Close Location
Controls how strongly price must close toward the active side of the range.
Opposing Wick Ceiling
Limits how much opposing rejection can be present before directional pressure quality degrades.
Climax Stretch vs ATR
Controls how extended a bar must be, relative to ATR, before the script considers late-stage risk more seriously.
Visual controls are also included for panel visibility, panel theme, panel font size, label density, candle coloring, backdrop display, and pressure-trail presentation.
Limitations & Transparency
This script does not predict future direction.
It does not identify hidden order flow.
It does not classify fundamental volume intent.
It does not replace execution rules, risk management, or higher-timeframe context.
Relative volume can expand for many reasons, and elevated participation does not guarantee continuation. In the same way, absorption or climax-style behavior can persist longer than expected before price resolves clearly.
All state classifications in this tool are rules-based interpretations of chart behavior. They are useful as structured context, but they are still abstractions built from price and volume features. Users should expect false positives, missed events, and market-specific variation depending on volatility regime, instrument behavior, and timeframe selection.
This script should be treated as an analytical overlay. It is designed to improve chart organization and pressure reading, not to promise outcomes.
Risk Disclosure
This script is provided for educational and informational purposes only.
It is not financial advice, not investment advice, and not a solicitation to buy or sell any instrument.
Trading and investing involve risk. Losses can exceed expectations, especially in volatile markets. Any decision made using this script should be confirmed with independent analysis, sound risk controls, and a workflow appropriate to the user’s own objectives and experience.
This tool is best used as one layer inside a broader decision process, not as a standalone reason to enter, exit, or size a position.
Indicator

Liquidity Phantom [JOAT]Liquidity Phantom
Introduction
The Liquidity Phantom is an advanced open-source liquidity mapping and order flow dynamics engine that reveals where institutional money sits, how it moves, and when it strikes. It tracks unswept swing highs and lows as liquidity pools, detects phantom sweeps (institutional stop hunts), maps liquidity voids where price teleported through ranges without trading, measures gravitational pull toward nearby pools, identifies absorption pulses where passive orders absorb aggressive flow, and detects multi-factor exhaustion at price extremes. Every feature is built around a single thesis: liquidity is the invisible architecture of the market, and mapping it gives traders an edge that price action alone cannot provide.
The indicator overlays directly on the price chart with dashed liquidity pool levels, sweep boxes, void ghost boxes, absorption labels, exhaustion markers, liquidity density candles, and phantom drift lines — all managed with array-based cleanup and cooldown logic to keep the chart readable.
Why This Indicator Exists
Institutional traders do not chase price — they hunt liquidity. Every swing high has stop-loss orders sitting above it (sell-side liquidity). Every swing low has stop-loss orders sitting below it (buy-side liquidity). Institutions need this liquidity to fill their large orders without excessive slippage. Understanding where liquidity pools form, which ones have been swept, and where voids exist in price delivery gives traders a map of institutional intent.
Most indicators focus on what price has done. The Liquidity Phantom focuses on where the money is waiting to be taken. It addresses questions that standard indicators cannot answer:
Where are the nearest unswept liquidity pools above and below current price?
Has a pool just been swept (stop hunt completed)?
Are there voids in price delivery that act as magnets for future price action?
Is there absorption happening — large volume meeting price with minimal movement, indicating passive institutional orders?
Is the current move exhausting — multiple factors aligning at an extreme that suggests reversal?
How dense is the liquidity environment around current price?
Feature 1: Liquidity Pool Tracker
The foundation of the indicator. Every confirmed swing high is mapped as a sell-side liquidity pool (dashed line extending right, labeled "SELL LIQ" with the price). Every confirmed swing low is mapped as a buy-side liquidity pool (labeled "BUY LIQ"). These represent areas where retail stop-loss orders cluster — and where institutions will eventually hunt.
Swing detection uses an oscillator-based method with a configurable length (default 10 bars). Pools are tracked in arrays and automatically cleaned up when the maximum pool count is reached (default 20), with the oldest pools removed first.
Each pool level extends to the right as a dashed line until it is swept. The visual effect is a map of all unswept liquidity levels above and below price — the "phantom" architecture that drives institutional decision-making.
Feature 2: Phantom Sweep Detector
When price wicks through a liquidity pool level and closes back on the other side, it is a phantom sweep — institutional stop hunting in action. The indicator detects these events with two confirmation filters:
Wick Threshold: The wick beyond the pool level must exceed a configurable ATR multiple (default 0.5x ATR). This ensures the sweep was significant, not just a tiny wick touching the level.
Cooldown: After a sweep signal fires, no new sweep can fire for a configurable number of bars (default 15). This prevents signal stacking on the same event.
When a sweep is confirmed:
The swept pool's dashed line and label are removed from the chart
A colored sweep box is drawn around the sweep candle
A "PHANTOM SWEEP" label appears with the swept price level
The sweep is counted in the dashboard (total bull sweeps / bear sweeps)
Bullish sweeps (price wicks below a buy-side pool and closes above) are colored in amber-orange. Bearish sweeps (price wicks above a sell-side pool and closes below) are colored in ember-red.
Feature 3: Liquidity Void Mapper
A liquidity void occurs when price makes a large single-candle move (body exceeding a configurable ATR multiple, default 1.5x) — the market "teleported" through a range without meaningful trading. These voids represent areas of inefficient price delivery that the market tends to revisit.
Voids are drawn as ghost boxes with dotted borders in a deep indigo color. The indicator tracks whether each void has been filled (price has returned to trade through the void range). Filled voids change color to a teal shade, providing a visual record of which voids have been revisited and which remain open.
The dashboard tracks total void count and fill count, giving a void fill rate that indicates whether the market is efficiently filling its delivery gaps or leaving them open (a sign of strong trending).
Feature 4: Gravity Index
The Gravity Index measures how strongly price is being "pulled" toward nearby liquidity pools. It calculates an inverse-distance-weighted sum of all pools within 5 ATR of current price. The closer and more numerous the pools, the higher the gravity score.
EXTREME (7+): Price is very close to multiple pools — high probability of a sweep or significant reaction
HIGH (4-7): Several pools nearby — increased likelihood of liquidity-driven moves
MODERATE (2-4): Some pools in the vicinity — normal conditions
LOW (0-2): Few pools nearby — price is in clean territory
The gravity score is displayed as a subtle background color that intensifies as gravity increases, creating a visual "heat map" of liquidity density around price.
Feature 5: Absorption Pulse
Absorption occurs when large volume meets a liquidity pool but price barely moves — the classic sign of passive institutional orders absorbing aggressive flow. The indicator detects absorption using three simultaneous conditions:
Volume exceeds the configurable threshold (default 1.8x the 20-bar average)
The candle body is small relative to the full range (wick ratio below 35%)
Price is near a liquidity pool (within 1.5 ATR)
When all three conditions align, an absorption label appears ("BUY ABSORB" or "SELL ABSORB") with the volume multiple. These are among the most valuable signals the indicator produces — they reveal the "invisible hand" of institutional passive orders that cannot be seen on a standard chart.
Feature 6: Exhaustion Spectra
Multi-factor exhaustion detection at price extremes. The indicator scores four exhaustion factors independently:
Price extended beyond Bollinger Bands (overextension)
Volume climax (exceeding 2x average)
RSI at extreme levels (above 75 or below 25)
Proximity to a liquidity pool in the direction of the move
When three or more factors align (3/4 or 4/4), an "EXHAUSTION" label appears with the factor count. These are rare, high-conviction reversal signals that mark the point where institutional displacement has peaked and multiple independent measures confirm the extreme.
Feature 7: Liquidity Density Candles
Candles are colored based on how many liquidity pools exist within 5 ATR of current price. More pools nearby produce brighter, more vibrant ultraviolet candles. Fewer pools produce darker, slate-colored candles. This creates a unique heatmap effect that shows liquidity-rich zones (bright) versus liquidity-dry zones (dark) at a glance.
The coloring uses color.from_gradient() mapped to the gravity score, with separate palettes for bullish and bearish candles.
Feature 8: Phantom Drift Lines
The indicator projects where liquidity is "migrating" by calculating the average price of recent high pools and low pools, then drawing a line at the midpoint — the liquidity gravity center. This drift line shows the central tendency of where institutional interest is concentrated and how it shifts over time.
12-Row Dashboard
Row 1: Gravity Index score and classification
Row 2: Nearest pool direction and distance in ATR
Row 3: Active pool count (high pools + low pools)
Row 4: Last sweep direction and bars ago
Row 5: Total sweeps (bull + bear counts)
Row 6: Void count and fill rate
Row 7: Absorption pulse count
Row 8: Exhaustion count
Row 9: Nearby pool density (pools within 5 ATR)
Row 10: Current candle volume ratio
Row 11: RSI value for exhaustion context
Row 12: Drift line position
Input Parameters
Liquidity Engine:
Swing Detection Length (default 10) — sensitivity of pool detection
Max Liquidity Pools (default 20) — how many pools to track simultaneously
Sweep Wick Threshold (default 0.5 ATR) — minimum wick size for sweep confirmation
Absorption Volume Threshold (default 1.8x) — minimum volume for absorption detection
Void Min Size (default 1.5 ATR) — minimum candle body for void detection
Features:
Toggles for Liquidity Pool Levels, Phantom Sweep Signals, Liquidity Void Boxes, Absorption Pulse Labels, Exhaustion Spectra, Liquidity Density Candles, Phantom Drift Lines
Signal Cooldown (default 15 bars)
How to Use This Indicator
Step 1: Map the Liquidity Landscape
Identify where unswept pools sit above and below price. These are the targets that institutions will eventually hunt.
Step 2: Watch for Phantom Sweeps
When a pool gets swept (wick through + close back), the stop hunt is complete. The sweep direction often signals the true institutional intent — a bearish sweep of highs followed by a close below often precedes a downward move.
Step 3: Monitor Gravity
High gravity (multiple pools nearby) means price is in a liquidity-rich zone where reactions are likely. Low gravity means price is in clean territory where trends can extend.
Step 4: Identify Absorption
Absorption pulses near liquidity pools are among the strongest signals. High volume + small body + near a pool = passive institutional orders absorbing the flow. The direction of the absorption candle hints at which side the institution is on.
Step 5: Respect Exhaustion
When 3+ exhaustion factors align, the current move is overextended by multiple independent measures. These are high-conviction reversal zones — not guaranteed reversals, but areas where the probability of a pullback is elevated.
Step 6: Use Voids as Targets
Unfilled voids act as magnets. When price is trending toward an open void, expect it to fill. The void fill rate in the dashboard tells you whether the market is efficiently filling gaps or leaving them open.
Limitations
Liquidity pool detection is based on swing highs and lows, which are lagging by the swing detection length. Pools appear after the swing is confirmed, not in real-time.
Not all swing highs/lows have significant stop-loss orders above/below them. The indicator maps potential liquidity based on structure, not actual order book data.
Absorption detection uses volume and body ratio as proxies for passive institutional orders. True absorption can only be confirmed with Level 2 order book data, which is not available in Pine Script.
Exhaustion signals are intentionally rare (require 3+ factors). In fast-moving markets, exhaustion may not fire before a reversal occurs.
Volume data quality varies by instrument. Forex tick volume approximates but does not equal true institutional volume.
Phantom sweeps can be false signals — sometimes price sweeps a level and continues in the sweep direction rather than reversing.
The indicator maps historical and current liquidity dynamics. It does not predict which pool will be swept next or when.
Originality Statement
This indicator is original in its comprehensive liquidity-centric approach to market analysis. While swing detection and basic sweep concepts exist in other scripts, this indicator is justified because:
It treats liquidity pools as tracked entities with full lifecycle management (creation at swing detection, extension as dashed levels, removal on sweep, with array-based cleanup)
The Phantom Sweep Detector uses dual filtering (ATR wick threshold + cooldown) for precision that basic "price crossed level" detection lacks
The Liquidity Void Mapper tracks gaps in price delivery with fill monitoring — a concept distinct from Fair Value Gaps, focused on single-candle delivery failures
The Gravity Index provides a quantitative measure of liquidity pull that no standard indicator offers — inverse-distance-weighted scoring of all nearby pools
Absorption Pulse detection combines volume analysis, body ratio, and pool proximity to identify passive institutional orders — a multi-factor approach not available in standard volume indicators
Exhaustion Spectra uses four independent factors (BB extension, volume climax, RSI extreme, pool proximity) for high-conviction reversal detection
Liquidity Density Candles create a unique heatmap visualization based on pool concentration rather than any price-based metric
The combination of pool tracking, sweep detection, void mapping, gravity scoring, absorption detection, exhaustion spectra, density candles, and drift lines creates a unified liquidity analysis system not available in any single existing indicator
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.
Liquidity analysis reveals where stop orders likely cluster based on market structure. It does not access actual order book data and cannot confirm the presence or absence of real orders at any level. Sweep signals, absorption pulses, and exhaustion markers are probabilistic observations, not certainties.
Always use proper risk management. Never risk more than you can afford to lose. The author is not responsible for any losses incurred from using this indicator.
-Made with passion by officialjackofalltrades
Indicator

PrecisionAlgoGuardPrecisionAlgoGuard is a market condition and trap-related behavior framework that evaluates the current market environment before directional bias is applied. Rather than generating entry or exit signals, the model analyzes structural quality and participation to classify whether conditions are clean, unstable, or cautionary.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
HOW IT WORKS
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
The model evaluates each bar through a set of structural and participation-based checks, producing a condition score from 0 to 100. Higher scores reflect cleaner, more participation-supported conditions, while lower scores reflect increased noise, instability, or structural inefficiency.
The condition score is derived from a weighted model combining multiple structural and participation-based factors. Thresholds and penalty values are calibrated to reflect relative changes in market behavior rather than fixed universal standards.
The following conditions are evaluated independently and contribute to the score:
• VWAP Pinning — Evaluates when price repeatedly stalls near VWAP with compressed range and body structure, indicating reduced directional conviction.
• Wick Trap / Sweep — Highlights conditions where price briefly exceeds a recent swing high or low but fails to hold, closing back within range with a pronounced wick.
• Failed Breakout — Evaluates when price moves beyond a recent structure level without sufficient participation or range expansion, then fails to maintain that level.
• Absorption — Highlights when elevated volume occurs within a compressed range with a mid-bar close, suggesting supply or demand is being absorbed rather than driving price.
• Churn / Wash — Evaluates periods of elevated cumulative volume over multiple bars that result in limited net price movement.
• Low Volatility Compression — Uses ATR percentile rank to identify when current volatility is within the lower range of recent activity.
• Squeeze Pressure — Highlights sustained directional closes with increasing volume and shallow pullbacks, indicating potential directional pressure building.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
CONDITION STATES
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Based on the score and active conditions, the model classifies the environment into one of five states:
• Elevated Risk Conditions — Absorption or failed breakout conditions are present, or the score is critically low.
• Caution — One or more warning conditions are active, or the score has declined into a cautionary range.
• Long Bias Active — Conditions are favorable and a majority of directional factors align on the bullish side.
• Short Bias Active — Conditions are favorable and a majority of directional factors align on the bearish side.
• Neutral Conditions — Conditions are favorable, but directional factors are mixed or inconclusive.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
HOW TO USE
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Use the condition score and state classification to assess the current market environment before forming a directional view. Elevated Risk and Caution states may reflect unstable or low-quality conditions, while bias states reflect alignment across multiple factors when conditions are more favorable.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ADAPTIVE BEHAVIOR TUNING
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Internal thresholds automatically adjust based on instrument type and market-cap profile. The same script responds differently on a nano-cap momentum stock, a large-cap equity, an ETF, or a crypto chart without requiring manual retuning.
Supported tiers: Nano Cap, Micro Cap, Small Cap, Mid Cap, Large Cap, ETF, Crypto.
ETF profiles apply tighter structure requirements and higher participation thresholds. Crypto profiles apply wider volatility tolerance and softer sensitivity to structural noise. Auto-detection is enabled by default, with manual override available in settings.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
DISPLAY
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
The overlay label displays the condition score, active state, detection tags, bull/bear factor counts, and detected instrument tier. Label position, font size, candle highlighting, and bar coloring are configurable.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ALERTS
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Alert conditions are available for state transitions and individual condition triggers, including Elevated Risk Conditions, Caution, Absorption, Failed Breakout, Wick Trap, Churn, Squeeze, Long Bias Active, and Short Bias Active.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
IMPORTANT
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
PrecisionAlgoGuard is designed to provide market context, not trading signals or recommendations. Condition states are descriptive and may update in real time as new bars develop. This script is provided for educational and informational purposes only and does not constitute financial advice. Always perform your own analysis before making trading decisions. 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

Vestige Liquidity Terrain [JOAT]Vestige Liquidity Terrain
Introduction
The Vestige Liquidity Terrain is an open-source liquidity analysis indicator built in Pine Script v6. It detects, scores, and tracks liquidity zones — price levels where resting stop orders and limit orders tend to cluster — using pivot-based detection, volume-weighted intensity, a multi-factor scoring system, sweep tracking, and trade planning overlays. The indicator identifies where liquidity exists, how strong each zone is, whether it has been swept, and which zones are the most probable targets for price to reach next.
Liquidity is the fuel that moves markets. Institutional traders need liquidity to fill large orders, and they often engineer price moves toward areas where stop orders are concentrated. Understanding where liquidity sits, how fresh it is, and whether it has confluence with key levels gives traders a significant edge in anticipating where price is likely to travel.
Why This Indicator Exists
Most liquidity zone indicators simply draw boxes at swing highs and lows. They treat all zones equally and provide no context about which zones matter most. This indicator goes further:
Pivot-Based Zone Detection: Uses configurable left/right pivot bars to identify swing highs and lows where resting orders accumulate. Zones are padded by a tick-based distance to account for the cluster of stops around a level.
Volume-Weighted Intensity: Each zone's creation is filtered by normalized volume. Only zones formed during meaningful volume activity are tracked, filtering out noise from thin-market pivots.
Zone Merging: When a new pivot forms within a configurable tick distance of an existing zone, the zones are merged rather than stacked. This prevents redundant zones and reflects the reality that nearby levels form a single liquidity pool.
Multi-Factor Scoring (0-100): Each zone receives a dynamic score based on touches, freshness, confluence with key levels, reaction speed, session alignment, and regime context. This score determines visual prominence and whether the zone qualifies as a trade planning target.
Sweep Tracking: When price sweeps through a zone, the event is recorded. Swept zones receive a score penalty because their liquidity has been partially consumed.
Trade Planning Targets: The nearest high-scoring zones above and below current price are highlighted as potential targets, with dashed lines extending forward and score labels.
Zone Scoring System
The scoring system is what separates this indicator from basic liquidity zone tools. Each zone's score is computed from multiple factors:
Touch Score (max 60): Each time price touches a zone without sweeping it, the zone gains 12 points. More touches mean more orders have accumulated at that level. Capped at 60 to prevent over-weighting.
Freshness (max 40): Newer zones score higher. The freshness component starts at 40 and decays by 0.8 points per bar of age. Old, stale zones that have not been tested lose relevance.
Confluence (max 40): Proximity to key institutional levels adds 10 points each. The indicator checks confluence with Prior Day High, Prior Day Low, Prior Week High, Prior Week Low, VWAP, Opening Range High, and Opening Range Low. A zone that aligns with multiple key levels is significantly more important.
Reaction Speed (max 22): The ratio of fast reactions (price bouncing within 2 bars of touching the zone) to total reactions. Zones that produce quick, sharp reactions are more likely to hold in the future.
Session Alignment: The ratio of RTH (Regular Trading Hours) touches to overnight touches modifies the score. Zones tested during high-liquidity sessions carry more weight.
Score modifiers are then applied:
Recently swept zones receive a 0.55x multiplier — their liquidity is partially consumed
Midday zones without confluence receive a 0.60x penalty — low-conviction levels
Open Drive zones with few touches receive a 0.75x penalty — too early to confirm
Power Hour zones with confluence receive a 1.10x boost — high-conviction late-session levels
Trend-aligned zones receive a 1.05x boost
Mean-reversion zones without confluence receive a 0.70x penalty
Regime Detection
The indicator includes its own regime detection engine based on VWAP slope analysis:
Trend Up: VWAP slope exceeds the threshold AND price is at or above VWAP — directional momentum is present
Trend Down: VWAP slope is below the negative threshold AND price is at or below VWAP
Mean Reversion: VWAP slope is flat (within threshold) AND price is within a configurable band of VWAP — range-bound conditions
Mixed: Conditions do not clearly fit any category
The regime state feeds into the zone scoring modifiers. In a trending regime, zones aligned with the trend direction receive a boost. In mean-reversion conditions, zones without confluence are penalized because they are less likely to produce clean reactions.
A confidence percentage is calculated for each regime classification, giving traders a sense of how clearly the market fits the detected state.
Sweep Detection and Classification
When price moves through a liquidity zone, the indicator records a sweep event:
The sweep bar and price are stored for each zone
A "SWEEP" label is placed on the chart with configurable display modes (Off, First Only, Recent Only)
Swept zones receive a significant score penalty (0.55x multiplier)
A cooldown prevents multiple sweep labels from stacking on adjacent bars
The sweep price is tracked separately from the zone price, allowing analysis of how far price extended beyond the zone
Sweeps are important because they represent liquidity being consumed. A zone that has been swept once still has some residual significance (remaining orders), but its primary liquidity pool has been tapped.
Trade Planning Overlays
The indicator identifies the nearest high-scoring zones above and below current price as potential targets:
Only zones with scores above a configurable minimum (default 60) qualify as targets
Target lines are drawn as dashed lines extending forward by a configurable number of bars
Each target line includes a label showing the zone's score percentage
This gives traders a clear view of where the nearest significant liquidity sits in each direction
Visual Design
The indicator uses a "Deep Ocean" color theme — bioluminescent aqua, deep ocean blue, coral orange, tidal cyan, kelp green, and pearl white on an abyssal dark background:
Zone Boxes: Color reflects directional expectation (continuation vs rejection blend). Opacity adapts to distance from price, age, and score — nearby fresh high-score zones are more visible, distant old low-score zones fade.
Border Width: Score-based — zones scoring 80+ get 3px borders, 50+ get 2px, others get 1px
Sweep Labels: Coral-colored "SWEEP" labels at the sweep location
Target Lines: Dashed lines in bioluminescent aqua (above) and coral (below) with score labels
Key Levels: PDH/PDL, PWH/PWL drawn as reference lines with theme-aware colors
Opening Range: ORH/ORL lines marking the first N minutes of the session
VWAP: Plotted as a reference line for regime context
HUD Dashboard
The real-time HUD displays:
Key level prices and distances: PDH, PDL, PDC, PWH, PWL, ORH, ORL
Nearest liquidity targets above and below with scores
Current regime state with confidence percentage
Time-of-day classification (Open Drive, Midday, Power Hour, RTH, Off)
Active zone count
Input Parameters
Zone Detection:
Pivot Left/Right Bars: Lookback for swing detection (default: 5/3)
Max Zones Stored: Maximum tracked zones (default: 20)
Zone Padding: Tick-based padding around pivot levels (default: 6)
Merge Distance: Tick distance for merging nearby zones (default: 10)
Volume Filter: Minimum normalized volume for zone creation (Low/Mid/High)
Zone Scoring:
Min Score to Draw: Minimum score for a zone to be visible (default: 25)
Max Visible Zones: Limit on simultaneously displayed zones (default: 10)
Reaction Window: Bars to check for reaction after touch (default: 6)
Reaction Move: Tick threshold for a valid reaction (default: 14)
Fast Reaction: Maximum bars for a "fast" reaction classification (default: 2)
Context:
VWAP Slope Length: Lookback for regime detection (default: 20)
Trend Slope Threshold: Minimum slope for trend classification
Mean-Reversion Band: Maximum distance from VWAP for MR classification
Time-of-Day periods: Open Drive, Midday, Power Hour boundaries
Trade Planning:
Min Score for Targets: Minimum zone score to qualify as a target (default: 60)
Extend Bars: How far forward target lines extend (default: 200)
How to Use This Indicator
Step 1: Identify High-Score Zones
Focus on zones with scores above 60. These have multiple touches, are relatively fresh, and have confluence with key levels. They represent the most significant liquidity pools.
Step 2: Check the Regime
In a trending regime, liquidity zones in the trend direction are more likely to be swept (taken out) as price reaches for stops. In mean-reversion conditions, zones are more likely to produce bounces.
Step 3: Use Targets for Trade Planning
The trade planning lines show you where the nearest significant liquidity sits. In a long trade, the target above is your potential take-profit area. The target below is where your stop might be hunted.
Step 4: Watch for Sweeps
When a zone is swept, its liquidity has been consumed. This often precedes a reversal as the institutional objective (filling orders) has been achieved. A sweep at a high-score zone with confluence is a particularly strong reversal signal.
Step 5: Monitor Zone Lifecycle
Zones are born, tested, and eventually swept or aged out. Fresh zones with rising touch counts are gaining significance. Old zones with no recent touches are losing relevance. The scoring system handles this automatically.
Best Practices
Liquidity analysis works best on instruments with reliable volume data and sufficient market depth
Higher-timeframe zones (1H, 4H) tend to be more significant than lower-timeframe zones
Zones with confluence (near PDH/PDL, PWH/PWL, VWAP) are significantly more reliable than isolated zones
Not all sweeps lead to reversals — sometimes price sweeps through and continues. Confirm with other analysis.
The regime detection helps contextualize zones but is not infallible. Use it as one input among many.
Adjust the volume filter based on your instrument. Highly liquid instruments may need "High" to filter noise. Less liquid instruments may need "Low" to detect zones at all.
The merge distance should be calibrated to your instrument's typical spread and tick size
Limitations
Pivot-based zone detection has an inherent delay equal to the right-bar lookback period
The scoring system uses heuristics, not a statistical model. Scores indicate relative importance, not probability.
Volume-based filtering requires reliable volume data. Forex volume from most brokers represents tick volume, not true exchange volume.
Zone merging can occasionally combine zones that a manual analyst would keep separate
The indicator tracks a maximum number of zones. In very active markets, older zones may be pruned before they are swept.
Sweep detection is based on price crossing through the zone boundary. It does not distinguish between genuine institutional sweeps and random price fluctuations through a level.
Time-of-day and session features are most relevant for instruments with clear session structures (equities, futures). 24-hour markets like crypto may benefit less from session-based scoring.
Technical Implementation
Built with Pine Script v6 using:
16 parallel arrays for comprehensive zone data tracking (price, type, touches, scores, reactions, etc.)
Zone merging algorithm that consolidates nearby pivots into single liquidity pools
Multi-factor scoring function with session, regime, and time-of-day modifiers
Distance-based and age-based visual fading for clean chart presentation
Score-based border width for visual hierarchy
Directional expectation coloring (continuation vs rejection blend)
VWAP slope-based regime detection with confidence calculation
Trade planning line management with score-filtered target identification
Sweep tracking with cooldown and configurable display modes
Alert conditions for sweeps, regime changes, and high-score zone creation
Originality Statement
This indicator is original in its comprehensive liquidity zone lifecycle management. While pivot-based zone detection exists in other scripts, this indicator is justified because:
The multi-factor scoring system (touches, freshness, confluence, reaction speed, session alignment, regime modifiers) provides a quantified assessment of zone significance not available in basic zone indicators
Zone merging prevents the visual clutter of overlapping zones at similar price levels
Sweep tracking with score penalties creates a dynamic zone lifecycle — zones are born, tested, scored, swept, and aged out
Regime-aware scoring modifiers adjust zone significance based on current market conditions
Time-of-day integration (Open Drive, Midday, Power Hour) reflects the reality that liquidity behavior changes throughout the trading session
Trade planning overlays with score-filtered targets provide actionable forward-looking information
The Deep Ocean theme provides intuitive visual hierarchy where zone importance is immediately apparent from color intensity and border width
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. Liquidity zone analysis identifies areas of probable order concentration based on historical price behavior — it does not predict future price movement. Zones can be swept without reversing, and high-score zones can fail. Past liquidity patterns do not guarantee future 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

Gravity Reactor [by Oberlunar]Gravity Reactor is a structural trading engine built around one central idea: price does not move only in trend or only in reversion, but continuously oscillates around a dynamic gravity center. This center is computed from the fast/mid/slow moving-average stack, and the script measures the gravity gap as the ATR-normalized distance between price and that centroid. From there, the model evaluates whether the market is in compression, directed expansion, or overstretched displacement.
The rationale is to distinguish between two very different situations that are often confused by conventional indicators. A move away from gravity can be the start of a real expansion, or it can be an exhaustion event ready to mean-revert. For that reason, Gravity Reactor does not rely on simple MA crosses or isolated momentum spikes. It combines gravity distance, stack alignment, distance velocity, volume pressure, and multi-timeframe agreement into a single structural score. This score is then interpreted through two operative regimes: Thrust, when compression releases into a confirmed directional move, and Snapback, when price reaches an extreme displacement and shows signs of absorption or rebalancing.
Visually, the script puts gravity in the foreground through lane heatmaps that display local gravity and higher-timeframe gravity states side by side, so the trader can immediately see whether the chart is aligned, fragmented, or overstretched across scales. The goal is to detect where the price stands relative to its internal market geometry and whether that displacement is being reinforced or rejected.
Oberlunar ◉✦ Indicator

Volume Flow Analysis [UAlgo]Volume Flow Analysis is a price mapped volume study that distributes historical activity across price levels and separates that activity into directional pressure, stealth style movement, imbalance zones, absorption zones, Point of Control, Value Area, and profile shape. Instead of reading volume only bar by bar, the script converts a rolling section of chart history into a horizontal market map where each price level receives its own buy pressure, sell pressure, and movement efficiency profile.
The script works on the latest bar and rebuilds the full map from a rolling historical window. That window can either use the full user selected lookback or a shorter effective depth when decay is enabled. This gives more recent bars a stronger influence while older bars gradually lose weight. The result is a profile that can behave either like a stable historical map or like a more adaptive flow view depending on the selected decay factor.
Inside each price bucket, the script estimates directional pressure by splitting volume into buy side and sell side portions based on where price closed inside the bar range. It then distributes those portions across all buckets touched by the bar using proportional overlap. At the same time, it builds a separate stealth flow style measure based on range per unit of volume, which acts as a proxy for how much price movement occurred relative to participation.
From there, the script identifies the Point of Control, expands outward to build the seventy percent Value Area, classifies the overall profile shape, highlights extreme buy or sell imbalances, detects absorption style conditions, and optionally extends those key zones across the historical range. A legend table summarizes the active state of the map so the user can read the distribution quickly.
In practical use, Volume Flow Analysis is useful for studying where participation concentrated, where directional pressure was strongest, where flow became unbalanced, and whether the profile currently resembles a balanced, short covering, long liquidation, or double distribution structure.
🔹 Features
🔸 Price Bucket Volume Mapping
The script divides the active price range into user defined buckets and allocates volume into those levels according to actual price overlap. This creates a true horizontal flow map instead of a simple vertical volume display.
🔸 Buy Pressure and Sell Pressure Separation
Each price bucket stores both estimated buy side volume and estimated sell side volume. These two components are then drawn side by side so the user can see which side dominated each price level.
🔸 Decay Weighted Historical Memory
Older bars can gradually lose influence through the decay factor. This lets the profile emphasize fresher activity while still preserving historical structure.
🔸 Stealth Flow Layer
The script includes an additional stealth flow style metric based on range relative to volume. This highlights zones where price moved efficiently with relatively less participation.
🔸 Point of Control and Value Area
The indicator automatically finds the highest volume bucket as the Point of Control and expands from that level until seventy percent of total volume is captured to form the Value Area.
🔸 Imbalance Detection
Price levels with one sided pressure above the selected imbalance ratio are highlighted as buy or sell imbalance zones. These can also be extended across the profile range.
🔸 Absorption Detection
Buckets with unusually high total volume but unusually low stealth flow are marked as absorption. This can suggest heavy participation with reduced price efficiency.
🔸 Profile Shape Classification
The script classifies the overall profile as D shape, B shape, P shape, or b shape using the distribution of volume across the upper, middle, and lower thirds of the profile.
🔸 Range Box and Historical Scope Label
A dashed range box shows the active calculation window and displays the effective number of bars used in the current map.
🔸 Built In Legend and Summary Table
A table in the lower right corner explains the map colors and also reports the current buy sell balance, profile shape, and whether imbalance or absorption layers are active.
🔹 Calculations
1) Determining the Effective Historical Window
int nCalc = i_decay == 1.0 ? i_lookback : int(math.ceil(math.log(0.01) / math.log(i_decay)))
int N = math.max(1, math.min(nCalc, i_lookback))
N := math.min(N, bar_index)
This is the first major step of the script.
If decay is set to 1.0, the script simply uses the full user selected lookback.
If decay is below 1.0, the script solves for how many bars are needed until the decay weight falls to roughly one percent of its original value. That value becomes the effective calculation depth.
Then the script clamps that depth so it never exceeds the lookback input and never exceeds available chart history.
So the map can behave in two different ways:
a full fixed history profile,
or a dynamically shortened profile where older bars become practically irrelevant.
2) Finding the Active Price Range and Bucket Size
float pH = high
float pL = low
for i = 0 to N - 1
pH := math.max(pH, high )
pL := math.min(pL, low )
float bSz = (pH - pL) / i_buckets
This block establishes the vertical bounds of the map.
The script scans the effective historical window and finds the highest price and lowest price inside it. Then it divides that full range by the selected number of price levels.
The result is the bucket size, which determines the height of every price cell in the flow map.
So the whole analysis space is always defined by the actual recent trading range rather than by arbitrary static levels.
3) Initializing Buy, Sell, and Stealth Arrays
array bVol = array.new(i_buckets, 0.0)
array sVol = array.new(i_buckets, 0.0)
array stV = array.new(i_buckets, 0.0)
These three arrays are the main storage layer of the profile.
bVol stores buy pressure per bucket.
sVol stores sell pressure per bucket.
stV stores the stealth flow style metric per bucket.
As each historical bar is processed, its weighted contribution is distributed into these arrays according to price overlap.
So the script is building three parallel price maps at the same time.
4) Splitting Each Bar Into Buy and Sell Pressure
float b_v = rng == 0 ? (v_i / 2) : (v_i * (c_i - l_i) / rng)
float s_v = v_i - b_v
This is the directional volume model.
If a bar has zero range, volume is split evenly between buy side and sell side.
Otherwise, the script estimates buy pressure from where the close sits inside the bar range. A close nearer the high gives more weight to buy pressure. A close nearer the low gives less weight to buy pressure. Sell pressure is simply the remainder.
This is not exchange level aggressor data, but it is a practical price location based estimate of directional pressure inside each candle.
So every bar contributes both a buy component and a sell component to the profile.
5) Defining the Stealth Flow Proxy
float st_m = v_i == 0 ? rng : rng / v_i
This line creates the stealth flow style measurement.
The idea is simple. If price covers a relatively large range with relatively little volume, the ratio becomes larger. If price needs heavy volume to achieve the same range, the ratio becomes smaller.
So this metric behaves like a movement efficiency proxy:
higher values suggest cleaner movement per unit of volume,
lower values suggest heavier participation per unit of movement.
It is important to interpret this as a derived proxy rather than a direct exchange measured stealth order flow.
6) Applying Decay Weight to Historical Bars
float d_m = math.pow(i_decay, i)
Every historical bar receives a decay multiplier based on how far back it is.
The most recent bar gets the largest weight. Older bars receive progressively smaller weights as long as decay is below one.
This means the final profile is not just a raw accumulation of past activity. It is a weighted accumulation where recent flow can dominate older structure if the user wants a more adaptive map.
7) Distributing a Bar Across All Touched Buckets
int minIdx = math.max(0, math.floor((l_i - pL) / bSz))
int maxIdx = math.min(i_buckets - 1, math.floor((h_i - pL) / bSz))
for j = minIdx to maxIdx
float b_min = pL + j * bSz
float b_max = b_min + bSz
float ovr = math.max(0, math.min(h_i, b_max) - math.max(l_i, b_min))
if ovr > 0
float prop = ovr / rng
bVol.set(j, bVol.get(j) + b_v * prop * d_m)
sVol.set(j, sVol.get(j) + s_v * prop * d_m)
stV.set(j, stV.get(j) + st_m * prop * d_m)
This is one of the most important calculations in the whole script.
For every bar, the script determines which price buckets were touched by that bar. It then measures how much of the bar overlapped each bucket. That overlap fraction is used to distribute buy pressure, sell pressure, and stealth flow into the correct levels.
So if a bar spends more of its range inside a given bucket, more of its volume contribution goes into that bucket.
This makes the map much more realistic than assigning the full bar volume to only one price level.
8) Handling Zero Range Bars
else
int idx = math.max(0, math.min(i_buckets - 1, math.floor((c_i - pL) / bSz)))
bVol.set(idx, bVol.get(idx) + b_v * d_m)
sVol.set(idx, sVol.get(idx) + s_v * d_m)
stV.set(idx, stV.get(idx) + st_m * d_m)
If a bar has no range, the script cannot distribute it by overlap. In that case, it assigns the full weighted contribution to the bucket containing the close.
This ensures that flat or compressed bars still contribute to the profile without breaking the overlap logic.
9) Building Total Volume, Point of Control, and Summary Totals
float tVolMax = 0.0
float stMax = 0.0
float stMin = 1e10
int poc = 0
float pocV = 0.0
float sumV = 0.0
array tVol = array.new(i_buckets, 0.0)
for j = 0 to i_buckets - 1
float t = bVol.get(j) + sVol.get(j)
float st = stV.get(j)
tVol.set(j, t)
sumV += t
if t > tVolMax
tVolMax := t
if t > pocV
pocV := t
poc := j
After all bars are processed, the script combines buy and sell pressure for each bucket into total volume.
At the same time, it calculates:
the total profile volume,
the maximum bucket volume,
the Point of Control bucket,
and the minimum and maximum stealth values.
The Point of Control is simply the bucket with the largest accumulated total volume.
So this stage turns the raw arrays into a complete profile summary.
10) Calculating the Seventy Percent Value Area
float trg = sumV * 0.70
float cur = pocV
int vH = poc
int vL = poc
while cur < trg and (vH < i_buckets - 1 or vL > 0)
float vUp = vH < i_buckets - 1 ? tVol.get(vH + 1) : -1.0
float vDn = vL > 0 ? tVol.get(vL - 1) : -1.0
if vUp >= vDn and vUp >= 0
vH += 1
cur += vUp
else if vDn > vUp and vDn >= 0
vL -= 1
cur += vDn
else
break
This is the Value Area expansion algorithm.
The script starts at the Point of Control and keeps adding the next larger neighboring bucket, either above or below, until the accumulated total reaches seventy percent of overall profile volume.
The upper and lower boundaries of that expansion become the Value Area High and Value Area Low.
So the Value Area always forms around the Point of Control and grows toward whichever neighboring levels contain the most activity.
11) Classifying the Profile Shape
float vTop = 0.0
float vMid = 0.0
float vBot = 0.0
int third = math.floor(i_buckets / 3)
for j = 0 to i_buckets - 1
float v = tVol.get(j)
if j < third
vBot += v
else if j < third * 2
vMid += v
else
vTop += v
string shp = "D-Shape (Balanced)"
if vTop > sumV * 0.20 and vBot > sumV * 0.20 and vMid < sumV * 0.50
shp := "B-Shape (Double Dist)"
else if poc > i_buckets * 0.5 and vTop > vBot * 1.3
shp := "P-Shape (Short Covering)"
else if poc < i_buckets * 0.5 and vBot > vTop * 1.3
shp := "b-Shape (Long Liquidation)"
The script divides the profile into upper, middle, and lower thirds and compares how much volume sits in each section.
If upper and lower thirds both carry meaningful volume while the middle is relatively weak, the script labels the profile as a B shape.
If the Point of Control sits high and the upper section dominates, it labels the profile as a P shape.
If the Point of Control sits low and the lower section dominates, it labels the profile as a b shape.
Otherwise, the default label is D shape.
So the shape classifier is reading where the distribution is concentrated and how balanced it looks across the full price range.
12) Computing the Average Stealth Level
float avgSt = 0.0
int stCnt = 0
for j = 0 to i_buckets - 1
if stV.get(j) > 0
avgSt += stV.get(j)
stCnt += 1
avgSt := stCnt > 0 ? avgSt / stCnt : 0.0
This block computes the average positive stealth value across all populated buckets.
That average later becomes part of the absorption logic. Buckets with much lower than average stealth, combined with very high total volume, are flagged as absorption.
So the script uses the stealth map not only for display width, but also for analysis.
13) Detecting Imbalances and Absorption
bool imbB = i_showImb and s > 0 and b / s >= i_imbRatio
bool imbS = i_showImb and b > 0 and s / b >= i_imbRatio
bool absr = i_showAbs and t > avgV * 1.5 and st < avgSt * 0.5
These are the main analytical event conditions.
A buy imbalance exists when buy pressure is at least the selected ratio times larger than sell pressure.
A sell imbalance exists when sell pressure is at least the selected ratio times larger than buy pressure.
Absorption is defined differently. It requires:
total bucket volume above one and a half times the average bucket volume,
and stealth flow below half the average stealth value.
That means the bucket saw heavy participation but relatively poor movement efficiency, which can suggest absorbed flow.
So imbalances mark one sided aggression, while absorption marks heavy activity with suppressed movement.
14) Scaling the Visual Width of Each Layer
int wS = int((s / tVolMax) * i_width)
int wB = int((b / tVolMax) * i_width)
int wSt = int(((st - stMin) / math.max(1e-10, stMax - stMin)) * (i_width / 2))
The map is drawn horizontally, so the script converts each metric into width.
Sell pressure width and buy pressure width are scaled relative to the largest total bucket volume.
Stealth flow width is scaled separately relative to the stealth range and is limited to half the main map width.
So every bucket gets a visual footprint that reflects its relative pressure and stealth intensity.
15) Drawing the Buy, Sell, and Stealth Blocks
if wS > 0
_boxes.push(box.new(xStart, pHi, xStart + wS, pLo, bgcolor = cS, border_color = bc, border_width = bw))
if wB > 0
_boxes.push(box.new(xStart + wS, pHi, xStart + wS + wB, pLo, bgcolor = cB, border_color = bc, border_width = bw))
if i_showSt and wSt > 0
_boxes.push(box.new(xStart + wS + wB, pHi, xStart + wS + wB + wSt, pLo, bgcolor = c_stealth, border_color = bc, border_width = 1))
This is the actual map renderer.
The sell block is drawn first.
The buy block is drawn immediately after it.
If stealth flow display is enabled, the stealth block is drawn after both pressure blocks.
So each price level becomes a compact three part flow bar:
sell pressure,
buy pressure,
and optional stealth flow.
16) Extending Imbalance and Absorption Zones Across the Range
if i_showZones
if imbB
_boxes.push(box.new(bar_index - N + 1, pHi, bar_index + 1, pLo, bgcolor = color.new(c_buy, 90), border_color = na))
if imbS
_boxes.push(box.new(bar_index - N + 1, pHi, bar_index + 1, pLo, bgcolor = color.new(c_sell, 90), border_color = na))
if absr
_boxes.push(box.new(bar_index - N + 1, pHi, bar_index + 1, pLo, bgcolor = color.new(color.rgb(255, 0, 255), 85), border_color = na))
If zone extension is enabled, the script projects imbalance and absorption buckets horizontally across the entire historical calculation window.
This makes key buckets easier to see in relation to actual price bars rather than only inside the right side profile map.
So the indicator can show both a profile view and a chart level zone view at the same time.
17) Drawing the Range Box and Historical Scope Label
if i_showRng
_boxes.push(box.new(bar_index - N + 1, pH, bar_index + 1, pL, bgcolor = na, border_color = c_range, border_style = line.style_dashed))
_labels.push(label.new(bar_index - int(N / 2) + 1, pH, "N: " + str.tostring(N), textcolor = c_range, style = label.style_label_down, color = color.new(color.black, 100), size = size.small))
This block outlines the active analysis window on the chart.
The dashed box marks the highest and lowest prices used by the profile, and the label shows the effective bar count N.
So the user can always see exactly which portion of chart history is feeding the current flow map.
18) Drawing the Point of Control
if i_showPOC
float pPrice = pL + (poc + 0.5) * bSz
int endX = i_extPOC ? bar_index + i_width : bar_index + 1
_lines.push(line.new(bar_index - N + 1, pPrice, endX, pPrice, color = c_poc, width = 2))
The Point of Control line is drawn at the midpoint of the highest volume bucket.
If extension is enabled, the line continues forward through the map width. Otherwise it stops at the right edge of the historical window.
So the Point of Control remains a clear reference level for the most active price area inside the map.
19) Drawing the Value Area
if i_showVA
float vaTop = pL + (vH + 1) * bSz
float vaBot = pL + vL * bSz
_boxes.push(box.new(bar_index + 1, vaTop, bar_index + 1 + i_width, vaBot, border_color = c_va, bgcolor = color.new(c_va, 90), border_style = line.style_dashed))
This draws the seventy percent Value Area as a translucent box on the right side of the profile.
The top and bottom are derived from the expanded Value Area bucket boundaries, and the box spans the full map width.
So the user can immediately see where most of the profile activity was concentrated around the Point of Control.
20) Buy Sell Dominance Summary
float tB = bVol.sum()
float tS = sVol.sum()
float tV = tB + tS
float pB = tV > 0 ? (tB / tV) * 100 : 0
float pS = tV > 0 ? (tS / tV) * 100 : 0
string dTxt = pB >= pS ? "Bullish " + str.tostring(pB, "#") + "%" : "Bearish " + str.tostring(pS, "#") + "%"
This block calculates the total buy side share and total sell side share across the whole profile.
Whichever side holds the greater percentage becomes the dominant flow label in the table.
So the summary does not only show local bucket conditions. It also provides a broad view of which side controlled more of the weighted participation inside the entire mapped range. Indicator

Absorption SignalsAbsorption Signals by QuantShok (JacobS369)
This script detects absorption candles — bars where aggressive selling is absorbed by buyers (bullish) or aggressive buying is absorbed by sellers (bearish). It uses PulseWire's built-in volume delta to measure the net buying/selling pressure within each bar, then flags bars where the delta diverges from the price action on abnormally high volume. Each signal is scored on a 1–5 star confidence system so you can filter for only the highest-quality setups.
The core logic: a bullish absorption fires when the bar closes green (or flat) despite net negative delta on a volume spike — meaning sellers pushed hard but buyers absorbed it all and held price up. A bearish absorption is the mirror — the bar closes red despite net positive delta on a volume spike, meaning buyers pushed but sellers absorbed the pressure and drove price down.
Default settings are optimized for NQ (Nasdaq 100 Futures).
Settings Breakdown
Absorption Settings — "Volume Lookback Period" (default 20) is the number of bars on your current chart timeframe used to calculate average volume and standard deviation for the z-score. On a 5-minute chart, that's the last 20 five-minute bars. "Volume Z-Score Threshold" (default 1.5) sets how many standard deviations above average the current bar's volume needs to be to qualify as a spike — raise it to only catch bigger volume anomalies, lower it for more signals. "Minimum Wick Size %" is the input for wick filtering though the confidence system handles wick scoring internally at the 40% level. "Delta Timeframe" (default 1 minute) controls the resolution used to estimate volume delta — this is independent of your chart timeframe and pulls 1-minute data to approximate buy vs sell volume within each bar.
Confidence Settings — "Minimum Stars to Display" (default 2) filters out low-confidence signals so only setups meeting your threshold appear on the chart. The confidence scoring works by starting at 1 star for any valid absorption signal, then adding stars for: volume z-score above 2.0 (+1), volume z-score above 3.0 (+1), delta z-score above 2.0 (+1), significant wick size above 40% of bar range (+1), and multi-bar confirmation (+1), capped at 5. "Require Multi-Bar Confirmation" checks whether consecutive bars show absorption at the same price level. "Multi-Bar Tolerance" controls how close those consecutive bars need to be (as a percentage of ATR) to count as confirming each other.
Visuals — Toggle bubbles, confidence labels, and the dashboard independently. Bubble size scales with confidence (tiny for 1 star up to huge for 5 stars), and color intensity increases with higher confidence. The dashboard in the top right shows live volume z-score, delta z-score, net delta, current absorption signal, and multi-bar confirmation status. Hovering over any label shows a detailed tooltip with all the underlying stats for that signal.
Adapting to Other Instruments
The main settings to consider adjusting are the volume lookback period (shorter for faster-moving instruments, longer for steadier ones), the z-score threshold (lower it for instruments with less volatile volume patterns, raise it for noisier ones), and the multi-bar tolerance (widen it for instruments with larger ATR). The delta timeframe can stay at 1 minute for most instruments but you might try a higher resolution if your broker provides it.
How to Use
This is not a buy/sell signal generator — it identifies where institutional-level absorption is likely occurring. Use these signals as confluence with your existing strategy. A 4–5 star bullish absorption at a known support level or LVN is a very different setup than a 2-star signal in the middle of nowhere. The tooltip on each label gives you the full breakdown so you can evaluate the quality yourself. 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

Effort & Result [UAlgo]Effort & Result is a volume spread relationship oscillator inspired by the classic idea that market effort and market result do not always move in balance. The script compares how unusual current volume is versus how unusual current price range is, then measures the gap between those two conditions. The result is a compact oscillator that helps reveal whether the market is showing heavy participation with limited progress, or strong price expansion with relatively weak participation.
The core concept is simple. Volume represents effort, while true range represents result. When effort rises much faster than result, the market may be meeting opposing liquidity and progress can become inefficient. When result rises much faster than effort, price may be moving through thinner liquidity with relatively little resistance. This script transforms that relationship into standardized values so both dimensions can be compared on the same scale.
To make the comparison more useful, the script converts both volume and true range into rolling z scores. That means each bar is judged relative to its own recent context rather than by raw magnitude alone. A large volume bar may not mean much in a market that always trades large volume, while the same raw value could be highly unusual in another market. The same logic applies to price range. By standardizing both series, the indicator focuses on anomaly versus normal behavior rather than on absolute size.
The final oscillator is the difference between effort z score and result z score. Positive readings suggest effort is leading result, while negative readings suggest result is leading effort. The script also highlights two special regimes. Absorption appears when effort is strongly positive but result remains weak. Vacuum appears when result is strongly positive but effort remains weak. These conditions are then labeled directly on the oscillator.
In practical use, the indicator can help identify hidden resistance to price movement, low liquidity expansion, or moments where market participation and delivered movement are out of balance. It is best used as a context tool rather than a standalone entry engine.
🔹 Features
🔸 Effort Versus Result Framework
The script separates market behavior into two dimensions. Volume is treated as effort, and true range is treated as result. This creates a clean and intuitive model for comparing participation versus delivered movement.
🔸 Rolling Z Score Standardization
Both effort and result are transformed into rolling z scores over the selected lookback window. This makes the oscillator adaptive to the recent environment and allows direct comparison between volume and range.
🔸 Delta Oscillator
The final plotted value is the difference between effort z score and result z score. This gives the user a direct read on whether volume is leading range or range is leading volume.
🔸 Absorption Detection
When effort is strongly positive but result is weak or negative, the script flags absorption. This can indicate that strong participation is being met by opposing liquidity and price progress is being contained.
🔸 Vacuum Detection
When result is strongly positive but effort is weak or negative, the script flags a vacuum condition. This can indicate that price is moving through thin liquidity with little resistance.
🔸 Context Aware Histogram Coloring
The histogram changes color depending on whether the bar reflects absorption, vacuum, or neutral conditions. This makes regime identification faster and more visual.
🔸 Threshold Guides
The oscillator includes reference lines for equilibrium as well as absorption and vacuum alert thresholds, making it easier to interpret extremes.
🔸 Direct Chart Labels
Special conditions are labeled directly on the oscillator so absorption and vacuum events stand out immediately without requiring separate scanning.
🔹 Calculations
1) Defining the Flow Metrics Container
type FlowMetrics
float totalVol
float spread
float effortZ
float resultZ
This object stores the four main values used by the indicator.
totalVol stores the current bar volume.
spread stores the current bar range measure.
effortZ stores the standardized effort reading.
resultZ stores the standardized result reading.
So before any signal logic is built, the script already has a clean structure for the raw inputs and their normalized forms.
2) Measuring Effort and Result Inputs
float v = nz(volume, 1)
float tr = ta.tr(true)
This block defines the two core raw inputs of the indicator.
v is the current volume, with a fallback of 1 in case the symbol does not provide volume data.
tr is the true range of the bar, which is used as the result measure.
The reason true range is used instead of a simpler high minus low calculation is that true range also accounts for gaps relative to the prior close. This makes it a more complete measure of actual delivered price movement.
So the indicator begins with one participation variable and one movement variable.
3) Rolling Mean and Standard Deviation for Effort
float volMean = ta.sma(vol, len)
float volStd = ta.stdev(vol, len)
this.effortZ := volStd == 0 ? 0 : (vol - volMean) / volStd
This is the effort standardization step.
The script first computes the rolling average volume over the chosen window. Then it computes the rolling volume standard deviation over the same window. Finally, it converts the current volume into a z score:
effortZ = (current volume minus mean volume) divided by volume standard deviation
This means:
a positive effort z score implies current volume is above normal,
a negative effort z score implies current volume is below normal,
and zero means current volume is near its rolling average.
So effort is not judged by raw volume alone. It is judged by how unusual that volume is relative to recent history.
4) Safe Spread Handling for Result Calculation
float safeSpread = r == 0 ? syminfo.mintick : r
This line prevents division and standardization issues when the range is zero.
If the current true range is zero, the script substitutes the instrument’s minimum tick size instead. This ensures that the result side of the calculation always has a valid positive value and avoids unstable behavior in rare flat bars.
So the script remains numerically stable even when a bar has no measurable range.
5) Rolling Mean and Standard Deviation for Result
float spreadMean = ta.sma(safeSpread, len)
float spreadStd = ta.stdev(safeSpread, len)
this.resultZ := spreadStd == 0 ? 0 : (safeSpread - spreadMean) / spreadStd
This is the result standardization step.
Just like effort, the script calculates the rolling average and rolling standard deviation for the bar spread. It then converts the current spread into a z score:
resultZ = (current spread minus mean spread) divided by spread standard deviation
This means:
a positive result z score implies current movement is above normal,
a negative result z score implies current movement is below normal.
So result becomes directly comparable to effort on the same statistical scale.
6) Full Metric Calculation Method
method calcMetrics(FlowMetrics this, float vol, float r, int len) =>
this.totalVol := vol
this.spread := r
float volMean = ta.sma(vol, len)
float volStd = ta.stdev(vol, len)
this.effortZ := volStd == 0 ? 0 : (vol - volMean) / volStd
float safeSpread = r == 0 ? syminfo.mintick : r
float spreadMean = ta.sma(safeSpread, len)
float spreadStd = ta.stdev(safeSpread, len)
this.resultZ := spreadStd == 0 ? 0 : (safeSpread - spreadMean) / spreadStd
This method combines the full effort and result workflow into one place.
It first stores the raw bar volume and raw spread. Then it calculates the effort z score from rolling volume statistics and the result z score from rolling spread statistics.
So each bar receives:
a raw effort reading,
a raw result reading,
a normalized effort score,
and a normalized result score.
This normalized pair is what the rest of the oscillator uses.
7) Building the Main Oscillator Value
FlowMetrics flow = FlowMetrics.new()
flow.calcMetrics(v, tr, length)
float deltaZ = flow.effortZ - flow.resultZ
This is the main oscillator formula.
After the metrics object is updated, the script computes:
deltaZ = effortZ minus resultZ
This value answers the central question of the indicator:
is effort stronger than result, or is result stronger than effort?
If deltaZ is positive, effort is outrunning result.
If deltaZ is negative, result is outrunning effort.
If deltaZ is near zero, effort and result are more balanced.
So the oscillator is really a normalized imbalance measure between participation and delivered movement.
8) Absorption Condition
bool isAbsorption = flow.effortZ > 1.5 and flow.resultZ < 0.0
This is the first special regime filter.
Absorption is defined as:
effort significantly above normal,
while result remains weak.
The threshold 1.5 means effort must be at least 1.5 standard deviations above its rolling average. At the same time, result must still be below zero, meaning current movement is not even above its recent average.
This combination suggests that strong participation is entering the market but price is not expanding proportionally. That can imply opposing liquidity, passive absorption, or resistance to movement.
So absorption is the classic high effort, low result condition.
9) Vacuum Condition
bool isVacuum = flow.resultZ > 1.5 and flow.effortZ < 0.0
This is the second special regime filter.
Vacuum is defined as:
result significantly above normal,
while effort remains weak.
Here, price is delivering unusually large movement, but volume is not confirming that move with above average participation. This can imply thin liquidity, poor resistance, or fast movement through lightly traded space.
So vacuum is the classic low effort, high result condition.
10) Histogram Color Logic
color histColor = isAbsorption ? color.new(color.fuchsia, 30) :
isVacuum ? (close >= open ? color.new(color.aqua, 30) : color.new(color.orange, 30)) :
color.new(color.gray, 70)
This block determines how the histogram is colored.
If the current bar meets the absorption condition, the histogram is colored fuchsia.
If it meets the vacuum condition, the histogram is colored aqua when the candle is bullish and orange when the candle is bearish.
If neither special regime is active, the histogram is colored neutral gray.
So the visual layer helps the user distinguish ordinary imbalance readings from the two emphasized special states.
11) Plotting the Oscillator
plot(deltaZ, "Effort/Result Delta", style=plot.style_columns, color=histColor)
This line plots the main effort versus result delta as a column histogram.
The use of columns is helpful because it emphasizes relative magnitude and direction around the zero line. Positive columns show effort leading result. Negative columns show result leading effort.
So the visual output is both directional and strength sensitive.
12) Threshold and Equilibrium Lines
hline(1.5, "Vacuum Alert", color=color.new(color.aqua, 50), linestyle=hline.style_dashed)
hline(-1.5, "Absorption Alert", color=color.new(color.fuchsia, 50), linestyle=hline.style_dashed)
hline(0, "Equilibrium", color=color.new(color.gray, 50))
These reference lines give the oscillator context.
The zero line marks equilibrium, where effort and result are more balanced.
The positive 1.5 line acts as a visual vacuum threshold.
The negative 1.5 line acts as a visual absorption threshold.
These levels do not define the regime conditions directly by themselves, because the actual logic checks the separate effort and result z scores. But they still give the user a useful visual frame for interpreting the size of the delta reading.
13) Labeling Absorption Events
if isAbsorption
label.new(bar_index, deltaZ, text="Absorbed", color=color.new(color.fuchsia, 100), textcolor=color.fuchsia, style=label.style_none, size=size.small, yloc=yloc.price)
When an absorption condition is detected, the script prints an Absorbed label directly at the oscillator value for that bar.
This makes the event easier to spot when scanning history and also helps separate truly qualified absorption conditions from merely positive delta readings.
So the label is not attached to every strong positive bar, only to the bars that meet the specific high effort and weak result rule.
14) Labeling Vacuum Events
if isVacuum
label.new(bar_index, deltaZ, text="Vacuum", color=color.new(color.aqua, 100), textcolor=color.aqua, style=label.style_none, size=size.small, yloc=yloc.price)
This block does the same for vacuum events.
When a bar shows unusually strong range with weak volume participation, the script prints a Vacuum label at the oscillator level.
So the chart distinguishes not only statistical imbalance in general, but specifically the regime where result is outrunning effort. Indicator
