Liquidity Rejection StudyThe Liquidity Rejection Study is a specialized technical analysis tool designed to identify and visualize price exhaustion at key historical levels. By focusing on the relationship between price action, volume, and established pivot zones, this study helps traders distinguish between minor price fluctuations and significant structural shifts in market control.
Traders utilize the Liquidity Rejection Study to monitor institutional "footprints" left at supply and demand zones, providing a cleaner perspective on market reversals and trend continuation.
Calculation
The study operates through a multi-stage validation engine to ensure that only the most significant technical events are highlighted.
1. Structural Mapping: The indicator identifies local price extremes (Highest Highs and Lowest Lows) over a user-defined lookback period. These levels serve as the baseline for the liquidity zones.
2. Wick-to-Body Exhaustion: The study analyzes the anatomy of each candle interacting with these zones. A rejection is identified when a candle displays a high wick-to-body ratio (at least 2:1), indicating a failed attempt to breach the level.
3. Volume-Weighted Confirmation: To validate the rejection, the script requires a surge in volume relative to its moving average. This confirms that the price movement is backed by market liquidity.
4. Pivot Breach Validation: A "State Change" is only confirmed once the price successfully breaks the high (for bullish) or low (for bearish) of the rejection candle within a narrow time window.
Visuals and Interpretation
To maintain professional chart clarity, the study uses non-suggestive geometric markers:
Structural Diamonds: Confirmed rejections and structural shifts are marked with small diamond shapes. These signify points of high technical interest for discretionary analysis.
Historical Pivot Segments: The upper and lower boundaries used for the study are plotted as discrete lines, visualizing the active "liquidity ceiling" and "liquidity floor."
Inputs
Macro Baseline (EMA 200)
An optional trend filter. When enabled, the study only highlights rejections that align with the long-term institutional trend.
Pivot Lookback
The number of bars used to calculate the highest and lowest historical levels. A higher value results in more significant, longer-term zones.
Volume Threshold Multiplier
Adjusts the sensitivity of the volume filter. A value of 1.2, for example, requires volume to be 20% higher than the 20-period average to validate a rejection.
Volatility (ATR) Period
Sets the lookback for the Average True Range, which defines the "proximity zone" around the pivots where rejections are considered valid. Indicator

