# Spring

Spring is an indicator on [Vela](https://vela.luxalgo.com/chart), our next-generation charting platform, written in Pine Script®.

Detects Wyckoff springs against ranges the script establishes itself: support needs at least 20 bars of ranging and two tested swing lows before an undercut counts. A reclaim within 5 bars prints a graded Spring or Shakeout label scored on penetration depth, probe volume and reclaim speed, then a quiet-volume test confirms it, with the spring low drawn as the invalidation line for Wyckoff-minded traders.

- Indicator in the LuxAlgo Library, by LuxAlgo, published Jun 17, 2026.
- Access: free.
- Concepts: [Spring](https://www.luxalgo.com/library/concept/spring/) (primary)
- Open on Vela: https://vela.luxalgo.com/chart?pineScriptCodeId=vuhg9xx3lmi4qoajwv0v0sa8
- Page: https://www.luxalgo.com/library/indicator/spring/

**Spring** automates the phase C test at the base of an accumulation range, the definitive clean build of the Wyckoff [spring](https://www.luxalgo.com/library/concept/spring/) with its grading rules stated up front. The script first constructs the range: support anchored by swing lows, held for a minimum duration and probed a minimum number of times, so stops have time to build beneath it. Only then can an undercut qualify: a break closing back above the level inside the allowed window prints the event; a longer stay below is a breakdown.

## How to Trade the Spring?

- **Spring · A/B/C label**: printed at the probe low with a grade: one point each for shallow penetration, quiet probe volume and a fast reclaim.
- **Shakeout label**: a deep undercut on heavy volume, the more violent variant of the same trap.
- **Test label**: the confirmation: a later swing low holding at or above the spring low, near the lows, on volume under the set fraction of the probe's.
- **Failed label**: a close back under the spring low, or acceptance below the range, voids the read.

The dashed spring-low line is where the read stops being defensible, the stop's natural home.

## Spring Settings

- **Swing Length** (default 5): pivot confirmation for the lows that build and test support.
- **Minimum Range Duration** (default 20) and **Minimum Support Tests** (default 2): how long and how often support must hold to count as established.
- **Support Zone Width** (default 0.5) with **ATR Length** (default 14): the ATR-normalized tolerance grouping lows into one level.
- **Maximum Bars Below Support** (default 5): the reclaim deadline separating springs from breakdowns.
- **Deep Penetration Threshold** (default 1.0), **Heavy Probe Volume** (default 1.5), **Fast Reclaim Threshold** (default 2) and **Volume Average Length** (default 20): the grading dials and their volume baseline.
- **Test Window** (default 30) and **Maximum Test Volume** (default 0.75): how long a confirming test may take and how quiet it must stay.

## Frequently Asked Questions

### What is the bearish counterpart?

The [Upthrust](https://www.luxalgo.com/library/indicator/upthrust/), the identical trap run at the top of a distribution range, where a push above resistance is refused and settles back inside. The two builds bracket a range from opposite sides.

### When does the label say Shakeout instead of Spring?

When the undercut is both deep (past the Deep Penetration Threshold in ATR terms) and heavy, probe volume above the Heavy Probe Volume multiple of its average. Shallow, quiet, quickly reclaimed probes grade A.

### Why demand an established range first?

Because the event only carries meaning where sellers have been absorbed and stops have collected under well-tested lows. An undercut of a level nobody defended is simply a lower low.

## Related indicators

- [Wyckoff Accumulation Schematic](https://www.luxalgo.com/library/indicator/wyckoff-accumulation-schematic/) (Wyckoff): markdown at https://www.luxalgo.com/library/indicator/wyckoff-accumulation-schematic.md
- [Absorption](https://www.luxalgo.com/library/indicator/absorption/) (Wyckoff): markdown at https://www.luxalgo.com/library/indicator/absorption.md
- [Cause & Effect](https://www.luxalgo.com/library/indicator/cause-and-effect/) (Wyckoff): markdown at https://www.luxalgo.com/library/indicator/cause-and-effect.md
- [Trading-range Position](https://www.luxalgo.com/library/indicator/trading-range-position/) (Wyckoff): markdown at https://www.luxalgo.com/library/indicator/trading-range-position.md
- [Wyckoff Method](https://www.luxalgo.com/library/indicator/wyckoff-method/) (Wyckoff): markdown at https://www.luxalgo.com/library/indicator/wyckoff-method.md
- [Upthrust After Distribution](https://www.luxalgo.com/library/indicator/upthrust-after-distribution/) (Wyckoff): markdown at https://www.luxalgo.com/library/indicator/upthrust-after-distribution.md
- [Wyckoff Wave & Volume Studies](https://www.luxalgo.com/library/indicator/wyckoff-wave-and-volume-studies/) (Wyckoff): markdown at https://www.luxalgo.com/library/indicator/wyckoff-wave-and-volume-studies.md
- [Wyckoff Distribution Schematic](https://www.luxalgo.com/library/indicator/wyckoff-distribution-schematic/) (Wyckoff): markdown at https://www.luxalgo.com/library/indicator/wyckoff-distribution-schematic.md

---

Source: https://www.luxalgo.com/library/indicator/spring/ (LuxAlgo Library). Free to use with attribution: https://www.luxalgo.com/library/license/
