Home / Learn Hub / Indicators / Fractals
Beginner

The Fractals Indicator: A Five-Bar Swing Marker That Arrives Late

A fractal is not a prediction and not a signal. It is a label the platform puts on a bar once two later bars have closed and proved that bar was a local high or low. That two-bar delay is built into the definition and no setting removes it.

In one sentence:

It marks a bar as a swing high when the two bars either side of it both have lower highs, or as a swing low when the two bars either side both have higher lows.

Fractals at a glance

DifficultyBeginner; the rule is simple; the delay is what people miss
DefinitionMiddle bar of five with the highest high (up fractal) or the lowest low (down fractal)
Confirmation delayTwo bars, always. It cannot be known sooner without changing the definition
Does it repaint?No; a confirmed fractal never moves. But it is drawn two bars behind where it appears, which misleads visually and invalidates careless backtests
MT5 locationShips as standard. Insert → Indicators → Bill Williams → Fractals
SettingsNone in the standard MT5 version. The five-bar rule is fixed
Effectively duplicatesSwing highs and lows read from structure; the ZigZag uses a related idea but repaints, whereas this does not
What kills itChoppy markets, where fractals form on almost every bar and mark nothing

What it is and why it works

The definition is mechanical and worth stating precisely, because almost every misunderstanding of this indicator comes from not knowing it. Look at any five consecutive bars. If the middle bar has a higher high than the two bars before it and the two bars after it, that middle bar is an up fractal and the platform draws an arrow above it. If the middle bar has a lower low than the two bars either side, it is a down fractal and an arrow appears below it. That is the whole calculation. There is no maths, no averaging, no smoothing.

Now the consequence that matters more than anything else on this page. To know whether the middle bar qualifies, you need the two bars after it to have closed. Until they have, the pattern is undecided. So the earliest a fractal can be confirmed is two bars after the bar it marks. On an H1 chart that is two hours late. On a daily chart it is two days late.

MetaTrader then does something that regularly misleads people. It draws the arrow above the middle bar, where it belongs, rather than above the bar where it was confirmed. Scroll back through history and the arrows appear to have been sitting there at the top of every swing in real time. They were not. Each one appeared two bars later than its position suggests. This is not repainting in the way the ZigZag repaints, a confirmed fractal never moves or disappears, but the visual placement creates exactly the same false impression of foresight, and any backtest that reads a fractal at its own bar index rather than two bars later is testing information the market had not yet produced.

On redundancy, be plain. A fractal is a swing high or swing low. That is a concept you already have from market structure, and an experienced eye identifies the same points without the arrows. The indicator’s contribution is that it applies one fixed, unambiguous rule instead of judgement, which makes swings countable and codeable. If you already read structure well, fractals add tidiness rather than information. If you do not yet, they are a reasonable way to learn what a swing point looks like.

How to trade it, step by step

  1. Add it and accept what the arrows mean. In MT5 go to Insert → Indicators → Bill Williams → Fractals. There are no settings to configure. Every arrow you see marks a bar that was the local extreme of five, and every one of them appeared two bars after the bar it sits on.
  2. Treat the fractal as a level, not as an event. The useful output is the price of the fractal: the high of an up fractal, the low of a down fractal. Draw a horizontal line there. That is a price the market rejected, and it will matter again. The arrow appearing is not a signal to do anything.
  3. Filter aggressively, because most fractals are meaningless. In an active market you will get several per hour on a short timeframe. The ones worth keeping are those that formed at the extreme of a clear leg, or that coincide with a level you had already identified. Delete the rest from your thinking, or you will drown in lines.
  4. Use the higher timeframe as the filter. A fractal on H4 is a swing point over sixteen hours of trading and is worth marking. A fractal on M5 is often a single bar of noise. If you trade intraday, mark the fractals from one or two timeframes above the one you enter on.
  5. Trade the break of a fractal level, not the fractal itself. The tradeable event is price returning to a marked fractal high and closing through it, or failing at it. Because the level was set two bars ago at the earliest, you are never late by using it this way; the level does not expire.
  6. Use fractals for trailing stops, which is one of their best jobs. In a long, move your stop to just below the most recent confirmed down fractal each time a new one forms. This gives a mechanical, non-arbitrary trailing rule that follows the structure of the move rather than a fixed distance.
  7. Combine with a trend filter to give the arrows direction. Bill Williams intended fractals to be used with his Alligator: only act on up fractals above the Alligator’s teeth and down fractals below. Any equivalent trend filter (a moving average slope, higher-timeframe structure) achieves the same purpose, which is to stop you trading every arrow in both directions.
  8. If you code with them, index correctly. In MQL5, a fractal at bar N is only knowable at bar N+2. Any expert advisor or backtest that reads the fractal buffer at the current bar is using data that did not exist yet, and its results are fiction. This is the single most common way EA backtests are accidentally falsified.