FVG Rejection Trade SystemHere's the publication description:
FVG Rejection Trade System
🔹 Introduction
This indicator — FVG Rejection Trade System — identifies Fair Value Gaps (FVGs) on your chart, detects when price returns to reject from those gaps, and automatically manages hypothetical trade entries, stop-losses, and take-profits — tracking all results in a live stats table.
The core idea is rooted in one of the more durable observations in price action: gaps created by three-candle imbalances act as unfinished business. When price returns to fill that imbalance and rejects, the gap has functioned as support or resistance. That rejection is the signal.
No indicator can guarantee the gap will hold. This model is a systematic framework for identifying and logging these events — not a prediction engine. A FVG that rejects on Tuesday may fill on Thursday. The stats table exists precisely to let you measure this empirically on your specific instrument and timeframe over time.
I'll cover the detection logic, entry rules, filtering options, and how to read the table output throughout.
🔹 The Premise
🔸 What is a Fair Value Gap?
A Fair Value Gap forms when price moves so aggressively in one direction that a three-candle sequence leaves an unfilled range. Specifically:
For a bullish FVG — the high of candle two bars ago is below the low of the current bar. That untouched range between them is the gap. Price gapped upward, leaving a pocket of inefficiency below.
For a bearish FVG — the low of candle two bars ago is above the high of the current bar. Price gapped downward.
To understand why these levels matter, consider what's happening mechanically. Assume price is trading at 5,000 on an S&P futures chart. A large aggressive buy order runs through the tape — three consecutive candles close higher with almost no overlap. The high of the first setup candle sits at 4,980. The low of the third candle is 5,010. Everything between 4,980 and 5,010 was skipped.
That range never saw two-sided trading. No sellers provided liquidity there because price moved through before they could respond. No buyers filled bids there because the move was already past them.
When price returns to that range, it is returning to the scene of unfinished business. Buyers who missed the initial move may be waiting. Sellers who were run over may defend. The gap acts as a potential inflection zone.
🔸 Why Rejection — Not Just Touch — Is the Signal
A gap retest alone isn't enough. Price entering a FVG is ambiguous — it could be reclaiming the zone cleanly, or it could be reversing hard through it. The distinction matters enormously for trade quality.
This indicator requires rejection confirmation: the candle that enters the zone must close back outside the zone on the opposite side from which it entered. For a bullish FVG, the candle's low must reach down into the zone and its close must be at or above the zone top. The candle wick penetrated — the body confirmed recovery.
This is the structural equivalent of a failed breakdown. Price tested the support area, couldn't sustain below it, and committed back above. That candle body is the market's real-time vote.
A close that confirms rejection is meaningfully different from a wick that merely touches.
🔸 Invalidation Logic — When the Gap No Longer Matters
Not all gaps deserve to be traded. This indicator implements a two-sided invalidation rule:
A bullish FVG is deleted if price closes below the gap's bottom boundary. Support is gone. There's no basis for a long setup in a zone that price has already violated on a closing basis.
A bullish FVG is also deleted if price closes above the gap's top boundary without a rejection. This means price blew through cleanly — the gap was consumed, not defended. The "retest and hold" scenario is no longer available.
The same logic applies symmetrically to bearish FVGs.
A gap that price has already escaped is no longer a valid reference level. Removing it keeps the chart clean and the trade logic honest.
🔹 How It Works
🔸 Detection and Box Rendering
FVGs are rendered as colored rectangles — green for bullish, red for bearish — extending a user-defined number of bars to the right. The minimum gap size filter (default: ATR-based) prevents the indicator from tagging every micro-gap on every bar. When Auto Min Gap Size is enabled, the gap must exceed one ATR(14) to be considered meaningful relative to current volatility. You can disable this and set a manual threshold if you prefer a fixed tick/point minimum.
Enabling Only Show Latest Gap keeps the chart uncluttered by removing previous boxes when a new one forms. Useful on lower timeframes where gaps stack quickly.
🔸 Entry Logic
When a rejection candle closes, the trade is queued — it does not enter on that candle's close. Entry fires at the open of the next bar. This is a deliberate choice: entering at the current bar's close introduces lookahead risk in backtesting. Entering at the next bar's open is what you would actually execute in practice by placing a market order after the signal candle closes.
Entry is long for bullish FVG rejections. Entry is short for bearish FVG rejections.
🔸 Stop-Loss Placement
Two stop modes are available:
FVG Zone — the stop is placed below the gap's lower boundary (for longs) or above the upper boundary (for shorts). A configurable buffer (default 10% of gap size) is added beyond the level to avoid being stopped by noise that slightly violates the zone.
Rejection Candle High/Low — the stop is placed at the extreme wick of the rejection candle itself (the low for longs, the high for shorts), again with the buffer. This produces a tighter stop and larger R:R in raw price terms, but is more susceptible to being stopped out on follow-through wicks.
The choice between these modes meaningfully changes your win rate and average risk. Neither is universally superior — the stats table exists to help you measure this on your instrument.
🔸 Take-Profit
TP is calculated as a fixed Risk:Reward multiple from entry. At the default 2:1, every dollar risked targets two dollars of reward. The R:R is displayed in the stats table and updates in real time when you change the setting.
🔸 Entry / SL / TP Lines
Three dashed lines are drawn from each entry bar: white for entry price, red for stop, green for take-profit. All three extend to the right until the trade resolves.
When a trade closes, the lines are capped at the exit bar. The line representing the level not reached is faded — red fades on wins, green fades on losses — giving you an immediate visual read on what happened without needing to inspect every trade manually.
Every element of these lines — color, width, style (solid, dashed, dotted) — is fully customizable from the Line Styles settings group.
🔸 TP ✓ / SL ✗ Labels
At the bar where each trade resolves, a label is placed at the exact exit price. TP ✓ in your chosen green confirms a winning trade. SL ✗ in your chosen red marks a stop-out. Labels are positioned above or below the bar based on direction and outcome so they don't stack on top of each other. Label size is independently configurable.
🔸 VWAP Filter
When enabled, the indicator will only enter long trades on rejection candles that closed above VWAP, and only enter short trades on candles that closed below VWAP. The VWAP line is rendered on the chart in yellow when this filter is active.
The rationale: VWAP is the volume-weighted average price for the session. A bullish FVG rejection occurring while price is below the day's average traded price is swimming against the volume-weighted current. Filtering to your directional VWAP bias is one of the simplest regime filters available on intraday charts.
Note that VWAP resets each session. On daily or higher timeframes this filter has less conceptual meaning and should likely be disabled.
🔸 Time Window Filter
The indicator includes a session time filter defaulting to 8:00 AM – 11:00 AM EST — the first three hours of the US equity session, generally considered the highest-liquidity and most directional window of the trading day. Only rejections occurring inside this window will trigger entries.
Time is calculated from the raw bar timestamp converted to UTC-5, so the filter functions correctly regardless of your chart's timezone setting. Start and end times are entered in 24-hour HHMM format (e.g., 800 for 8:00 AM, 1300 for 1:00 PM).
Toggling this filter off opens the system to all hours, which is useful for evaluating overnight sessions or non-US instruments.
🔸 Stats Table
A real-time performance table is rendered in the corner of your choice, showing:
Wins / Losses / Total — broken out for bullish trades, bearish trades, and combined
Win Rate — percentage of closed trades that hit TP before SL
R:R — the current risk-reward setting, so the context behind the win rate is always visible
Open — count of currently active trades by direction
Win rate without R:R is meaningless data. A 30% win rate at 3:1 R:R is profitable. A 60% win rate at 0.5:1 is not. The table shows both together intentionally.
🔹 Settings Reference
Fair Value Gap
Gap Length — how many bars the FVG box extends to the right
Auto Min Gap Size — uses ATR(14) as the minimum gap threshold; disable to set manually
Only Show Latest Gap — removes older boxes when a new gap forms
Delete Filled Gaps — removes boxes when price closes outside both boundaries
Trade System
Risk:Reward Ratio — TP distance as a multiple of risk
Stop Loss Placement — FVG Zone or Rejection Candle High/Low
Stop Buffer % — percentage of zone/candle range added beyond the SL level
VWAP Filter — restrict entries to VWAP-side direction
Time Window Filter — restrict entries to a configurable EST time range
Line Styles
Fully independent color, width (1–4), and style (Solid/Dashed/Dotted) for Entry, SL, and TP lines
Separate color and size controls for TP ✓ / SL ✗ hit labels
🔹 Closing Remarks
Fair Value Gaps are one of the more conceptually grounded tools in modern price action analysis. They represent real structural events — moments where directional aggression created an asymmetric footprint in the price record. Whether they consistently act as support or resistance depends heavily on the instrument, timeframe, and market regime.
This indicator is a measurement tool, not a prediction engine. The stats table is its most important feature. Load it on your preferred chart, let it run across several weeks of data, and examine whether bullish rejections, bearish rejections, or both are producing positive expectancy at your chosen settings. Change the time filter. Test different R:R ratios. Compare the VWAP-filtered results against unfiltered.
The system gives you the infrastructure to do that work empirically. What you do with the data is the actual edge. Indicator

