SOMM: The OrderBlock Engine
The Structural OrderBlock Mitigation Mechanism detects higher-timeframe OrderBlocks, then dissects their internal lower-timeframe gap structure for surgical, percentage-precise mitigation tracking.
The idea
Classic OrderBlock indicators draw a box and call it done. The problem: “price touched the box” is a hopelessly blunt definition of a retest. Some touches barely graze the zone; others consume it entirely. SOMM's answer is multi-timeframe dissection: detect the block on a higher timeframe where institutional zones actually matter, then map every lower-timeframe Fair Value Gap inside the block and track each one independently.
The result is a single number per block, its mitigation percentage, that tells you exactly how much of the zone's unfinished business has been settled, updating live as price works through the internal structure.
The block lifecycle
Phase 1: Detection
An adaptive HTF selector chooses the detection timeframe (by default your chart timeframe × 3, snapped to a standard TradingView ladder, or a manual HTF of your choice). On that timeframe, the engine watches for displacement candles forming classic 3-bar FVGs, then applies strict qualification filters:
- Consecutive-gap requirement: the displacement must produce genuine gap structure, not a lone stray candle.
- Minimum width: blocks narrower than a configurable multiple of HTF ATR are discarded as noise.
- Proximity filter: blocks that land on top of an existing one are handled by the overlap policy instead of stacking redundantly.
- Internal-FVG requirement (optional, on by default): blocks with no internal LTF gaps are skipped entirely, since there is nothing measurable to mitigate.
Phase 2: Mitigation
Once a block is live, the engine maps every LTF Fair Value Gap within its price range. As price revisits the zone:
- 1Each internal gap is tracked independently
A gap is progressively consumed as price trades through its band; the tapped portion is re-colored so you can see exactly which shelves of the block have been hit.
- 2The aggregate percentage updates in real time
The block's label shows the combined fill across all internal gaps: 40% mitigated means price has genuinely consumed 40% of the measurable inefficiency inside the zone.
- 3Full mitigation requires proof
A block is only marked mitigated when every internal gap is filled and price confirms a close outside the zone. No premature retirement on a wick.
Phase 3: Failure
Every block carries a structural break level: the maximum tolerable distance beyond the zone. If price breaches it (by close or wick, configurable), the block is retired as broken: the orderflow that created it has been decisively overpowered. This is valuable information in itself; the optional Block Failure signal turns it into a chart label and alert event.
What you see on the chart
- Active blocks: colored boxes (master bull/bear colors) with accent edge lines, extending a configurable number of bars forward.
- Block labels: each active block displays its formation timeframe, live mitigation percentage, and creation volume.
- Internal gaps: the LTF FVGs inside each block, with the tapped portion filled in a muted color (and optionally extended to the block's end).
- History boxes: recently mitigated (and optionally broken / superseded) blocks remain as muted boxes so you can study how zones resolved.
A fresh block at 0-30% is largely untapped demand or supply: the strongest version of the zone. A block at 85%+ is nearly exhausted: most of its inefficiency has been consumed, which is exactly the state the Block Exhaustion signalarms on. Deep fill isn't weakness; it's the setup maturing.
Overlap & history
When a newly detected block overlaps an active one, the Overlap Mode setting decides the outcome:
- Skip (default): keep the existing block, ignore the new one.
- Supersede: replace the old block with the fresh one.
- Overlap: allow both to coexist.
Historical blocks get granular control too: how many recent terminal blocks stay visible, which terminal types are included (mitigated / broken / superseded), and whether each type's box ends at the terminal event bar or keeps the full formation span.
Structural Shift levels
Alongside blocks, SOMM tracks Structural Shift levels: horizontal lines derived from qualified HTF displacement-exit sequences (consecutive HTF gap structure plus a validating confirmation bar). Think of them as the price where market flow last changed character.
- Shift lines persist until broken. While intact, they mark territory the controlling side should defend.
- A break (confirmed by consecutive closes or a single wick, configurable) signals a potential reversal in market flow, and fires the Shift Broken alert event.
- An optional LTF FVG anchor snaps each shift's origin to the nearest same-direction lower-timeframe gap, aligning the level with the precise reversal candle.
Key settings
| Setting | Default | What it does |
|---|---|---|
| Auto HTF / × | On, ×3 | Chart timeframe × multiplier selects the detection HTF (e.g. 5m ×12 = 1H). Disable to pin a manual HTF. |
| Require Internal FVGs | On | Skips OrderBlocks that contain no internal LTF gaps; nothing measurable to mitigate. |
| Overlap Mode | Skip | Skip / Supersede / Overlap policy when a new block intersects an active one. |
| Max Active OBs | 3 | Maximum simultaneously displayed blocks. Older blocks beyond the limit are hidden (not deleted) and restored when slots free up. |
| Min Width × ATR | 0.6 | Minimum block width as a multiple of HTF ATR(14). 0 disables the filter. |
| Min Separation | 0.3 | Minimum edge distance between blocks in chart-ATR multiples. 0 disables. |
| OB Lookback | 2000 | Maximum age in chart bars before a block is automatically retired. |
| HTF History Depth | 1000 | How many HTF bars the security request loads. Higher = deeper block/shift history, slower initial load. |
Display options (extension, history types, endpoints) and shift-specific inputs are covered in the Settings Reference.