What is Wyckoff?
Wyckoff builds everything on one container, the trading range. Once price has gone nowhere for long enough, the range's support and resistance freeze into levels, and the range lives until price closes decisively outside them. Broken ranges stay on the chart, faded, because Wyckoff reads the range price just left.
It carries four tools in one script, each with its own toggle. Trading Range is on by default. Phases letters A to E on the range, Spring / Upthrust marks every run of a wall that closes back inside, and SOS / LPS marks the strength after the test and each pullback that holds. Those three are off until you turn them on.
This is a closed-source premium script. It runs on Altrady's servers, so only its output reaches your chart and its code is not published.
Components
Wyckoff combines 4 tools in one script. Each one has its own switch in the settings.
- Trading Range. The range whose support and resistance freeze once established, and which lives until price closes outside them. On by default.
- Accumulation / Distribution Phases. Wyckoff's phases A to E on the range, named accumulation or distribution by the spring or upthrust that tests it.
- Spring / Upthrust. Every dip under support, or poke above resistance, that closes back inside the range.
- SOS / LPS. SOS or SOW, the close through the last swing after the test, and each LPS or LPSY pullback that holds the level it took.
How to use Wyckoff
- Spring and upthrust. A dip under support that closes back inside is a spring, read as bullish. A poke above resistance that closes back inside is an upthrust, read as bearish.
- Phase C names the structure. The first spring or upthrust after the walls have been tested enough is phase C. A spring names the range as accumulation and an upthrust as distribution.
- Sign of strength. After a spring, a close through the last swing high is an SOS. After an upthrust, a close through the last swing low is a sign of weakness, SOW.
- Last point of support. Pullbacks after the SOS that hold the level it took are numbered LPS points, LPSY after a SOW. The last one before the trend leaves is the one the schematic means.
Settings
Components
| Setting | Default | Range | What it changes |
|---|---|---|---|
| Show Trading Range | On | The range whose support and resistance freeze once established, and which lives until price closes outside them. Every other component is measured against it. | |
| Show Phases | Off | Accumulation / Distribution Phases: Wyckoff's A to E on the range, named by the spring or upthrust that tests it. | |
| Show Spring / Upthrust | Off | Every dip under support, or poke above resistance, that closes back inside the range. | |
| Show SOS / LPS | Off | SOS / SOW and LPS / LPSY: the close through the last swing after the test, and each pullback that holds the level it took. |
Range
| Setting | Default | Range | What it changes |
|---|---|---|---|
| Timeframe | Chart | Chart, 15m, 30m, 1h, 4h, 1D | Read the range and everything measured against it from a higher timeframe while trading a lower one. The chart's own period must divide it exactly, and a Wyckoff range is usually read above the entry timeframe. |
| Efficiency Length | 20 | 2 to 200 | The window the efficiency ratio is measured over. Shared with Range / Chop Detection, so a range here is a range there. |
| Max Efficiency | 0.15 | 0 to 1 | Below this the window counts as going nowhere. See Range / Chop Detection's header for the measured trade-off behind the default. |
| Min Bars | 10 | 2 to 500 | How long price must go nowhere before the walls go up. This is phase A's whole test. A container built on four bars is not a container. |
| Break On | Close | Close, Wick | What ends the range, and so what phase E is: a close beyond a boundary, or a wick through it. Close by default (§4.3). On Wick a wick through a wall ends the range on that same bar, so nearly every spring and upthrust becomes a break instead: Spring / Upthrust and Phases mark only a rare few, and SOS / LPS usually marks nothing. |
Test
| Setting | Default | Range | What it changes |
|---|---|---|---|
| Min Tests | 2 | 0 to 20 | How many times a boundary must be tested before a run of one counts as phase C, the test that also arms SOS / LPS. Zero credits the first run, which marks more structures and asks less of phase B. |
| Test Tolerance (ATR) | 0.25 | 0 to 5 | How close to a boundary a bar must come to count as testing it, in ATR of the range's own timeframe. At zero only an exact touch counts, so phase B almost never matures. |
Display
| Setting | Default | Range | What it changes |
|---|---|---|---|
| Max Ranges | 5 | 1 to 50 | How many broken ranges stay on the chart behind the live one. Wyckoff reads the range price just left, so the default is not 1. |
| Show Box | On | The range's extent. | |
| Show Boundaries | On | Support and resistance as their own lines. These are the levels the rest of Wyckoff is measured against, so they are drawn apart from the box. | |
| Show Border | Off | The range box's border. Off by default: the boundaries are already drawn as lines, and a border repeats them. | |
| Boundary Style | Solid | Solid, Dashed, Dotted | |
| Show Labels | On | The range's caption, and A to E on the phases. | |
| Label Size | Small | Tiny, Small, Normal, Large, Huge | |
| Line Style | Dashed | Solid, Dashed, Dotted | The swept boundary of a spring or upthrust, and the level an SOS took. |
| Show State Pane | Off | A sub-pane per component that is on, giving its internal state. What the automated checks read. |
Colours
| Setting | Default | Range | What it changes |
|---|---|---|---|
| Live Range | #2962ff | The range in force. | |
| Broken Range | #787b86 | A range price has left. | |
| Support | #089981 | The lower boundary. | |
| Resistance | #f23645 | The upper boundary. | |
| Label | #b0b3b8 | The range's caption and the phase letters. |
Phases
| Setting | Default | Range | What it changes |
|---|---|---|---|
| Phases Max Structures | 10 | 1 to 100 | The oldest structure's boxes and labels are removed past this. |
| Phases Show Phase Boxes | On | The phase boxes. With this off the component is labels, alerts and the state pane only. | |
| Phases Show Border | On | ||
| Phases Formation | #787b86 | Phases A and B, at two densities. Neutral on purpose: nothing is known about direction until C. | |
| Phases Accumulation | #089981 | A structure whose test ran SUPPORT and reclaimed it: a spring, read as accumulation. | |
| Phases Distribution | #f23645 | A structure whose test ran RESISTANCE and was rejected: an upthrust, read as distribution. |
Spring / Upthrust
| Setting | Default | Range | What it changes |
|---|---|---|---|
| Spring Max Events | 20 | 1 to 200 | The oldest marker is removed past this. |
| Spring Show Marker | On | The arrow at the wick's extreme, pointing the way the event sets up: a spring is bullish. | |
| Spring Show Swept Boundary | On | The boundary that was run, drawn from the range's start to the bar that sprang it. | |
| Spring | #089981 | Support run and reclaimed: a bullish event. | |
| Upthrust | #f23645 | Resistance run and rejected: a bearish event. |
SOS / LPS
| Setting | Default | Range | What it changes |
|---|---|---|---|
| SOS Swing Length | 5 | 1 or more | Bars either side of a pivot. It is also the lag: a pullback low is confirmed this many bars after it happened, so an LPS label appears late and at the price it happened. |
| SOS Significance (ATR x) | 0.5 | 0 to 10 | A swing is ignored unless the leg into it covered this much ATR. Deliberately lower than the 1.5 the rest of the suite uses: the swings inside a low-efficiency range are small by definition, and 1.5 rejects nearly all of them, leaving the SOS with no level to take. |
| SOS Watch For (bars) | 50 | 1 to 500 | How long after the SOS pullbacks keep counting, in bars of the structure's own timeframe. A back-up a hundred bars later is a different move. |
| SOS Max Points | 5 | 1 to 20 | How many pullbacks are labelled per structure. They are numbered in order; the last one before the trend leaves is the LPS the schematic means. |
| SOS Max Structures | 10 | 1 to 100 | The oldest structure's labels are removed past this. Only structures that actually showed strength count: a test that never produced an SOS draws nothing and takes no slot. |
| SOS Show SOS / SOW | On | The strength label at the bar that took the level. | |
| SOS Show LPS / LPSY | On | The numbered pullback labels. | |
| SOS Show Taken Level | On | The swing level the SOS closed through, drawn from the swing to the bar that took it. | |
| SOS Strength | #089981 | SOS and its points: a structure the spring named. | |
| SOS Weakness | #f23645 | SOW and its points: a structure the upthrust named. |
Alerts: tr_established, tr_broken, wyckoff_test, wyckoff_break, spring, upthrust, sos, sow, lps, lpsy.
How it works
A range is established when the market has been inefficient, covering ground without getting anywhere, for at least Min Bars bars, measured the same way as in Range / Chop Detection. At that point its high and low freeze. The box keeps growing to the right while the range lives, and it ends on a close beyond a wall.
Phase A is the range itself. Phase B is the walls being tested, touched within a tolerance of the average true range, Min Tests times. Phase C is the first spring or upthrust after that, and it names the structure. Phase D runs from C to the break, and E is the break. A and B are neutral, and E is labelled on the side price actually left, so a failed structure shows as one.
After phase C, the SOS / LPS layer watches for a close through the last swing in the named direction, then numbers each pullback that holds that level, for up to SOS Watch For bars. Alerts follow each event, from the range being established and broken to springs, tests, signs of strength and points of support.
Limitations
- Ranges are late by design. A range is only established after Min Bars of going nowhere. The walls are drawn from closed bars, so they do not repaint, but they appear after the range has started.
- No volume in the phases. The phases are judged from price only. There are no PS, SC, AR or ST labels. Effort vs Result covers the volume side of Wyckoff.
- Wick breaks change everything. With Break On set to Wick, a wick through a wall ends the range, so nearly every spring or upthrust becomes a break instead, and SOS / LPS usually marks nothing.
- The last LPS is known afterwards. Pullbacks are numbered as they happen. Which one was the last point of support is only clear once the trend has left.
- LPS labels are late. A pullback low needs SOS Swing Length bars to be confirmed, so its label appears late, at the price where it happened.
Get Wyckoff
Premium scripts are a one-time purchase in the Altrady marketplace and need a paid Altrady plan to run.
- Wyckoff $12 This script on its own.
- Structure & Wyckoff bundle $29 7 premium scripts, Wyckoff included.
- Altrady Complete Suite $109 All 36 premium scripts.
Frequently asked questions
The trading range, its frozen support and resistance as lines, and earlier broken ranges faded behind it. Phases, springs and upthrusts, and SOS / LPS are separate toggles.
A is the range forming, B is the walls being tested, C is the first spring or upthrust after enough tests, D is the run from C to the break, and E is the break. The spring or upthrust at C decides whether the structure is accumulation or distribution.
The walls are built from closed bars and freeze once the range is established, so they do not move. The live range's box extends to the right as time passes, and the phases of a live range are only completed when it breaks.
Ten: tr_established and tr_broken for the range; wyckoff_test for phase C and wyckoff_break for the break; spring and upthrust; sos and sow; lps and lpsy. A component that is switched off fires no alerts.
Yes. Wyckoff is a closed-source premium script. It runs on Altrady's servers, so only its output reaches your chart and the code is never shared. You buy it once in the Altrady marketplace, on its own, in the Structure & Wyckoff bundle or in the Altrady Complete Suite, and it needs a paid Altrady plan to run. It is also included with your first annual Premium subscription.
Use the Get it in Altrady button on this page to open its listing in the Altrady marketplace. Once it is in your account, open the indicator picker on any chart in Altrady Charts and add Wyckoff like any other indicator. Turn on the phases, springs and SOS / LPS in its settings panel.