Dark Support Resistance Indicator: Grouped Swing Zones

Written by Dominic Walsh · Published · Last updated

The dark support resistance indicator does not draw a line at every swing. It collects them first. Swing highs and lows across `InpLookback` bars go into two piles, and any that sit within a fraction of ATR of each other become one zone. Only the busiest six get drawn.

This build ships as a compiled .ex4 for MT4 and .ex5 for MT5; the screenshots below come from EURUSD H1.

Platforms MT4 (.ex4) + MT5 (.ex5)
Chart window Main price chart
Plots 2: ResistanceMarker, SupportMarker
Alerts popup
Inputs 7

What the Dark Support Resistance Indicator draws on the chart

ResistanceMarker puts a fire brick arrow just above each confirmed swing high.

SupportMarker puts a dark slate gray arrow just below each swing low.

OBJ_RECTANGLE objects shade the grouped zones themselves.

Object names all carry the `InpObjPrefix` text, so cleanup removes them together.

  • ResistanceMarker: arrow, fire brick, width 2, arrow code 234
  • SupportMarker: arrow, dark slate gray, width 2, arrow code 233
Dark support resistance indicator on EURUSD H1 with grouped swing zones
Dark support resistance indicator on EURUSD H1 with grouped swing zones

How the Dark Support Resistance Indicator calculates its values

Collecting the swings

A swing needs `InpSwingBars` `5` bars on each side that fail to beat it. The scan reaches back `InpLookback` `200` bars. Highs go into one array and lows into another, each keeping the price that formed it.

Grouping them into zones

tol takes the current ATR at `InpAtrPeriod` `14` times `InpZoneAtrMult` `0.3`. Swings closer together than that merge into a single zone. Scaling the grouping by ATR means the same setting works on a quiet pair and a fast one.

Keeping only the busiest

`InpTopZones` `6` caps how many zones survive. Each drawn zone gets a pad of at least 30 percent of tol, so a rectangle formed by one swing still has visible thickness. The set rebuilds when the bar count changes.

How to read the signals

A thicker zone means more swings landed in the same place.

The arrows show the raw swings, and the rectangles show what they grouped into.

Zones move as old swings drop out of the `InpLookback` window.

Six zones is a deliberate cap, so a busy chart hides some genuine levels.

Alert channels in this build: popup, one message per closed bar.

`InpAlertOnTouch` ships on and raises a terminal popup when the last completed bar reaches a zone. This build has no push, email or sound channel. The check reads bar 1, so one message follows each closed bar.

Every Dark Support Resistance Indicator input

Core settings

Setting What it does Default
InpSwingBars Swing bars on each side. Bars each side of a swing, default `5`. Raise it to keep only larger turns. 5
InpLookback Lookback bars to scan. Bars scanned for swings, default `200`. 200
InpZoneAtrMult Zone grouping = ATR * mult. Grouping distance in ATR units, default `0.3`. Raise it to merge more swings into each zone. 0.3
InpAtrPeriod ATR period for grouping. ATR length behind the grouping distance, default `14`. 14
InpTopZones Top zones to draw. How many zones survive, default `6`. 6
InpObjPrefix Prefix on every object name, default `DarkSR_`. DarkSR_

Alert settings

Setting What it does Default
InpAlertOnTouch Alert when price touches a zone. Raises a popup when the last bar reaches a zone, default `true`. on
Dark support resistance indicator inputs: InpSwingBars, InpLookback, InpZoneAtrMult, InpTopZones
Dark support resistance indicator inputs: InpSwingBars, InpLookback, InpZoneAtrMult, InpTopZones

Settings that fit your chart

Zone clustering rewards charts with repeated turns at the same prices. EURUSD H1 is the reference chart, where `InpLookback` at `200` covers about eight days. On M5 that window is under a day and the zones churn. On H4 the same setting spans a month of structure.

When the Dark Support Resistance Indicator fails

Grouping by ATR alone ignores how long ago a swing formed, so an old level counts the same as a fresh one.

`InpTopZones` `6` hides everything past the sixth. A busy chart has more real levels than that.

A single spike can create a zone that no trader ever reacted to.

Copy the compiled Dark Support Resistance Indicator file into your MQL4/Indicators folder, and the MT5 build into MQL5/Indicators, then restart the terminal and drag it onto a chart. The step-by-step guide with screenshots is at how to install MT4 and MT5 indicators.

Related on forexmt4systems.com: Support and Resistance Strategy.

Background reading on the method behind the Dark Support Resistance Indicator: Dark pool on Wikipedia, Kagi Charts at StockCharts ChartSchool.

Download the Dark Support Resistance Indicator for MT4 and MT5

The zip holds the compiled Dark Support Resistance Indicator build for MT4 and MT5, plus a short README. Compiled files only, no source. Enter your email below and the download link arrives in your inbox.

Download this indicator free

Enter your email and the file is yours. You also get the full MT4 and MT5 library.

  • 1,380+ indicators
  • MT4 and MT5 files
  • No spam, unsubscribe any time

FAQ

What does InpZoneAtrMult at 0.3 group?

Any two swings closer together than 0.3 of the current ATR. On a chart where ATR reads 20 pips, that is 6 pips. Raise it and more swings merge into fewer, thicker zones. Lower it and you get more zones, each built from fewer swings.

Why cap the drawing at InpTopZones?

Because two hundred bars produce more swings than a chart can usefully show. Six is a readable number. It does mean genuine levels can fall off the list, so raise it if you would rather see everything the scan found.

How long does InpSwingBars delay a marker?

Five bars, because a swing needs five bars on each side that fail to beat it. The marker appears at the original bar once those five have closed. That delay is unavoidable in any fractal-style swing test.

What is the ResistanceMarker plot showing?

Each individual confirmed swing high, drawn ten points above the bar. It is the raw input to the grouping step rather than the finished zone. Comparing the markers with the rectangles shows you exactly which swings merged together.

Are results guaranteed?

No. Trading involves risk. Results are not guaranteed; past performance is not indicative of future results. Use the Dark Support Resistance Indicator as one input. Always backtest before trading live.

Category: this is part of our Support and Resistance collection. Then, plainly, browse more Support and Resistance for MetaTrader, or explore every MT4 indicator and MT5 indicator on the site.

External references

Dominic Walsh - Forex trader and MT4/MT5 developer

About the author

Written by Dominic Walsh, a Forex trader and MT4/MT5 indicator, Expert Advisor and script developer. Every tool on forexmt4systems.com is tested on live charts before release and ships with ready-to-use compiled MT4 (.ex4) and MT5 (.ex5) files. Learn more about the trader and developer behind this site.

How we build, test and correct every tool: Editorial & Testing Policy. Trading carries risk; see the disclaimer.

Leave a Comment