Order Blocks Rejection Stats [RT]This indicator identifies Order Blocks based on price action. It draws rectangular zones on the chart for visual identification and highlights bounces (rejections) within these zones. Additionally, it provides optional trade visualization with entry, stop-loss (SL), and take-profit (TP) lines based on user-defined filters, along with a performance summary table for backtesting purposes.
The logic is inspired by smart money concepts (SMC), focusing on pivot zones where price may reverse or continue.
Note that this is a technical tool for analysis only; it does not provide trading signals or guarantees any outcomes.
Key Features
Order Block Detection: Automatically detects and draws bullish (demand) and bearish (supply) order blocks using predefined price action setups.
Bounce Identification: Marks rejections (bounces) at order blocks with triangles for quick visual cues.
Trade Visualization: On bounces meeting filter conditions, plots entry (at close), SL (at block extremity or candle open), and TP (based on adjustable risk-reward ratio) lines. Lines extend until SL or TP is hit, with arrows indicating hits (green for TP, red for SL).
Filters: Includes a customizable moving average (MA) for trend confirmation (e.g., long above MA), time window for session-based trading, and optional SL adjustment to the bounce candle's open.
Performance Table: Displays wins, losses, and win rate in a table (for educational backtesting; not real-time trading results).
Customizable Colors and Sizes: User inputs for line colors and table text size.
Inputs and Settings
Delete Order Blocks After Fill: Removes blocks after price breaks through them.
Order Block Extension Length: Sets how far blocks extend (0 for infinite).
Moving Average Settings: Length, type (SMA/EMA/etc.), and source for trend filter.
Time Filter: Start/end hours/minutes to restrict entries to specific sessions.
Use Bounce Candle Open for SL: Moves SL to the open of the confirming candle.
Risk Reward Ratio: Adjusts TP distance relative to risk (default 1:1).
Line Colors: Separate colors for long/short entry, SL, and TP lines.
Table Text Size: Options from "tiny" to "huge" for the stats table.
How It Works
Block Formation: Scans for pivot setups (e.g., engulfing or break patterns) to create new blocks, queuing them for future retests.
Bounce Detection: When price overlaps a block and forms a reversal pattern, it's marked as a bounce.
Entry Conditions: Entries trigger on bounces above/below the MA and within the time window. Lines are drawn and extended dynamically.
Exit Tracking: Monitors if price hits TP (win) or SL (loss), updates the table, and stops line extension.
Table Update: Shows cumulative stats on the last bar for review.
This indicator can be used on any timeframe or asset for zone-based analysis. Experiment with settings to suit your chart.
Important Disclaimer
This is an educational tool and does not constitute financial advice. Trading involves risk, and past performance is not indicative of future results. Always conduct your own analysis and use proper risk management. The developer makes no representations about profitability or suitability for any trading strategy. Indicator