Size every one of those entries with the position size calculator and check the trade is worth taking with the risk/reward calculator before you commit.

The conditions it needs

Marking structural levels after the fact

This is what fractals genuinely do well. They provide an objective, rule-based way to identify the swing highs and lows that define a market’s structure, with no judgement involved. Two traders looking at the same chart will identify identical fractals, which cannot be said of hand-drawn swings.

Trailing stops in a trend

Because a confirmed fractal never moves, it makes an excellent trailing reference. Following the most recent opposite-side fractal keeps a stop attached to the actual structure of the move, tightening naturally as the trend accelerates and giving room when it consolidates.

Higher timeframes, where each fractal represents real time

An H4 or daily fractal describes a genuine turning point in the market’s development, and the two-bar delay is a small price for a level that will be respected. The same indicator on M1 produces arrows on noise, and the delay becomes proportionally far more damaging.

Teaching a beginner what a swing point is

An underrated use. Someone learning to read structure can turn fractals on, see the rule applied consistently a few hundred times, and internalise what a swing high actually looks like. Once that is learned, the arrows become unnecessary, which is the correct end state.

When it fails

Markets it is most informative on

For different levels of experience

If you are brand new

Here is the one thing to understand and it is not complicated. An arrow above a bar means that bar had a higher high than the two bars before it and the two bars after it. An arrow below a bar means the opposite with lows.

Because the rule needs the two bars after, the arrow cannot appear until two bars later. When you look back at old charts and see arrows sitting neatly at the top and bottom of every swing, it is easy to think the indicator called those turns. It did not. Each arrow showed up two bars after the point it is drawn on. Nothing is wrong with the indicator, that is simply what it is.

So do not use it to enter trades as the arrow appears. Use it to draw lines. When an arrow appears above a bar, note that price and draw a horizontal line there. Price rejected that level once, and levels like that tend to matter when the market comes back. Trading the return to the level is not late; trading the arrow is.

If your results are inconsistent

If fractals have not worked for you, the most likely reason is that you were trading the arrow rather than the level. The arrow is old news by definition. The level it marks is not, and it stays relevant for as long as the market respects it.

The second change worth making is filtering by timeframe. Fractals on your entry timeframe are mostly noise; fractals from one or two timeframes higher mark the structure that actually contains your trade. Mark those, ignore the rest, and the chart becomes readable instead of covered in arrows.

The third is the trailing stop, which is genuinely the best mechanical use of this indicator. In a long position, each time a new down fractal confirms, move the stop just below it. You get a stop that follows real structure, tightens automatically as the trend runs and gives room during consolidations, and because a confirmed fractal never moves, the rule is completely unambiguous, which matters more than it sounds when you are managing a trade under pressure.

If you are experienced

Fractals are a fixed-width local extremum detector with a half-width of two: the crudest possible swing labeller. Their one virtue for systematic work is that they are non-anticipative once you index correctly: the fractal at bar N is determined entirely by bars N−2 through N+2 and never revises afterwards. That makes them safe to use in a backtest in a way the ZigZag categorically is not, provided the read is offset by two bars. The overwhelming majority of published fractal EAs do not apply that offset, which is why their reported results are unreproducible live.

The fixed half-width is the real limitation. A two-bar window has no notion of significance, so a one-tick wiggle and a major reversal both register identically, and the detection density scales with bar noise rather than with structural importance. If you need significance-weighted swings, either widen the half-width, a k-bar fractal with k of three or five is trivially implementable and confirms k bars late, or filter detected fractals by the price excursion since the previous opposite fractal. The second approach preserves the two-bar latency while adding an amplitude criterion, which is usually what people are actually reaching for when they turn to the ZigZag and then get burned by its revision.

For anything requiring swing structure (higher-high sequences, range-boundary detection, stop placement) fractals plus an amplitude filter are the correct primitive. They are causal, deterministic, parameter-light and cheap. The lag is the price of causality and should be budgeted for, not engineered around.

Risk management for this strategy

