The Zig Zag indicator is a charting filter that draws straight lines between significant swing highs and swing lows and ignores smaller price fluctuations. You set a minimum percent change (commonly 3–10% depending on timeframe); the indicator only plots a new swing when price reverses by at least that amount. The result is a clean series of trend segments that help highlight the dominant moves, potential support/resistance zones, and reversal patterns (double bottoms, head & shoulders, etc.). (Source: Investopedia)
Key takeaways
– Zig Zag reduces market “noise” by plotting only moves that exceed a user-defined percent change.
– It does not predict price; it is a retrospective tool used to identify trend swings and to help structure wave counts (e.g., Elliott Wave).
– Because it waits for a threshold reversal, the indicator is inherently lagging and can repaint (remove/extend lines) as new extremes form.
– Common uses: identifying swings, confirming trend direction, locating support/resistance between swing points, and helping with wave analysis.
How the Zig Zag indicator works (mechanics)
– Parameter: % change (X) — the minimum percentage move required for the indicator to mark a new swing point.
– Price series choice: you can use High/Low series or Closing prices.
– Behavior: starting from a swing extreme, the indicator looks for a price move of at least X% in the opposite direction. When detected, it marks the new extreme and draws a straight line joining the two extremes.
– Repainting: when price changes direction but does not meet X%, the incomplete line is temporary; if price reverses again before reaching X%, the line is removed and the original trend line is extended.
Zig Zag formula (notation used by many platforms)
ZigZag(HL, %change = X, retrace = FALSE, LastExtreme = TRUE)
– HL = High-Low series or Closing price series
– %change = minimum price movement (percent) to mark a new extreme
– retrace = whether to treat moves as retracements of the previous move or as absolute peak-to-trough changes
– LastExtreme = how to treat identical highs/lows across multiple bars (first or last observation)
Step‑by‑step: how to calculate the Zig Zag indicator
1. Choose the price series (High/Low or Close) and a % change threshold X.
2. Identify the starting extreme (initial high or low). Many implementations start with the first bar’s close or the first high/low.
3. If currently in an “up” segment, track the highest price; if in a “down” segment, track the lowest price.
4. For each new bar:
a. Calculate percent change from the last plotted extreme to the current high (if looking for a new high) or low (if looking for a new low).
b. If the change ≥ X%, mark the new extreme and draw a straight line from the previous extreme to the new one.
c. If the price moves in the opposite direction but does not reach X%, do not mark a new swing; that temporary segment can be removed if the move fails to reach the threshold and price returns.
5. Continue until end of data.
Numeric example
– Threshold X = 5%.
– Price series (close): Day1 100, Day2 104, Day3 107, Day4 103, Day5 98, Day6 102.
• Starting extreme = 100.
• Day3 107: (107−100)/100 = +7% ≥ 5% → mark swing high at 107 and draw line from 100 → 107.
• From 107 to Day5 98: (98−107)/107 = −8.4% ≤ −5% → mark swing low at 98 and draw 107 → 98.
• Day6 102: (102−98)/98 = +4.08% = X: mark new high (lastExtreme = p; direction = “down”)
else if p = X: mark new low (lastExtreme = p; direction = “up”)
else if p > lastExtreme: lastExtreme = p (update local high if needed)
– (Different chart platforms have variants; consult platform docs for exact repaint/retrace behavior.)
Practical trading steps and rules (how traders typically use Zig Zag)
1. Select a suitable % threshold:
• Intraday (1–3% or smaller for very liquid assets), short-term swing (3–6%), long-term/monthly trends (5–15%).
• Backtest across your asset and timeframe to find an effective value.
2. Plot Zig Zag on your chart (common platforms have it built-in).
3. Use Zig Zag to identify the primary swing highs and lows:
• Define trend: consecutive higher highs and higher lows = uptrend; lower lows and lower highs = downtrend.
4. Combine with momentum/confirmation indicators:
• RSI or Stochastic: confirm overbought/oversold at the swing extreme or divergence with the Zig Zag high/low.
• Moving averages: confirm trend direction shown by Zig Zag.
5. Identify chart patterns between Zig Zag points:
• Head & shoulders, double tops/bottoms, trendline breaks, and Fibonacci retracements between swing extremes.
6. Entry and exit rules (examples):
• Trend-following entry: enter long after a retracement ends when price confirms new Zig Zag up-segment and momentum confirms (RSI rising, bullish candlestick).
• Exit: hold until Zig Zag draws a new opposite-direction swing (i.e., indicator confirms reversal), or place stops below the most recent Zig Zag swing low.
• Short-term scalps: use smaller % X and tighter confirmation; beware of false signals in choppy markets.
7. Position sizing and risk:
• Set stop-loss beyond the last confirmed swing extreme. Adjust risk per trade to account for larger stops when using high X values.
Combining Zig Zag with Elliott Wave and Fibonacci
– Zig Zag is often used to identify the major swings that define wave counts in Elliott Wave analysis. Because Zig Zag simplifies the price path, it helps spot wave 1–5 and A–B–C structures.
– Use Fibonacci retracements between marked Zig Zag extremes to identify likely retracement or extension targets.
Parameter selection and optimization tips
– Choose percent X based on volatility and timeframe; more volatile assets generally need larger X to avoid excessive swings.
– Do not blindly use default values. Optimize X via backtesting on historical data for the instrument and timeframe you trade.
– Consider using High-Low series rather than close for a clearer definition of extremes on some instruments.
Limitations and common pitfalls
– Lagging: Zig Zag only plots after a threshold is met, so much of the move can already be over when a line is drawn.
– Repainting: the most recent segment can change or disappear if price fails to reach the threshold or later forms a new extreme. Do not treat an unfinished segment as confirmed.
– Not predictive: Zig Zag is descriptive — it summarizes what has already happened, it does not forecast future moves.
– Unsuitable for choppy/sideways markets: many false swings or too few plotted swings depending on X.
– Overfitting risk: excessively tuning X to past data can make the indicator perform poorly out of sample.
Backtesting and implementation notes
– Always backtest Zig Zag-based strategies on out-of-sample data. Because Zig Zag is a filter rather than a signal generator, pair it with strict entry/exit rules and confirmation indicators for realistic testing.
– When coding, be explicit about how ties and identical highs/lows are treated (LastExtreme parameter).
– Be careful with intraday data frequency and lookback: smaller bars produce more noise — raise X accordingly.
Quick checklist before trading with Zig Zag
– Choose timeframe and set % X appropriate for volatility.
– Decide whether to use High/Low or Close series.
– Combine with at least one momentum or volume confirmation indicator (RSI, Stoch, MACD).
– Define entry (confirmation of segment change) and stop (beyond last swing extreme).
– Backtest settings and validate on out-of-sample data.
– Monitor for repainting on most recent swings and avoid making decisions based solely on incomplete segments.
Summary
The Zig Zag indicator is a useful visual tool to filter noise and reveal the major swings in price action. It is best used as an analysis and confirmation aid — for swing identification, wave counting, and locating potential support/resistance between swing highs and lows — rather than as a standalone predictive indicator. Choose the percent threshold to match your timeframe and asset, combine Zig Zag with momentum/volume confirmation, and always be mindful of its lagging and repainting behavior.
Source
– Investopedia — “Zig Zag Indicator” . Accessed 2025-10-16.