Fair Value Gap Rejection AlertsOverview
The Fair Value Gap (FVG) Finder is a versatile Pine Script™ v6 indicator designed to identify price inefficiencies in the market, commonly known as Fair Value Gaps. These gaps represent areas where price has moved rapidly, leaving behind unbalanced regions that often act as support or resistance levels. This script highlights bullish (upward) and bearish (downward) FVGs as colored boxes on your chart, making it easy to spot potential reversal or continuation zones.
Building on standard FVG concepts, this indicator includes advanced features like automatic rejection detection. A rejection occurs when price wicks into the FVG but closes outside it, signaling a potential bounce without filling the gap. Bullish rejections (support bounces) are marked with green upward triangles below the bar, while bearish rejections (resistance bounces) use red downward triangles above the bar. Only the first rejection per FVG is tagged to avoid clutter.
The script also supports alerts for these rejections, allowing you to set up notifications in PulseWire for timely trading decisions. Gaps are drawn for a user-defined length but can detect rejections and fills beyond the visible box if needed.
Key Features
FVG Detection: Automatically identifies bullish FVGs (green boxes) when there's an upward price gap exceeding the minimum size, and bearish FVGs (red boxes) for downward gaps.
Rejection Logic: Detects wick-based rejections without gap filling. Bullish: Low enters the FVG but close is above. Bearish: High enters but close is below.
Alerts: Separate alerts for bullish and bearish rejections, configurable via PulseWire's alert system (use "alert() function calls only").
Visual Tags: Triangles mark rejection candles for quick visual confirmation.
Customization: Inputs include gap length, minimum gap size (manual or ATR-based), option to show only the latest gap, and delete filled gaps. Style options for colors, label sizes, and more.
Filling Mechanism: Optionally deletes boxes once price fully closes into the gap, indicating it's been mitigated.
How to Use
Add the indicator to your chart via PulseWire's Pine Editor.
Adjust inputs in the settings panel:
Gap Length: Controls how far the box extends (default: 60 bars).
Minimum Gap Size: Set manually or auto-adjust with ATR(14) for adaptive filtering.
Only Show Latest Gap: Limits display to the most recent FVG.
Delete Filled Gaps: Removes boxes after price fills them.
Styles: Customize colors and label sizes for better visibility.
Monitor the chart for FVG boxes. Watch for triangle shapes indicating rejections—these often signal entry points (e.g., buy on bullish rejection).
Set up alerts: In PulseWire, create alerts based on the indicator's "Bullish FVG Rejection" or "Bearish FVG Rejection" conditions.
Best used on timeframes like 5M-1H for intraday trading, or higher for swing setups. Combine with other tools like volume or trend lines for confirmation.
This indicator is inspired by Inner Circle Trader (ICT) and Smart Money Concepts (SMC) but includes original enhancements like per-gap rejection tracking to prevent multiple signals on the same zone. It does not guarantee profits and should be used as part of a broader strategy with proper risk management.
No external dependencies or subscriptions required—fully self-contained in Pine Script™ v6. Indicator

