TradingView Technical Indicators & Schematics

Wyckoff indicator rules for TradingView

A Wyckoff indicator can flag volume and pivot conditions, but phase labels remain interpretations. Use this free CSV visualizer to mark your own chart, then review the separate Pine Script example below.

This chart shows closing prices and volume, not candlesticks or automatic phase detection. CSV headers: date, open, high, low, close; volume is optional. Use unquoted cells, ISO dates or timestamps in oldest-first order, up to 10,000 rows and 5 MB. Sample data is synthetic and is not a Wyckoff pattern.

Upload a CSV file

Columns: date, open, high, low, close, volume

Or click "Load sample data" to try the tool

What a Wyckoff indicator can measure

Price, volume, candle range and a close relative to a prior level are observable inputs. Accumulation, distribution and the identity or intent of market participants are interpretations. A high-volume decline can occur during continued selling as well as near a reversal.

The Wyckoff Analytics method reference describes accumulation and distribution schematics and the A through E phases. Its accumulation examples include a version without a Spring. Do not require every chart to fit one drawing.

ObservationRule you can codeWhat remains unresolved
Climax candidateDown candle, high relative volume, wide range, close above the bottom quarter.Whether the prior downtrend is ending.
Spring candidateLow below a stored pivot low, close above it, below-baseline volume.Whether that pivot is valid range support or the move will hold.
Upthrust candidateHigh above selected resistance and close back below it.Whether distribution is underway. This example does not implement it.
Phase A through EA state machine needs explicit transition, timeout and invalidation rules.Which range and timeframe provide useful context.

Pine Script v6: volume and pivot observations

This educational indicator marks two candidate conditions. It does not label complete phases, place orders or provide a tested trading edge. Copy it into TradingView's Pine Editor, save it and add it to a chart that supplies volume.

wyckoff_vsa_detector.pine (Pine Script v6)
//@version=6
indicator("Wyckoff-style volume and pivot observations [Pineify]", overlay = true)

leftBars = input.int(5, "Pivot left bars", minval = 1, maxval = 100)
rightBars = input.int(5, "Pivot right bars", minval = 1, maxval = 100)
volLength = input.int(20, "Volume baseline length", minval = 1)
volMultiple = input.float(2.0, "High volume multiple", minval = 1.0)
spreadMultiple = input.float(1.5, "Spread / ATR threshold", minval = 0.1)

// Baselines use completed bars, excluding the signal bar.
avgVolume = ta.sma(volume, volLength)[1]
priorAtr = ta.atr(14)[1]
spread = high - low
hasVolume = not na(volume) and not na(avgVolume) and avgVolume > 0
pivotLow = ta.pivotlow(low, leftBars, rightBars)
pivotHigh = ta.pivothigh(high, leftBars, rightBars)
var float support = na
var float resistance = na

// Evaluate against the level known BEFORE this bar's pivot update.
climaxCandidate = barstate.isconfirmed and hasVolume and close < open and volume > avgVolume * volMultiple and spread > priorAtr * spreadMultiple and close > low + spread * 0.25
springCandidate = barstate.isconfirmed and hasVolume and not na(support) and low < support and close > support and volume < avgVolume

// Levels appear on the confirmation bar, with no negative offset.
if barstate.isconfirmed
    if not na(pivotLow)
        support := pivotLow
    if not na(pivotHigh)
        resistance := pivotHigh

plot(support, "Latest confirmed pivot low", color = color.green, style = plot.style_stepline)
plot(resistance, "Latest confirmed pivot high", color = color.red, style = plot.style_stepline)
plotshape(climaxCandidate, title = "Climax candidate", text = "SC?", style = shape.labelup, location = location.belowbar, color = color.purple, textcolor = color.white, size = size.tiny)
plotshape(springCandidate, title = "Sweep and recovery candidate", text = "Spring?", style = shape.labelup, location = location.belowbar, color = color.teal, textcolor = color.white, size = size.tiny)
alertcondition(climaxCandidate, "Climax candidate", "High-volume wide down-bar on {{ticker}}. Review context.")
alertcondition(springCandidate, "Sweep and recovery candidate", "Pivot-low sweep recovered on below-baseline volume on {{ticker}}. Review context.")

