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.
Pine Script® インジケーター