Volume Flow Analysis [UAlgo]Volume Flow Analysis is a market profile style volume study that builds a session anchored volume distribution, extracts key reference levels from the previous profile, and generates institutional style context signals based on Auction Market Theory concepts. The script combines several workflows in one tool: previous session volume profile levels (POC, VAH, VAL), liquidity void detection through LVN valleys, acceptance versus rejection logic around value, and Initial Balance with open type classification.
The indicator runs on price ( overlay=true ) and is designed for intraday or swing traders who want a structured read of where value formed in the prior profile and how the current session is interacting with it. Instead of only plotting static lines, the script actively interprets behavior when price moves outside the previous value area. It checks whether the move is rejected quickly (failed auction) or sustained with time and volume (acceptance), which helps distinguish responsive activity from initiative activity.
Another major component is the profile shape and liquidity void framework. The script identifies previous profile shape as P, b, or D based on POC location within the profile range, and it scans for LVN valleys that can act as low participation zones where price may travel quickly. This gives the user both structural context and event based signals from the same indicator.
The result is a comprehensive volume flow dashboard that merges profile levels, session behavior, and AMT inspired signal logic into a single chart layer.
🔹 Features
🔸 1) Anchored Session Volume Profile (Daily, Weekly, Monthly or Custom Anchor)
The script builds a volume profile for each anchor period selected by the user through the Profile Period (Anchor) input. Common choices include Daily, Weekly, and Monthly anchors. When a new anchor session begins, the current session profile is finalized and promoted to the previous profile, then a new profile begins.
This allows the indicator to continuously reference the fully calculated previous profile while the current session is developing.
🔸 2) Price Range Binning with User Defined Resolution
Each session profile is divided into a configurable number of rows (bins). The script maps price activity into these bins and distributes volume proportionally based on the overlap between each candle range and each volume bin.
This creates a more realistic histogram than assigning all candle volume to a single price level, especially for wide range candles.
🔸 3) Previous Profile Core Levels (POC, VAH, VAL)
Once a session completes, the script calculates and stores the key profile levels:
POC (Point of Control), the price bin with the highest volume
VAH (Value Area High)
VAL (Value Area Low)
Value Area is computed by expanding outward from the POC until the chosen percentage of total profile volume is covered. These levels are then plotted on the chart as dynamic reference lines for the next session.
🔸 4) Acceptance vs Rejection Logic Around Previous Value Area
The indicator monitors current session behavior relative to the previous VAH and VAL and classifies behavior as either rejection (failed auction) or acceptance (initiative drive).
Failed Auction (Rejection):
Price trades outside the previous value area but returns back inside before meeting acceptance criteria. This is treated as a failed attempt to establish new value.
Acceptance (Initiative Drive):
Price stays outside the previous value area for a user defined number of bars and accumulates enough volume relative to average volume. This suggests successful acceptance of higher or lower value.
This framework is useful for separating temporary probes from meaningful value migration.
🔸 5) Institutional Style Signal Labels
The script can display signal labels for:
Failed Auction Bullish and Bearish
Acceptance Bullish and Bearish
LVN Traversal Bullish and Bearish
These labels appear directly on price and use user defined bullish and bearish colors for quick interpretation.
🔸 6) LVN Traversal (Liquidity Void / Vacuum) Detection
The script detects low volume nodes as true local valleys in the previous profile histogram. A bin qualifies as an LVN when surrounding bins on both sides have higher volume for a chosen valley depth.
If current price enters one of these prior LVN zones from above or below, the script marks a potential traversal event. This can help identify zones where price may move faster due to lower prior participation.
🔸 7) Previous Profile Shape Classification (P, b, D)
The script classifies the previous profile shape based on where the POC sits within the full profile range:
P shape if POC is near the upper portion of the profile
b shape if POC is near the lower portion
D shape if POC is near the middle
This gives quick context about the prior session structure, which can support directional bias interpretation and session planning.
🔸 8) Initial Balance (IB) Tracking
The indicator tracks the Initial Balance range using a user defined duration in minutes. During the IB window, it records session high and low. After the IB period ends, it can draw an IB box on the chart for visual reference.
This is useful for intraday frameworks where the IB range is used as a key reference for breakout, reversal, and auction development.
🔸 9) Open Type Classification and Daily Bias
At the start of each new anchor session, the script compares the new open to the previous value area and assigns a basic daily bias such as initiative bullish, initiative bearish, or responsive inside. After the IB period completes, it classifies the open type using rule based conditions, including:
Open Drive Bullish / Bearish
Open Rejection Reverse Bullish / Bearish
Open Test Drive Bullish / Bearish
This adds a session narrative layer on top of the profile levels.
🔸 10) Previous Profile Histogram Visualization on Last Bar
On the last bar, the script can render the previous profile histogram as a horizontal bar style distribution using boxes. Bins inside the previous value area can be colored differently from bins outside value.
This provides an at a glance visual summary of where prior volume concentrated, without needing a separate profile tool.
🔸 11) Extensive Visual Customization
Users can configure colors for:
Previous POC
Previous VA levels
Histogram bins
Value area histogram bins
Bullish signals
Bearish signals
This makes it easy to integrate the indicator into existing chart themes and workflows.
🔸 12) Structured Object Based Design
The script uses custom types ( VolumeBin and SessionProfile ) to store profile state, bins, levels, shape, and LVN zones. This object based approach keeps the logic modular and easier to maintain as features are added.
🔹 Calculations
1) Session Detection and Profile Lifecycle
A new profile session is detected with:
bool isNewSession = timeframe.change(i_anchor)
When a new session begins:
The current profile is finalized (end bar, profile calculations)
The current profile becomes the previous profile
A fresh session profile starts from the current bar
This design ensures that current session logic can reference a fully completed previous profile with stable POC, VAH, VAL, shape, and LVN data.
2) Volume Profile Bin Initialization
Each session profile is divided into i_rows equal price bins between session low and session high:
float step = (this.highestPrice - this.lowestPrice) / rows
for i = 0 to rows - 1
float bottom = this.lowestPrice + (i * step)
float top = bottom + step
this.bins.push(VolumeBin.new(top, bottom, 0.0))
As the current session high or low changes, the script rebuilds the current profile bins and repopulates volume from session start to the current bar. This keeps the current profile geometry aligned with the latest session range.
3) Proportional Volume Distribution Across Bins
For each candle, the script distributes volume across all bins according to candle range overlap:
float overlapTop = math.min(h, bin.priceTop)
float overlapBottom = math.max(l, bin.priceBottom)
if overlapTop > overlapBottom
float overlapRatio = (overlapTop - overlapBottom) / barRange
float volToAdd = v * overlapRatio
bin.volumeTotal += volToAdd
this.totalVolume += volToAdd
Interpretation:
Volume is allocated proportionally to the fraction of the candle range overlapping each price bin. This is a practical approximation of intrabar volume distribution across price.
Special handling exists for zero range candles, where volume is assigned to the bin containing the candle price.
4) POC Detection and Profile Max Volume
After session completion, the script scans all bins to find the highest volume bin:
for i = 0 to this.bins.size() - 1
VolumeBin bin = this.bins.get(i)
if bin.volumeTotal > maxVol
maxVol := bin.volumeTotal
pocIndex := i
The POC price is set to the midpoint of that bin:
this.pocPrice := (pocBin.priceTop + pocBin.priceBottom) / 2
The script also stores maxVolume , which is later used to scale histogram width display on the chart.
5) Value Area Calculation (VAH / VAL)
The Value Area is built by expanding outward from the POC until the target percentage of session volume is reached:
float targetVol = this.totalVolume * (vaPct / 100.0)
float currentVol = pocBin.volumeTotal
int upperIndex = pocIndex
int lowerIndex = pocIndex
At each step, the script compares the next upper and lower bin volumes and expands toward the larger volume side first. This continues until the cumulative value area volume reaches the target percentage.
Final levels:
this.vahPrice := this.bins.get(upperIndex).priceTop
this.valPrice := this.bins.get(lowerIndex).priceBottom
This is a standard volume profile style value area expansion method centered on POC.
6) Previous Profile Shape Classification (P, b, D)
The profile shape is inferred from the POC position inside the profile range:
float profileRange = this.highestPrice - this.lowestPrice
float pocPosPct = (this.pocPrice - this.lowestPrice) / profileRange
Classification logic:
P shape if POC is at or above 70 percent of the range
b shape if POC is at or below 30 percent
D shape otherwise
This is a simplified but practical shape proxy based on volume concentration location.
7) LVN (Liquidity Void) Valley Detection
The script identifies LVNs as local volume minima among profile bins, using a user defined valley depth i_lvnDepth . A bin is treated as an LVN if the bins on both sides for the specified depth all have greater volume:
for j = 1 to lvnDepth
if this.bins.get(i - j).volumeTotal <= currentBin.volumeTotal or this.bins.get(i + j).volumeTotal <= currentBin.volumeTotal
isValley := false
break
Only non zero volume bins are considered. Detected LVNs are stored in this.lvnZones for use in later traversal signals.
8) Initial Balance (IB) Calculation
At the start of a new session, the script resets IB state and starts tracking the session open, session start time, and current IB high and low. While the market is still inside the IB duration:
ibHigh := math.max(ibHigh, high)
ibLow := math.min(ibLow, low)
IB tracking ends once the elapsed time exceeds the configured duration in minutes:
if (time - sessionStartTime) >= i_ibMins * 60000
inIb := false
This produces the opening range used for later visualization and open type classification.
9) Daily Bias and Open Type Classification
At each new session open, the script sets a basic bias by comparing the session open to the previous value area:
Open above previous VAH suggests initiative bullish
Open below previous VAL suggests initiative bearish
Open inside previous value suggests responsive / inside
After the IB period ends, the script classifies the open type using rule based comparisons among:
Open location relative to previous VAH / VAL
Close relative to IB highs and lows
Intraday test and rejection behavior around prior value
Examples from the code include:
"Open-Drive Bullish"
"Open-Rejection-Reverse Bearish"
"Open-Test-Drive Bullish"
This gives a structured session narrative that aligns with many profile and AMT workflows.
10) Acceptance vs Failed Auction Logic (Above VAH)
The script tracks consecutive bars and cumulative volume when price closes above the previous VAH:
if close > prevVah
barsAboveVah += 1
volAboveVah += volume
If price returns inside value before acceptance is confirmed, it prints a failed auction bearish signal (fade breakout logic):
if barsAboveVah > 0 and not acceptedAbove and i_sigFailedAuc
isFailedAucBear := true
Acceptance bullish is confirmed only if both time and volume thresholds are satisfied:
if barsAboveVah >= i_accBars and volAboveVah >= (avgVol * i_accVolMult) and not acceptedAbove and i_sigAccept
acceptedAbove := true
isAcceptBull := true
This is a practical combination of time and participation filters, which reduces false acceptance signals from brief low volume excursions.
11) Acceptance vs Failed Auction Logic (Below VAL)
The same framework is applied below the previous VAL:
Tracking closes below VAL:
if close < prevVal
barsBelowVal += 1
volBelowVal += volume
Failed auction bullish if price returns inside before acceptance:
if barsBelowVal > 0 and not acceptedBelow and i_sigFailedAuc
isFailedAucBull := true
Acceptance bearish if time and volume thresholds are met:
if barsBelowVal >= i_accBars and volBelowVal >= (avgVol * i_accVolMult) and not acceptedBelow and i_sigAccept
acceptedBelow := true
isAcceptBear := true
This creates a symmetric AMT style signal model for both sides of value.
12) LVN Traversal Signal Logic
If LVN traversal signaling is enabled, the script checks whether price enters a previous LVN zone from outside:
Bullish traversal candidate when price enters the LVN from below
Bearish traversal candidate when price enters the LVN from above
Code logic example:
if close > lvn.priceBottom and close < lvn.priceTop and close < lvn.priceBottom
isLvnTravBull := true
This flags the moment price enters a potential liquidity void zone where faster movement may occur.
13) Previous Profile Histogram Rendering on Last Bar
On the last chart bar, the script draws the previous session histogram using boxes. Width is normalized by each bin volume relative to the profile max volume:
float widthRatio = bin.volumeTotal / previousProfile.maxVolume
int boxRight = bar_index + math.round((rightBar - bar_index) * widthRatio)
Bins inside VAH and VAL are colored using the value area histogram color, while other bins use the general histogram color. This gives a compact visual profile snapshot without external tools.
14) Dynamic Plots for Previous POC, VAH, and VAL
The previous profile reference levels are continuously plotted as line break style plots:
plot(plotPoc, "Prev POC", color=i_colPoc, linewidth=2, style=plot.style_linebr)
plot(plotVah, "Prev VAH", color=i_colVa, linewidth=1, style=plot.style_linebr)
plot(plotVal, "Prev VAL", color=i_colVa, linewidth=1, style=plot.style_linebr)
These lines provide stable reference levels throughout the current session and form the basis for the acceptance, rejection, and open type logic. Indicator

