Two swing highs that stall at the same price are not a coincidence — they are a shelf where stop orders and breakout orders pile up. The same goes for two swing lows. Edo Equal Highs/Lows finds those matched levels automatically, keeps them on the chart while they are intact, and tells you the moment price reaches through and takes what was resting there.
What counts as equal: the ATR tolerance
Two swings are almost never equal to the tick, so the indicator needs a band rather than a single price. The Equal Tolerance input sets that band as a fraction of ATR — 0.10 by default — and two swings are treated as equal when their difference falls inside it. Tying the band to ATR is what keeps the same setting usable everywhere: a tolerance that is sensible on a slow index would be absurdly tight on a fast-moving crypto pair, and the ATR does that scaling for you. Lower the value and only near-perfect matches qualify; raise it and approximate double tops and bottoms come in too.
EQH above, EQL below
When two consecutive swing highs match, the indicator draws an Equal Highs level and labels it EQH: buy-side liquidity resting above price, the stops of anyone short into the level plus the breakout orders waiting on top of it. When two swing lows match, it draws an Equal Lows level labelled EQL, the mirror image below price. The level is drawn from the earlier of the two matching pivots and extends to the right, so it stays a live reference instead of a historical mark.
Active and Taken
Each level lives in one of two states, re-evaluated on every bar; on the live candle a change to Taken is provisional until it closes. Active means it is intact and still holding its liquidity: a solid coloured line extending right, red for EQH and teal for EQL by default. Taken means price has closed through it and swept the pool: the line turns dashed and faded and the label gains a mark. An EQH is taken on a close above it, an EQL on a close below — a wick that pierces and closes back on the same side does not count, which is exactly the discipline that keeps the read honest.
Swing profiles and how many levels stay on the chart
The pivots being compared come from a Swing Profile: Scalper (5 bars each side) for short-term levels on low timeframes, Swing (10 bars, the default) for the balanced 4H and daily read, and Long Term (21 bars) for the major levels on weekly and above. Match the profile to the timeframe you actually trade, or the chart fills with levels that never mattered. To keep it readable, only the most recent levels are kept per side, up to Max EQ Levels — ten by default.
The panel: what is nearest, above and below
The information panel condenses the whole read into a few rows: how many EQH and EQL levels are still active, and the nearest unswept level on each side with its exact price. Those two numbers are the practical output of the indicator — the closest pool of liquidity above the current price and the closest one below, which is to say the two places price has an obvious reason to reach for next. Four alerts cover the rest: one for each side when a level forms, one for each side when it is taken.