Eye Imbalance Zones [EyeAlgo]

965
Eye Imbalance Zones turns every fair value gap into a demand or supply zone, stacks it with its order block, adds higher-timeframe gaps (4H by default), flips broken zones into inverse and breaker zones, shows how much of each gap is already used, and measures on YOUR chart how often each zone type held when price came back to it for the first time.

Snapshot


🟢 OVERVIEW

Many FVG and order block tools draw zones but do not measure how those zones behaved on your market, so you still do not know which kind of zone has actually reacted on the market you trade. This tool keeps a first-touch scoreboard for every zone it draws, using one fixed rule for every zone type. It answers three questions on one chart:

• Where is the nearest demand zone below price and the nearest supply zone above price, and what kind of zone is it?
• How much of the gap has price already used, and is price inside a zone right now?
• On this symbol and timeframe, how often did zones of this type, grade and session hold on their first touch, and how often did they break?


🟢 WHAT MAKES IT ORIGINAL

▶ One first-touch scoreboard for every zone type: FVG, FVG + OB, 4H FVG, inverse FVG and breaker are all scored with the same symmetric HELD / BROKEN rule and the same number of candles, so their results can be compared side by side.
▶ HTF zones scored on their own scale: HTF zones (4H by default) use the higher timeframe's ATR and a reaction window of the same number of higher-timeframe candles, so a large HTF gap is not judged by small chart-timeframe moves.
▶ Flips scored as their own types: a zone closed through becomes an inverse FVG (and the order block of an FVG + OB zone becomes a breaker), and these flipped zones get their own held rates.
▶ Fill meter tied to the scoreboard: the median fill of zones that held is reported, and the part of the gap that price has already traded into is faded out, with a line at the deepest fill, and the label shows "fresh" or "X% filled".
▶ Grade ⭐ / ⭐⭐ / ⭐⭐⭐ and session rows: the scoreboard is split by grade and by the session the zone formed in, so you can see whether these conditions mattered on your chart (they often do not).

These parts are not separate tools: every zone the script draws, including flips and HTF zones, feeds the same first-touch scoreboard, and grade, session and fill are only there to split and explain that scoreboard.


🟢 HOW IT WORKS

1. Zones
A bullish gap forms when a candle's low stays above the high from two candles earlier (bearish: the mirror image). The gap must be at least 0.15 × ATR(14) tall and, by default, the middle candle must close in the move's direction. The zone is created only when the third candle closes. Gaps from one move that overlap or sit within 0.25 ATR of an untouched zone formed in the last 3 bars are merged into one zone (the merged zone keeps the highest grade).

2. Order block, grade and 4H zones
The script looks back up to 5 candles before the move for the last opposite-colour candle. If found, the zone becomes "FVG + OB" (the order block is drawn as a dashed box) and its break level moves to the far side of the order block. Grade: ⭐ for the gap, ⭐ when the middle candle's body is at least 1.2 × ATR, ⭐ when its volume is at least 1.3 × its 50-bar average. Gaps from one higher timeframe (default 4H, set in "Higher timeframe") are added as "FVG <HTF>" zones, e.g. "FVG 4H", after that candle has closed. This only works when the higher timeframe is above the chart timeframe; on a 4H or higher chart no HTF zones are added with the default setting.

3. First touch: HELD, BROKEN or no decision
The first touch is the first closed bar that trades into the gap. From that bar, price has 12 candles (12 higher-timeframe candles for HTF zones, counted in chart bars, max 3000):
• a close 1 × ATR (measured at the touch) away from the zone's near edge = HELD (✓)
• a close the same distance back through the near edge, or any close beyond the break level = BROKEN (✗)
• neither = no decision. It counts as a sample but not as held.
Every zone is scored once. The ✓ / ✗ mark is placed on the touch bar once the result is known.

4. Removal and flips
A zone is removed by a close beyond its break level (or, if you choose, a wick beyond it or a trade to its middle), or when it is older than 600 bars (HTF zones live longer by the timeframe ratio, e.g. 8 times on a 30m chart with 4H). A zone waiting for its first-touch result is kept until the result is known. A close beyond the break level flips the gap into an inverse FVG on the other side, and the order block of an FVG + OB zone into a breaker. Only chart-timeframe FVG and FVG + OB zones flip; HTF, inverse and breaker zones are just removed. Flipped zones are scored from the next bar. If more than 100 zones are live at once, the oldest scored zones go first, then the oldest untouched ones (counted in the full statistics rows).

5. Dashboard, labels and banner
• Nearest demand ▲ and nearest supply ▼ with range, type and grade
• Held on 1st touch: FVG · FVG + OB · 4H
• Flipped zones held: Inverse · Breaker
• Held by grade (FVG and FVG + OB only), and on intraday charts Held by session formed. On daily and higher charts this row shows the median fill of zones that held.
Each zone label reads like "▲ FVG + OB ⭐ · 37% filled · result pending · this type held 43% of past 1st touches". Hover a label for the gap, order block, break level, fill and the sample counts. A % appears only after 30 finished first touches. "Show full statistics rows" adds the median fill of zones that held, the sample count and held / broken % per type, the held / broken / no-decision totals, the sample count per grade, the number of live zones, the average bars to the first touch, and how many untouched zones were dropped by the 100-zone limit. The banner at the bottom shows "PRICE INSIDE …" or "NEXT ZONE …" with its distance.


Snapshot

Second example: XAUUSD 1-hour chart, same indicator and default settings (the numbers are different on every timeframe).


🟢 EXAMPLE READINGS (ONE CHART, IN-SAMPLE)