VSA with Absorption Proxy for Holmes and Bookmap StyleVSA + Absorption Proxy – Holmes / Bookmap Style (No Delta Data Required)
This open-source strategy is a simplified, VSA (Volume Spread Analysis) inspired scalper that approximates **absorption** and **rejection** patterns commonly observed in professional order-flow tools (Bookmap, Holmes, Jigsaw, etc.) — using only standard OHLCV data.
Core Concept & Why This Proxy?
In VSA and order-flow trading, **absorption** occurs when aggressive selling is met with strong buying support (high volume + wide spread + reversal up), often signaling exhaustion of sellers and potential reversal/continuation up. **Rejection** is the mirror: aggressive buying met with strong selling (high volume + wide spread + reversal down).
Because true bid/ask delta is not available in standard Pine Script, this script uses a directional volume proxy:
- delta ≈ volume × (close - open) / (high - low)
- Combined with wide spread (vs ATR) + high volume (vs SMA) + delta flip
This creates a reasonable proxy for spotting climactic volume bars where one side gets absorbed/rejected.
Entry & Exit Logic
Long (Absorption Bull):
- High volume bar (volume > SMA(volume,20) × multiplier)
- Wide spread (range > ATR(14) × multiplier)
- Bullish candle (close > open)
- Delta turns positive after being negative previous bar
Short (Rejection Bear): mirror logic (bearish candle + delta turns negative)
Risk Management (fixed %):
- Stop Loss: entry low/high adjusted by riskPct (default 1%)
- Take Profit: risk × rrTarget (default 3.5:1)
Visuals
- Green background + triangle below bar → Absorption Bull signal
- Red background + triangle above bar → Rejection Bear signal
Important Realism & Backtesting Guidelines
To avoid misleading results, publish/test with:
- Initial Capital: $10,000 – $50,000 (realistic retail/futures account)
- Position sizing: 1–3% equity per trade (adjust via strategy properties)
- Commission: $4–$10 round-turn per contract (futures) or 0.03–0.05% (forex/stocks)
- Slippage: 1–4 ticks (futures) or 0.5–2 pips (forex) — higher during news
- Dataset: ≥12–36 months on chosen timeframe (aim for 400–1000+ trades)
- Risk per trade: 0.5–2% max — never exceed sustainable levels
Expectations:
- Works best on high-volume instruments (NQ, ES, GC, BTC, major forex) during active sessions
- Fewer signals in low-volatility/choppy periods
- Drawdowns common during strong trends — this is a counter-trend / absorption catcher, not trend-following
- News events (FOMC, NFP, earnings) can cause false signals — avoid or widen stops
How to Use
1. Apply to high-liquidity symbols (NQ1!, ES1!, GC1!, BTCUSD, EURUSD, XAUUSD)
2. Timeframes: 3m–15m for scalping, 30m–1h for swing context
3. Trade during high-volume sessions (London/NY overlap for forex, US open for futures)
4. Look for confluence:
- Absorption + nearby support / demand zone → stronger long
- Rejection + nearby resistance / supply zone → stronger short
5. Forward-test on demo extensively — absorption setups are high-conviction but low-frequency
6. Always use proper position sizing — never risk more than 1–2% per trade
Publish Recommendation
- Use a clean chart: only this strategy, no extra indicators/drawings
- Show realistic Strategy Tester results with commission/slippage applied
- Screenshot during active session with visible absorption/rejection signal + background tint
Educational tool — open-source for learning VSA/order-flow concepts. This is a proxy approximation — not true delta/order-flow. Trading involves substantial risk of loss. Test thoroughly and trade responsibly.
Feedback welcome — especially parameter tuning ideas for different instruments! Strategy

