Zig Zag Calculator
Build a transparent Zig Zag path from confirmed local close pivots, a declared pivot-leg window and a minimum percentage reversal.
Enter chronological close values
Paste one consistent close series oldest first. Later rows are required to confirm earlier pivots, so the most recent rows remain intentionally unavailable.
Whole number from 2 through 100; floor(total ÷ 2) closes are required on each side.
Positive percentage from 0.01 through 1,000, measured from the last saved pivot.
One row per observation: Label, Close. Use commas, tabs or semicolons; omit a header row. Maximum 2,000 rows.
Confirmed entered-close Zig Zag
Entered Price Filter Charts 1.0.0.
| Pivot | Label | Type | Close value | Move from prior pivot |
|---|
How this confirmed Zig Zag calculator works
Pivot high: close > every left close and close ≥ every right close
Pivot low: close < every left close and close ≤ every right close
Reversal % = |new pivot − prior saved pivot| ÷ prior saved pivot × 100
Version 1.0.0 divides the entered total pivot legs by two and rounds down. A candidate close needs that many observations on both its left and right. Strict comparisons apply on the left and inclusive comparisons on the right, making equal-value tie handling deterministic. The earliest confirmed candidate becomes the first saved pivot.
An opposite-side candidate is added only when its percentage distance from the last saved pivot meets or exceeds the declared deviation. A same-side candidate replaces the last saved pivot only when it is more extreme—higher for a pivot high or lower for a pivot low. Other confirmed candidates are retained in the audit rows as ignored branches rather than silently changing the path.
The final left/right-leg count of observations cannot be confirmed because the necessary future rows are absent. This page never draws a projected pivot into that tail. Even a saved latest pivot can be replaced later by a more extreme same-side candidate before a qualifying opposite reversal appears, which is why Zig Zag is principally a historical visualization tool.
A careful interpretation workflow
Start with the declared source, grid or pivot convention and the row-level audit trail. A cleaner chart is a lossy transformation of entered history—not new market evidence. Keep the original time-based data beside any filtered reconstruction.
- Treat the pivot-leg value and deviation as sensitivity controls, not optimized trading parameters.
- Keep the visible right-unconfirmed tail when explaining why the newest close cannot immediately become a confirmed pivot.
- Compare platform results only after matching source field, pivot window, deviation unit, tie rules and projected-pivot setting.
- Use close-based indicator guides when comparing this result; high-low Zig Zag variants can choose different prices and bars.
- Read completed swings as historical segments, not evidence that the next segment must alternate or reach a target.
- Test any strategy logic on time-based data with costs and without future information leaking into entry decisions.
Worked example from the audited fixture
How to interpret the result
The Zig Zag line is a compressed description of entered historical closes. It should become easier to read than the raw series precisely because it discards smaller movements and waits for later observations. That delay and possible latest-pivot replacement make it unsuitable as proof of a real-time turning point or a standalone forecasting system.
Renko, Point & Figure and Zig Zag compared
All three reduce visible price movement, but they answer different reconstruction questions. Renko advances across a fixed brick grid, Point & Figure groups fixed boxes into alternating columns, and Zig Zag links confirmed extrema that survive a deviation threshold.
| Filter | Core input | State change | Time treatment | Excluded here |
|---|---|---|---|---|
| Renko | Fixed brick size | One-box continuation; disclosed two-box reversal | Rows can form zero or many bricks | Tick/OHLC and ATR/percentage variants |
| Point & Figure | Box size × reversal count | Same-column box or alternating X/O column | Rows can form zero or many boxes | High-low priority, patterns and objectives |
| Zig Zag | Pivot legs + deviation % | Confirmed opposite pivot or more-extreme replacement | Right-side rows create confirmation lag | Projected pivots and future reversal calls |
Use the ATR Calculator or Average Daily Range Calculator if you first need an observed volatility reference. This batch deliberately does not choose a box or brick size for you, because converting a historical range into a chart setting requires a separate declared rule and sensitivity review.
Assumptions and limits
- At least 2 × floor(pivot legs ÷ 2) + 1 positive close observations are required; the overall limit is 2,000.
- Total pivot legs must be a whole number from two through 100; odd inputs round down after division by two.
- Reversal deviation is a positive percentage from 0.01 through 1,000 and is measured from the last saved pivot.
- The close source is enforced; bar high/low pivots and MetaTrader point-based Deviation and Backstep are not replicated.
- Only confirmed pivots are displayed. The newest rows have no projected or provisional endpoint.
- A same-side more extreme confirmed pivot replaces the last saved pivot, so historical endpoints can change as more rows are added.
- No Elliott Wave label, harmonic pattern, support/resistance verdict, future reversal, profitability claim or advice is produced.
Prepare close data before calculating
Export completed closes from one symbol, one broker or data vendor, one timeframe and one time zone. Keep every row in chronological order and use one consistent price scale. The page validates positive finite decimals and row structure, but it cannot discover duplicate timestamps, missing sessions, daylight-saving shifts or a mislabeled instrument.
Do not mix pips with quoted prices. If EUR/USD closes are entered near 1.1700, a ten-pip fixed box is normally 0.0010 under the common 0.0001 pip convention; JPY pairs and non-FX instruments use different price increments. The calculator works in raw entered price units and does not infer pip size, tick size, contract size or broker symbol suffixes.
Sampling matters. Daily closes, hourly closes and tick-by-tick movement can produce different filtered structures even when their first and last prices match. Record the source interval, date range, first-close anchor, parameters and model version with any exported observation so another person can reproduce the exact arithmetic.
For execution or backtesting, return to time-based bid/ask data and model spreads, commission, slippage, gaps, order latency and liquidity. Synthetic filter levels can be useful for visualization, but they do not prove when a market price was tradable or whether an order would have filled.
Frequently asked questions
- A candidate close must be more extreme than the required left closes and at least as extreme as the required right closes under the disclosed tie rules.
- Version 1.0.0 uses floor of total pivot legs divided by two on each side, so odd totals round down.
- An opposite candidate must move at least the entered percentage from the last saved pivot to join the path.
- A later confirmed same-side candidate replaces the latest pivot when it is more extreme and no qualifying opposite reversal has been saved.
- Right-side confirmation requires later observations, so the final left-right-leg count of rows cannot yet become confirmed pivots.
- No. MetaTrader Depth, point Deviation and Backstep variants differ from this confirmed close-pivot percentage method.
- No. It displays confirmed pivots only and keeps the right-unconfirmed tail visible.
- No. It filters entered history and is not a future turning-point forecast or standalone trading system.
Sources and methodology
- TradingView — Zig Zag — Documents left/right pivot confirmation, deviation filtering, same-side replacement and projected-pivot behavior.
- MetaTrader 5 Help — ZigZag — Explains the indicator’s historical-filter role, changing final segment and platform-specific parameters.
- StockCharts ChartSchool — ZigZag — Provides independent context for close versus high-low sources and non-predictive filtering.
The operational contract is Entered Price Filter Charts version 1.0.0. Independent fixture oracles, boundary equality, translation and scale transformations, validation, content guards and production isolation are tested before staging acceptance. Sources explain the broader chart families; the exact versioned choices on this page govern its output.
Continue the price-structure workflow
Compare chart feeds and execution terms
Before transferring a filtered level into live analysis, compare each broker’s historical feed, session boundary, quote precision, spreads, commissions and order rules. Two platforms can produce different Renko, P&F or Zig Zag structures from different source data without either arithmetic engine being broken.
Risk and affiliate disclosure: Leveraged forex and CFD trading can result in substantial losses. These are affiliate links, so ForexMT4Indicators.com may receive compensation if you register or trade through them, at no additional cost to you. Availability and terms vary by jurisdiction and broker entity.

