0
Trend · INDICATOR

Flat Finder

The indicator finds the range (sideways market) on its own from candle structure and breakout points, outlines it as a box with upper and lower borders (resistance · support), and fires a signal on a confirmed breakout — with a tick threshold to filter out false exits.

ATAS · .NET 7Indicator · range / sidewaysborders + breakout signal
2026-07-02T20:51:30.317347 image/svg+xml Matplotlib v3.11.0, https://matplotlib.org/
Overall scheme: the market moves from a trend into a range — the indicator outlines the sideways market with a box and borders, and on a border breakout by more than the threshold it places an arrow-signal (Breakdown).
WHY IT MATTERS
1
Finds the range for you

The range is detected automatically from candle structure and breakout points — you don't mark the consolidation by hand, the box appears on its own.

2026-07-02T20:51:30.585973 image/svg+xml Matplotlib v3.11.0, https://matplotlib.org/
2
Ready-made support/resistance levels

The upper and lower borders of the range are drawn automatically — trade bounces off the borders or wait for price to leave the zone.

2026-07-02T20:51:30.618741 image/svg+xml Matplotlib v3.11.0, https://matplotlib.org/
3
Filters out false breakouts

A breakout only counts when price moves past the border by more than the tick threshold — a "Breakdown" marker, not every poke past the level.

2026-07-02T20:51:30.645383 image/svg+xml Matplotlib v3.11.0, https://matplotlib.org/
KEY FEATURES
Auto-detection of the range4 points — 2 fractals up + 2 down: the range narrows → a consolidation box is drawn.
Range bordersUpper and lower levels of the zone — ready-made support and resistance for entries off the borders.
Breakout signal with a thresholdTracks the attempt and confirms the breakout when price moves past the border by more than the tick threshold.
State markers on the chartFlat · Breakdown Attempt · Breakdown · Narrowing — the current phase is visible right on the bar.
Range narrowing (Narrowing)New points inside the range pull the borders inward → the zone is outlined more precisely.
Signal to an external robotThe "range on / off" state is passed via a Memory Mapped File — for integration with a trading robot.
Breakout signal — state markers "Breakdown Attempt" → "Breakdown"
2026-07-02T20:51:30.488536 image/svg+xml Matplotlib v3.11.0, https://matplotlib.org/
A close moved past the border by more than the tick thresholdBreakdown Attempt: the threshold filters out false exits, so an attempt only counts as a move past the threshold, not a touch. Held beyond the threshold on the next bar — a confirmed Breakdown and an arrow. Confirmation is one more bar beyond the threshold, not a bigger threshold; an exit within the threshold doesn't count as an attempt.
The threshold gates the breakout attempt

A close past the border by more than the tick threshold — "Breakdown Attempt": the threshold itself filters out false exits (a touch of the border doesn't count). Held beyond the threshold on the next bar — a confirmed "Breakdown" and an arrow. Confirmation is a second bar beyond the threshold, not a bigger threshold.

Range narrowing (Narrowing) — new points inside the range pull the borders inward
2026-07-02T20:51:30.542209 image/svg+xml Matplotlib v3.11.0, https://matplotlib.org/
With "Allow narrowing" on, the borders are pulled toward fresh points inside the zone (up0<Up / down0>Down), a Narrowing marker — the consolidation is outlined more precisely, orders at the borders are placed more accurately.
Zone narrowing (Narrowing)

With "Allow narrowing" on, new points inside the range pull the borders inward (up0 < Up / down0 > Down) — the consolidation is outlined more precisely, and orders at the borders are placed more accurately.

HOW IT WORKS
1Breakout points from candles

The indicator breaks price action down into trend patterns and marks fractals — ▲ local highs and ▼ lows. These are the anchors the zone is built from.

2Range box from 4 points

2 points up + 2 down are collected and the range narrows (up0 ≥ up1, down0 ≤ down1) → a box is drawn: upper border = up0, lower = down0. While price is inside — a "Flat" marker.

3Breakout attempt past the threshold

A close moved past the border by more than the tick threshold → "Breakdown Attempt". The threshold itself filters out false exits: a touch of the border doesn't count as an attempt — only a move past the threshold.

4Confirmed breakout

Price held beyond the threshold for one more bar → "Breakdown" and an arrow: the range is closed, a trend has started. Confirmation is a second bar beyond the threshold, not a bigger threshold.

2026-07-02T20:51:30.372169 image/svg+xml Matplotlib v3.11.0, https://matplotlib.org/
Anatomy of a zone: 2 fractals ▲ up + 2 ▼ down, the range narrows (up0 ≥ up1, down0 ≤ down1) → upper border = up0, lower = down0, inside — a "Flat" marker.
Anatomy of a zone from 4 points

2 fractals ▲ up + 2 ▼ down; when the range between them narrows (up0 ≥ up1, down0 ≤ down1) — a box is drawn: upper border = up0, lower = down0. While price is inside — a "Flat" marker.

Box + borders indigo — the active range and its levels: upper — resistance, lower — support
▲ / ▼ fractals — breakout points (2 up + 2 down) the zone is built from
Arrow on the exit — confirmed border breakout by more than the tick threshold
Candles green / red — market data — green above the open, red below (no foreign colors on the zone)
IN PRACTICE
2026-07-02T20:51:30.432163 image/svg+xml Matplotlib v3.11.0, https://matplotlib.org/
Range formation: after a downtrend the fractals are collected, a box with borders is drawn — entry off the lower border (support), stop beyond the upper.
Range after a trend → entry off the border

After a downtrend the fractals are collected and a box with borders is drawn. LONG entry off the lower border (support), stop beyond the upper — you trade bounces inside the zone, and the borders are outlined for you.

Trading off the range borders and entering on a confirmed breakout

A trader sees a sideways market but doesn't want to mark levels by hand and gets confused: where's the real border of the zone, and where's a genuine breakout versus a false poke past the level.

  1. Puts the indicator on the chart — the range is outlined with a box on its own, with an upper and a lower border
  2. Trades bounces inside the zone: entry off the border, stop — beyond the opposite border of the range
  3. Sets the breakout threshold in ticks to filter out false exits past the level
  4. On the "Breakdown" marker with an arrow, enters the trend in the direction of the breakout
Result: The sideways market is outlined automatically, the borders give ready-made levels for bounces, and the trend entry only happens on a confirmed breakout with a threshold, not on a random poke past the level.
SETUP & INTEGRATION
Fully configurable
Breakout threshold · ticksCollect points anewAllow narrowing (Narrowing)Signal file · MMF

Breakout confirmation threshold in ticks, resetting points after a breakout, allowing the zone to narrow, and the file name for the signal to an external robot — tune it to your instrument and style.

PlatformATAS (.NET 7) — indicator on the chart
Signalszone + borders + breakout arrows on the chart; range state to an external robot via MMF
Access3-month / yearly subscription · manual renewal
Let the indicator outline the sideways market for you — you trade the borders and the breakout.Subscription 3 mo / year, manual renewal.
★ Full bundle
SEE ALSO