Indicator

StO Price Action - Level ReactionShort-Summary
- Multi-timeframe reaction indicator for M5, M15, M30, H1, H4
- Monitors price interaction with higher timeframe levels (Daily, Weekly, H4)
- Detects whether price touches or breaks choosen levels
- Fully configurable colors, visibility and alerts per timeframe and level type
Full Description
Overview
- Tracks market reaction on significant levels across multiple timeframes
- Designed to identify intraday reactions to higher timeframe structure
- Supports both bullish and bearish reactions, with separate visual cues
- Alerts can be enabled to notify traders of touches or breaks
Core Logic
- Choice between detecting a touch or a break of the level
- Configurable reference level: Open, High or Low
- Lookback period can be set to target specific levels from previous candles
Timeframe Reactions
- Supported intraday reaction timeframes: M5, M15, M30, H1, H4, Daily, Weekly
- Each reaction type can be individually toggled for display
- Bullish and bearish reactions have separate color settings
- Alerts configurable per timeframe and reaction type
Alerting
- Alerts can be triggered for touches or breaks
- Supports separate alerts for each timeframe and each direction (bull/bear)
- Useful for real-time monitoring of key level interactions
Notes
- Intended as a market reaction tool not a standalone entry signal
- Helps traders confirm if price respects or violates higher timeframe levels Indicator

Indicator

Indicator