Default thresholds use twice the previous 20-bar average volume and a candle range above 1.5 times the previous 14-period ATR. They are illustrative choices, not optimized parameters. The low-volume sweep rule compares the current bar with the pivot level stored before that bar's update.

Pivot lines update after five right-side bars by default. Signals wait for bar close and markers are drawn on the detection bar. The two pivot levels can come from different structures; they do not establish a coherent trading range automatically. Missing or zero-baseline volume suppresses signals.

TradingView's repainting documentation explains why open-bar values and backdated pivot markers need care. Waiting for confirmation adds delay; it does not prove a market interpretation.

To receive notifications, create an alert in TradingView, select one of this indicator's conditions and use Once Per Bar Close. Running alerts are snapshots: recreate them after changing the script, symbol, timeframe or inputs. See TradingView's alert documentation.

Where these rules can misclassify a chart

  • A wide down candle with high volume can pass the climax filter while a downtrend continues. The rule has no trend-reversal confirmation.
  • A bar can reclaim a pivot low and pass the Spring filter, then break below it on the next bar. There is no requirement for a follow-up test or breakout.
  • A pivot low in a trending market can trigger a sweep label even when no trading range exists. Choosing a different pivot length changes the reference level.
  • The example uses close below open for a down candle. A gap-down candle that closes above its open is excluded even if its close is below the previous close.
  • A zero-volume bar can pass the low-volume condition when the baseline is positive. Inspect the feed before interpreting that result as reduced selling.

Use the CSV chart to record a hypothesis

  1. Load your file or the synthetic sample. The graph plots close and volume; inspect candlestick spreads separately in TradingView.
  2. Add horizontal levels and a rectangle for the range you are evaluating. Vertical lines mark proposed phase boundaries; labels use a date and price.
  3. Write what would invalidate each label before inspecting later bars. Remove annotations when evidence changes.
  4. Review false positives across different markets and timeframes. This page provides no backtest, win rate or live-trading evidence.

Annotations remain in memory until you load another file or reload the page. This tool does not export a chart, synchronize with TradingView or run the Pine code in the browser.

Frequently asked questions

Can a Wyckoff indicator identify accumulation automatically?

A script can classify bars using explicit price and volume rules. Calling a whole range accumulation requires additional context and remains an interpretation. A signal does not identify who traded or establish a win rate.

Does every accumulation range have a Spring?

No. Wyckoff accumulation schematics include examples without a Spring. This example only marks a low-volume sweep and recovery of a stored pivot low; it does not recognize every schematic.

Does the Pine example repaint?

Signals wait for the current bar to close. A pivot level becomes available only after the selected number of right-side bars closes, and the example does not backdate markers. Data-feed revisions and changes in loaded history can still change results.

What CSV format does the visualizer accept?

Use date, open, high, low, close headers and optional volume. Commas, semicolons and tabs are supported, with unquoted cells. Use unique ISO dates or timestamps in oldest-first order. Prices must be finite and consistent with the bar high and low; volume must be nonnegative. The limit is 10,000 rows and 5 MB.

Does this page save my chart or run TradingView alerts?

The CSV parser and chart run in this browser. This tool does not upload the CSV or save annotations after a reload. It does not connect to TradingView; copy the separate Pine example into TradingView and create an alert there.

Educational chart analysis only, not investment advice. Signals can fail and trading can lose money. Browse the TradingView indicators guide for related indicator mechanics.

Build an indicator from rules you can inspect

Describe your volume baseline, pivot confirmation and invalidation rules to the Pine Script AI Coding Agent. Review the generated source and test its behavior on TradingView before using alerts.