Readings on OANDA:XAUUSD 30m (history loaded on the chart, October 2026, default settings; your numbers will differ with the bars your plan loads):
• Held on 1st touch: FVG 40% · FVG + OB 43% · 4H 40%
• Flipped zones held: Inverse 38% · Breaker 43%
• Held by grade: ⭐ 42% · ⭐⭐ 45% · ⭐⭐⭐ 43%
• Held by session formed: Asia 44% · London 46% · NY 40%

What this means: on this sample the zone types held at similar rates, and higher grades did NOT hold in star order, so a star is a count of conditions present, not a quality or probability ranking. Stacking an order block did not change the result much, partly because the BROKEN line (1 ATR back through the near edge) is usually reached before the order block's far edge. Compare held against broken (full statistics rows), not against 100%: a symmetric rule like this can give similar held and broken shares even on random price data. These numbers are in-sample, from one instrument, describe the past only, are before spread and commission, and are not a performance expectation or a forecast. They change with the symbol, timeframe, settings and the number of bars your plan loads.


🟢 HOW TO USE

1. Read the banner at the bottom: is price inside a zone, or how far away is the next one?
2. Check the dashboard: which zone types held more often than they broke on this chart.
3. Look at the fill meter: "fresh" means the gap has not been touched; a high fill % means price has already used most of it.
4. Watch the first touch: ✓ = held, ✗ = broken. A zone closed through comes back as a purple inverse zone (or an orange breaker).
5. Combine it with your own analysis and risk management.


🟢 HOW TO CHANGE SETTINGS

1. Add the indicator to your chart.
2. Hover the indicator name at the top-left of the chart and click the ⚙ gear icon.
3. Change values in the "Inputs" tab and click OK.

Quick guide:
• More or fewer zones → "Minimum gap size (× ATR)".
• More zones on the chart → raise "Zones shown per side (nearest)" or "Hide zones further than (× ATR)".
• Past zones across the whole chart → "Show past zones on the full chart".
• Another higher timeframe → "Higher timeframe" (or switch off "Add gaps from a higher timeframe").
• Stricter HELD rule → raise "HELD = close this far away from the zone (× ATR)" or lower "Reaction window after the first touch (bars)".
• Only one session's zones → "Only zones formed in".
• Sample counts and held / broken % → "Show full statistics rows".
• Alerts → right-click the chart → Add alert → choose "Eye Imbalance Zones" and the condition.


🟢 SETTINGS

• Imbalance Zones: minimum gap size, middle-candle direction, order block search, order block body only, merge window, zone removed when, inverse zones, breakers, zone expiry.
• Higher Timeframe & Sessions: HTF gaps on/off, higher timeframe, session filter, previous day / week high and low.
• Zone Grade: strong displacement (× ATR), high volume (× 50-bar average).
• First-Touch Reaction: HELD distance (× ATR), reaction window, minimum samples.
• Display: zones shown per side, hide distance, order block part, 50% line, fill meter, finished zones and ✓ / ✗ marks, past zones on the full chart, finished zones kept, extend right, colours, legend.
• Table & Alerts: summary table, full statistics rows, table position, status banner, detailed alerts.


🟢 ALERTS

• New demand zone ▲ / New supply zone ▼
• New FVG + OB zone (also when a merge adds an order block)
• New ⭐⭐⭐ zone (also when a merge makes a zone 3-star)
• New HTF zone
• Zone first touch
• Zone HELD (the first touch was scored HELD)
• Zone retest (after HELD)
• Zone closed through (removed) — a close beyond a zone's break level
• Flipped to inverse zone / breaker
• Detailed alert() messages: new zone with side, type, grade and range; first touch with the zone, its type's past held rate and how many other zones were touched; retest of a held zone; held; closed through. Choose "Any alert() function call" when creating the alert.


🟢 IMPORTANT NOTES & LIMITATIONS

• No repaint: zones, touches, HELD / BROKEN and alerts are decided on closed bars only, and HTF zones appear after the higher-timeframe candle has closed. The banner, the nearest-zone rows and the drawings on the last bar follow the live price.
• The statistics need history. A rate shows "–" until 30 first touches of that type, grade or session are finished.
• Settings that change the statistics: minimum gap size, middle-candle direction, order block search and body-only (they decide FVG vs FVG + OB and the break level), merge window, zone removed when, inverse / breaker on or off, zone expiry, higher timeframe on/off and timeframe, session filter, the two grade thresholds (grade rows), HELD distance and reaction window. Display settings do not change them.
• Zones that expire, or are dropped by the 100-zone limit, before price comes back are never scored.
• The same price move can appear both as a chart FVG and as an HTF FVG, and an inverse FVG and a breaker can come from the same break, so these rows are not fully independent.
• Sessions use fixed UTC hours (Asia 22–07, London 07–13, New York 13–22) with no daylight-saving shift, by the session of the zone's middle candle. Grade and session rows cover FVG and FVG + OB only.
• The volume star needs volume data (forex and CFD feeds use tick volume). Without volume data no zone gets this star, so ⭐⭐⭐ cannot appear.
• A touch is any trade into the gap, even 1 tick.
• TradingView allows 500 boxes, lines and labels per script, so the oldest finished zones and marks are removed automatically.
• The script does not place trades.


🟢 DISCLAIMER

This indicator is for educational and analysis purposes only. It is not financial advice. Every percentage describes past behaviour on the chart you are looking at; it is not a probability, a signal or a forecast, and past results do not guarantee future results. Always use your own analysis and risk management.

Haftungsausschluss

Die Informationen und Veröffentlichungen sind nicht als Finanz-, Anlage-, Handels- oder andere Arten von Ratschlägen oder Empfehlungen gedacht, die von TradingView bereitgestellt oder gebilligt werden, und stellen diese nicht dar. Lesen Sie mehr in den Nutzungsbedingungen.