The main risk with fractals is not the indicator, it is the false confidence produced by looking at a historical chart. Every arrow sits exactly where you would have wanted to enter, and none of them were available when the chart implies. Any assessment of a fractal strategy done by scrolling back through charts will overstate its quality, sometimes dramatically.

If you use fractals for stops, which is their best application, size the position from the actual distance to the fractal level rather than from a fixed number of points. Fractal distances vary enormously with volatility, so a fractal stop in a fast market can be several times wider than one in a quiet market, and the position must shrink accordingly. Use the position size calculator each time rather than reusing a lot size.

One further caution. Because a fractal marks a rejection point, stop orders cluster just beyond fractal levels, and everyone running the standard MT5 indicator is looking at exactly the same arrows. Placing a stop one point beyond an obvious fractal on a liquid instrument puts it in a crowded place. A little extra distance costs some risk-reward and avoids a common way of being taken out of a correct trade.

Where Market Structure Pro fits

The two things fractals cannot tell you are whether the level they mark is worth trading and whether the current market is even the kind that respects levels. In a trend an up fractal is a target to be broken; in a range it is a boundary to be faded. The arrow looks identical in both cases.

Market Structure Pro is built around exactly that classification. Its ranging and chop filter exists to identify when a market is oscillating rather than trending, which is the condition where fractals form on almost every bar and mark nothing. Instead of a chart of arrows to interpret, you get one verdict (TRADE, TRANSITION or NO TRADE) with a confidence percentage, an A/B/C grade and a plain-English explanation of what is supporting or limiting it.

The non-repainting point matters here in a way that is worth spelling out. Fractals are honest but visually misleading: the arrow is drawn two bars behind where it became known. MSP’s state locks on the closed bar, so the verdict shown at the time is the verdict still shown afterwards, with no gap between what you could have seen and what the chart now displays. For anyone who has been misled by a screen full of perfectly placed fractal arrows, that difference is the whole point.

TRADETRANSITIONNO TRADE

One verdict with a confidence score, an A/B/C grade and a plain-English reason. Non-repainting, on every MT5 instrument and timeframe.

Stop guessing whether the setup is valid

Market Structure Pro reads structure, trend, momentum, levels, volatility, volume and session in one pass and gives you a single answer with the reasoning attached. Free 7-day trial, no card required.

Start free trial

Frequently asked questions

What is a fractal in trading?

It is the middle bar of five consecutive bars, where that middle bar has a higher high than the two bars on either side, or a lower low than the two on either side. MetaTrader draws a small arrow above or below such bars. It is simply a rule-based way of marking a local swing high or low.

Do fractals repaint?

No. Once a fractal has been confirmed it never moves or disappears, which makes it fundamentally different from the ZigZag. However, it is drawn on the middle bar rather than on the bar where it was confirmed, so historical charts look as though the arrows appeared two bars earlier than they actually did.

Why are fractals always two bars late?

Because the definition requires the two bars after the middle bar to have closed with lower highs, or higher lows, before the pattern qualifies. Until those two bars exist there is nothing to confirm. This delay is part of what a fractal is, so no setting or alternative version can remove it.

Is the Fractals indicator in MetaTrader 5?

Yes, it ships as standard. Find it under Insert, then Indicators, then the Bill Williams group. The standard MT5 version has no configurable settings, because the five-bar rule that defines a fractal is fixed.

How do you actually trade with fractals?

The most reliable approach is to treat each fractal as a price level rather than as a signal, drawing a horizontal line at the fractal's high or low and trading the market's later reaction to it. The other strong use is trailing a stop just beyond the most recent opposite-side fractal as a trend develops.

What is the best timeframe for fractals?

Higher timeframes, because each fractal there represents a genuine turning point over a meaningful stretch of trading, and the two-bar delay is proportionally less costly. On very short timeframes fractals form constantly on noise, and the two bars of delay represent a much larger share of the move you were trying to catch.

Should fractals be used with the Alligator?

That was Bill Williams' intention, and the pairing addresses a real weakness. Fractals have no direction of their own, so his rule was to act only on up fractals above the Alligator's teeth and down fractals below them. Any equivalent trend filter serves the same purpose of stopping you trading every arrow.

Why do my fractal backtests look so good but fail live?

Almost certainly because the code reads the fractal at its own bar index rather than two bars later. A fractal at bar N is not knowable until bar N plus two, so reading it at bar N gives the strategy information the market had not yet produced. Adding the two-bar offset usually collapses the results.

Related reading