Volumetric Rejection Blocks [UAlgo]The Volumetric Rejection Blocks is designed to help traders identify and visualize key price levels where volumetric rejections occur, which may indicate a shift in market sentiment. These rejections can signal potential trend reversals or areas where price action is likely to face support or resistance. By drawing rejection blocks based on volumetric strength, the indicator allows users to observe where significant buying or selling pressure has been exerted, which can be used as a reference point for future price action.
Also indicator dynamically calculates swing highs and lows, analyzes bullish and bearish strengths based on volume-weighted price movements, and displays rejection blocks on the chart. Each rejection block represents an area where the price attempted to move beyond a certain level but faced rejection, either on a close or wick basis. This can be particularly useful for traders who rely on market structure and order flow to make informed decisions about entering or exiting trades.
🔶 Key Features
Swing Length Customization: Allows users to define the swing length, helping tailor the sensitivity of the swing high and low detection to the specific market conditions.
Rejection Block Visualization: Displays up to the last 10 rejection blocks based on user settings, clearly marking areas of significant bullish or bearish rejections.
Volumetric Strength Analysis: The indicator calculates bullish and bearish strength for each rejection block, based on volume-weighted price movements over the last few bars, giving insight into the intensity of the rejection.
Violation Check Type: Offers two options for violation detection—"Close" and "Wick". This allows traders to specify whether a price level is considered broken only if it closes beyond the level or if any wick breaches it.
Bullish and Bearish Block Coloring: Rejection blocks are colored to represent bullish (green) and bearish (red) rejection areas. The color transparency can be adjusted for clear visibility overlaid on the price chart.
Market Structure Labels: Labels and lines marking "Market Structure Shift" (MSS) and "Break of Structure" (BOS) are displayed, giving traders context about significant market structure changes.
🔶 Interpreting the Indicator
Rejection Blocks: These colored blocks on the chart indicate areas where the price faced significant buying or selling pressure. A green block suggests a bullish rejection (support zone), where buyers absorbed the sell-off, potentially pushing the price upward. Conversely, a red block indicates a bearish rejection (resistance zone), where sellers overpowered buyers, potentially driving the price lower.
Strength Analysis: The width of the green and red sections within a rejection block represents the relative bullish and bearish strengths. A wider green section indicates stronger bullish support, while a wider red section suggests more robust bearish resistance. This helps traders gauge the likelihood of price holding or breaching these levels.
Market Structure Shift (MSS) and Break of Structure (BOS): The indicator automatically detects and labels significant changes in market structure. An "MSS" label indicates the first break, suggesting a potential shift in trend direction. A "BOS" label indicates a subsequent confirmation in trend direction, allowing traders to recognize potential trend continuations.
Violation Check: Traders can choose how to interpret breaks of these rejection blocks. Using the "Close" option provides a more conservative approach, requiring a close beyond the level for confirmation. The "Wick" option is more aggressive, treating any wick beyond the level as a break.
🔶 Disclaimer
Use with Caution: This indicator is provided for educational and informational purposes only and should not be considered as financial advice. Users should exercise caution and perform their own analysis before making trading decisions based on the indicator's signals.
Not Financial Advice: The information provided by this indicator does not constitute financial advice, and the creator (UAlgo) shall not be held responsible for any trading losses incurred as a result of using this indicator.
Backtesting Recommended: Traders are encouraged to backtest the indicator thoroughly on historical data before using it in live trading to assess its performance and suitability for their trading strategies.
Risk Management: Trading involves inherent risks, and users should implement proper risk management strategies, including but not limited to stop-loss orders and position sizing, to mitigate potential losses.
No Guarantees: The accuracy and reliability of the indicator's signals cannot be guaranteed, as they are based on historical price data and past performance may not be indicative of future results. Indicator

VWAP RangeThe VWAP Range indicator is a highly versatile and innovative tool designed with trading signals for trading the supply and demand within consolidation ranges.
What's a VWAP?
A VWAP (Volume Weighted Average Price) represents an equilibrium point in the market, balancing supply and demand over a specified period. Unlike simple moving averages, VWAP gives more weight to periods with higher volume. This is crucial because large volumes indicate significant trading activity, often by institutional traders, whose actions can reflect deeper market insights or create substantial market movements. The VWAP is also often used as a benchmark to evaluate the efficiency of executed trades. If a trader buys below the VWAP and sells above it, they are generally considered to have transacted favourably.
This is how it works:
Multiple VWAP Anchors:
This indicator uses multiple VWAPs anchored to different optional time periods, such as Daily, Weekly, Monthly, as well as to the highest high a lowest low within those periods. This multiplicity allows for a comprehensive view of the market’s average price based on volume and price, tailored to different trading styles and strategies.
Dynamic and Fixed Periods:
Traders can choose between using dynamic ranges, which reset at the start of each selected period, and specifying a date and time for a particular fixed range to trade. This flexibility is crucial for analyzing price movements within specific ranges or market phases.
Fixed ranges allow VWAPs to be calculated and anchored to a significant market event, the beginning of a consolidation phase or after a major news announcement.
Signal Generation:
The indicator generates buy and sell signals based on the relationship of the price to the VWAPs. It also allows for setting a maximum number of signals in one direction to avoid overtrading or pyramiding. Be sure to wait for the candle close before trading on the signals.
Average Buy/Sell Signal Lines:
Lines can be plotted to display the average buy and sell signal prices. The difference between the lines shows the average profit per trade when trading on the signals in that range. It's a good way to see how profitable a range is on average without backtesting the signals. The lines will also often turn into support and resistance areas, similar to value areas in a volume profile.
Customizable Settings:
Traders have control over various settings, such as the VWAP calculation method and bar color. There are also tooltips for every function.
Hidden Feature:
There's a subtle feature in this indicator: if you have 'Indicator values' turned on in PulseWire, you'll see a Sell/Buy Ratio displayed only in the status line. This ratio indicates whether there are more sell signals than buy signals in a range, regardless of the Max Signals setting. A red value above 1 suggests that the market is trending upward, indicating you might want to hold your long positions a bit longer. Conversely, a green value below 1 implies a downward trend.
Indicator

Indicator

Indicator

Indicator

Indicator

Indicator

Indicator
