Level Scope › Market structure
Spring and upthrust
Price penetrated the boundary of a trading range and closed back inside within a few bars. The bullish case is a spring, the bearish an upthrust.
What it looks like on a chart
A horizontal line at the range boundary that was penetrated, drawn forward from the recovery bar.
| Timeframe | Bars of history it reads | Settings | Events, last 30 days |
|---|---|---|---|
| M15 | 120 | lookback 20 bars before the break, recovery limit 3, range wider than 8 ATR rejected | 5270 |
| M30 | 120 | lookback 20 bars before the break, recovery limit 3, range wider than 8 ATR rejected | 2599 |
| H1 | 120 | lookback 20 bars before the break, recovery limit 3, range wider than 8 ATR rejected | 1263 |
| H4 | 120 | lookback 20 bars before the break, recovery limit 3, range wider than 8 ATR rejected | 320 |
| D1 | 120 | lookback 20 bars before the break, recovery limit 3, range wider than 8 ATR rejected | 48 |
What we measured
Nothing of our own attached.
What it does not claim
The trading range is built from the bars strictly before the break — a window containing the break bar cannot be broken by it, since the rolling minimum would already be that bar's own low. The width filter reads volatility at the bar before the break too, so both the range and its admissibility are settled before the break prints. The lookback is the free parameter and the source does not fix it; ours is named on every event.
Where the definition comes from
FibAlgo's Wyckoff Upthrust; the lookback is the free parameter and the source does not fix it