BarrettFVG Crossfire Entry Model

An entry model built on top of crossfire zone detection — the price bands where an old unfilled Fair Value Gap gets struck by a newer, opposite-direction FVG. Instead of trading zone touches directly, this version requires a structural break to confirm the retest before signalling an entry, and plots stop-loss and take-profit levels for each signal.
What a crossfire zone is
A Fair Value Gap is a three-candle imbalance — a price range that got skipped over rather than traded through. Most FVG tools treat each gap as its own independent level.
A crossfire zone is different: it's the overlap between an older, still-unfilled FVG and a newer FVG pointing the opposite direction. Rather than one-sided imbalance, it marks a band where bullish and bearish inefficiency directly collide — a genuinely contested area rather than a single gap.
The star rating (★) counts how many times a zone has been flipped by a new opposing FVG. This matters for a structural reason, not just as a tally: each flip keeps only the portion of the zone that the new FVG actually overlapped, so the band narrows with every flip. A 3★ zone isn't just "tested more" — it's physically tighter and more precisely defined than a 1★ zone. That has a direct practical consequence: a stop placed beyond a high-star zone's far side is naturally tighter than the same stop on a wide, freshly-formed zone.
The entry model
The original indicator treats the retest itself as the tradeable moment. This version treats a retest as an arming event and requires confirmation before signalling:
Zone forms — an old FVG is struck by an opposite FVG, creating a contested band
Star filter — the zone must have flipped enough times to meet the minimum star setting (optional)
Retest — price leaves the zone, then returns to it. This arms a pending entry, it does not fire one
Break of Structure — within a configurable bar window, price must break the most recent 1-minute swing in the zone's direction. This is the actual trigger. BOS uses its own independent pivot tracking rather than the zone's boundaries, so the confirmation is a genuine structural event rather than a restatement of the level that produced the retest
Displacement — the triggering candle must show real conviction: range large relative to ATR, a substantial body rather than mostly wick, and optionally a close in the trade's direction
Session and cooldown gates — signals restricted to configurable trading windows, with a minimum bar spacing between same-direction entries
Turning off the BOS requirement reverts to the original behaviour, where the retest alone fires the signal.
VWAP trend filter (optional, off by default)
Longs only above the active VWAP, shorts only below. The distinguishing feature is which VWAP counts as active: the NY Session VWAP during NY hours, the True Day Open VWAP outside them — so the reference is always anchored to the session actually in play.
Because the NY VWAP anchors at 09:30 with almost no sample behind it, it whipsaws around price for the first several minutes. A configurable grace period (default 15 minutes, measured in real time rather than bar count so it holds on any timeframe) keeps the filter on the TDO VWAP until the NY VWAP has enough data to mean anything.
Risk management
Every entry signal plots a stop-loss and take-profit:
SL — Recent market structure (default): beyond the lowest low / highest high over a configurable lookback
SL — Beyond zone far side: beyond the point where the zone itself would be considered mitigated. Tighter on high-star zones, since each flip narrows the band
TP: a configurable R multiple of the stop distance
Lines are removed automatically once price reaches either level
Context included
Key levels: previous day high/low, previous week high/low, Asia session high/low, London session high/low
Dual VWAPs: True Day Open (18:00 EST anchor, runs continuously) and NY Session (09:30 EST anchor, disappears outside the session)
Origin funnel: optional lines showing which base FVG a zone came from
Retest markers: optional small arrows on every retest, including ones that never confirmed — useful for seeing how many entries are being filtered out
Alerts
Dynamic alert messages carrying direction, the zone's star count, and entry/SL/TP prices:
MNQ1! — LONG | 3★ zone | Entry 21847.25 | SL 21838.00 | TP 21856.50
Set these up via Add Alert → Condition → "Alert() function calls only". Separate static alert conditions are also available in the dropdown, and unconfirmed retests can optionally alert on their own.
Settings notes
Settings are grouped roughly in order of how often you'd change them — entry model and filters first, cosmetic and structural settings last. Every input has a tooltip explaining what it does.
Defaults are starting points, not optimised values. They have not been backtested or tuned for any particular instrument or timeframe. Expect to adjust the BOS window, displacement thresholds, and star minimum for whatever you trade.
Credit
Crossfire zone detection — the FVG pairing, overlap, flip, and star mechanics — is the original work of fluxchart, published as "FVG Crossfire" and used here under the Mozilla Public License 2.0. This version adds the entry model, confirmation filters, risk management, key levels, and VWAPs on top of that engine. Per MPL 2.0, this modified version also remains open-source under the same license.
Disclaimer
This script is provided for educational and informational purposes only and does not constitute financial, investment, or trading advice, nor a recommendation to buy or sell any instrument. Trading futures, forex, and other leveraged instruments carries substantial risk of loss and is not suitable for every investor. You can lose more than your initial deposit.
No indicator can predict future price movement. Signals produced by this script are pattern-based observations, not forecasts. Past performance, backtested results, and historical signals are not indicative of future results.
The default settings are starting points and have not been optimised for any specific market, timeframe, or account. Test thoroughly on historical data and in simulation before risking real capital.
You are solely responsible for your own trading decisions and any resulting outcomes. The author accepts no liability for any losses incurred through use of this script.
What a crossfire zone is
A Fair Value Gap is a three-candle imbalance — a price range that got skipped over rather than traded through. Most FVG tools treat each gap as its own independent level.
A crossfire zone is different: it's the overlap between an older, still-unfilled FVG and a newer FVG pointing the opposite direction. Rather than one-sided imbalance, it marks a band where bullish and bearish inefficiency directly collide — a genuinely contested area rather than a single gap.
The star rating (★) counts how many times a zone has been flipped by a new opposing FVG. This matters for a structural reason, not just as a tally: each flip keeps only the portion of the zone that the new FVG actually overlapped, so the band narrows with every flip. A 3★ zone isn't just "tested more" — it's physically tighter and more precisely defined than a 1★ zone. That has a direct practical consequence: a stop placed beyond a high-star zone's far side is naturally tighter than the same stop on a wide, freshly-formed zone.
The entry model
The original indicator treats the retest itself as the tradeable moment. This version treats a retest as an arming event and requires confirmation before signalling:
Zone forms — an old FVG is struck by an opposite FVG, creating a contested band
Star filter — the zone must have flipped enough times to meet the minimum star setting (optional)
Retest — price leaves the zone, then returns to it. This arms a pending entry, it does not fire one
Break of Structure — within a configurable bar window, price must break the most recent 1-minute swing in the zone's direction. This is the actual trigger. BOS uses its own independent pivot tracking rather than the zone's boundaries, so the confirmation is a genuine structural event rather than a restatement of the level that produced the retest
Displacement — the triggering candle must show real conviction: range large relative to ATR, a substantial body rather than mostly wick, and optionally a close in the trade's direction
Session and cooldown gates — signals restricted to configurable trading windows, with a minimum bar spacing between same-direction entries
Turning off the BOS requirement reverts to the original behaviour, where the retest alone fires the signal.
VWAP trend filter (optional, off by default)
Longs only above the active VWAP, shorts only below. The distinguishing feature is which VWAP counts as active: the NY Session VWAP during NY hours, the True Day Open VWAP outside them — so the reference is always anchored to the session actually in play.
Because the NY VWAP anchors at 09:30 with almost no sample behind it, it whipsaws around price for the first several minutes. A configurable grace period (default 15 minutes, measured in real time rather than bar count so it holds on any timeframe) keeps the filter on the TDO VWAP until the NY VWAP has enough data to mean anything.
Risk management
Every entry signal plots a stop-loss and take-profit:
SL — Recent market structure (default): beyond the lowest low / highest high over a configurable lookback
SL — Beyond zone far side: beyond the point where the zone itself would be considered mitigated. Tighter on high-star zones, since each flip narrows the band
TP: a configurable R multiple of the stop distance
Lines are removed automatically once price reaches either level
Context included
Key levels: previous day high/low, previous week high/low, Asia session high/low, London session high/low
Dual VWAPs: True Day Open (18:00 EST anchor, runs continuously) and NY Session (09:30 EST anchor, disappears outside the session)
Origin funnel: optional lines showing which base FVG a zone came from
Retest markers: optional small arrows on every retest, including ones that never confirmed — useful for seeing how many entries are being filtered out
Alerts
Dynamic alert messages carrying direction, the zone's star count, and entry/SL/TP prices:
MNQ1! — LONG | 3★ zone | Entry 21847.25 | SL 21838.00 | TP 21856.50
Set these up via Add Alert → Condition → "Alert() function calls only". Separate static alert conditions are also available in the dropdown, and unconfirmed retests can optionally alert on their own.
Settings notes
Settings are grouped roughly in order of how often you'd change them — entry model and filters first, cosmetic and structural settings last. Every input has a tooltip explaining what it does.
Defaults are starting points, not optimised values. They have not been backtested or tuned for any particular instrument or timeframe. Expect to adjust the BOS window, displacement thresholds, and star minimum for whatever you trade.
Credit
Crossfire zone detection — the FVG pairing, overlap, flip, and star mechanics — is the original work of fluxchart, published as "FVG Crossfire" and used here under the Mozilla Public License 2.0. This version adds the entry model, confirmation filters, risk management, key levels, and VWAPs on top of that engine. Per MPL 2.0, this modified version also remains open-source under the same license.
Disclaimer
This script is provided for educational and informational purposes only and does not constitute financial, investment, or trading advice, nor a recommendation to buy or sell any instrument. Trading futures, forex, and other leveraged instruments carries substantial risk of loss and is not suitable for every investor. You can lose more than your initial deposit.
No indicator can predict future price movement. Signals produced by this script are pattern-based observations, not forecasts. Past performance, backtested results, and historical signals are not indicative of future results.
The default settings are starting points and have not been optimised for any specific market, timeframe, or account. Test thoroughly on historical data and in simulation before risking real capital.
You are solely responsible for your own trading decisions and any resulting outcomes. The author accepts no liability for any losses incurred through use of this script.
Penafian
Maklumat dan penerbitan adalah tidak bertujuan, dan tidak membentuk, nasihat atau cadangan kewangan, pelaburan, dagangan atau jenis lain yang diberikan atau disahkan oleh TradingView. Baca lebih dalam Terma Penggunaan.
Penafian
Maklumat dan penerbitan adalah tidak bertujuan, dan tidak membentuk, nasihat atau cadangan kewangan, pelaburan, dagangan atau jenis lain yang diberikan atau disahkan oleh TradingView. Baca lebih dalam Terma Penggunaan.