Skip to content
MT5MT4soonTradingViewsooncTradersoonNinjaTradersoonPythonsoon
IndicatorTrend indicatorsMT5No repaint

Downtrend

Free MT5 Downtrend indicator: labels HH/HL/LH/LL swings and marks confirmed trend starts. Lab repaint test: 0 of 174 signals changed.

Add to a kit
CompareRequest a variant
Embed
Downtrend on XAUUSD M15, MT5 chart with default settings: downtrend start, uptrend start, swing labels
Screenshots from a real MT5 chart · 9 · scroll sideways
Downtrend inputs window in MetaTrader 5 with the default settings
Downtrend inputs window in MetaTrader 5 with the default settings
Downtrend Uptrend Start arrow on XAUUSD M15, 28 Oct 2026 04:15
Downtrend Uptrend Start arrow on XAUUSD M15, 28 Oct 2026 04:15
Downtrend Downtrend Start arrow on XAUUSD M15, 27 Oct 2026 11:45
Downtrend Downtrend Start arrow on XAUUSD M15, 27 Oct 2026 11:45
Downtrend signal on XAUUSD M15, 26 Oct 2026 23:45
Downtrend signal on XAUUSD M15, 26 Oct 2026 23:45
Downtrend on XAUUSD H4 (another timeframe)
Downtrend on XAUUSD H4 (another timeframe)
Downtrend on XAUUSD M5 (another timeframe)
Downtrend on XAUUSD M5 (another timeframe)
Downtrend on-chart panel: last signal and status
Downtrend on-chart panel: last signal and status
Downtrend on EURUSD M15
Downtrend on EURUSD M15
Downtrend zoomed out on XAUUSD M15: several weeks of history
Downtrend zoomed out on XAUUSD M15: several weeks of history
Test verdictPassed
Repainted
0 / 174
Signals / week
≈ 13.2
Tested on
EURUSD M15
Tested
2026-10-09
Download free · Google DriveFree account needed · sign in with Google in one clickFree — share it freely. Just don’t sell, crack or modify it. Licencev1.00 · 103.6 KB · .ex5
Lab pick — built by the lab, not from a member request. Want something like it? Request a tool

Overview

What Downtrend draws on your MT5 chart

Downtrend is a free MT5 indicator for traders who read market structure. It labels every confirmed swing on your main chart as HH, HL, LH or LL. It prints a Downtrend Start arrow only when a Lower High and a Lower Low line up, and an Uptrend Start arrow for the mirror case. In the Lab's EURUSD M15 test, 0 of 174 arrows repainted.

Everything is drawn in the main chart window, with no subwindow:

  • Downtrend Start / Uptrend Start arrows: the moment the trend state changes.
  • Swing labels: "HH", "HL", "LH" or "LL" text at each confirmed swing point.
  • Trend legs and break level: lines joining the swings, plus a break level line while a trend is active.
  • Channel and pullback zone: shaded rectangles drawn from the last swing range while a trend is confirmed.
  • Trend State panel: the current state, trend age in bars, move since the trend started, last swing high and low with their labels, the break level and the higher timeframe trend.

How the Lab tested it

The Lab ran version 1.00 (103.6 KB) on MT5 build 6230 on 2026-10-09. The test used EURUSD M15 from 2026-07-09 to 2026-10-08 with real ticks from Raw Trading Ltd.

The Lab logged each arrow as it appeared live and compared it with the finished history. Of 174 signals logged, 0 changed, and the largest arrow delay was 0 bars. In plain words, what you see on past bars is what you would have seen live during this test.

What the signal numbers mean for you

The Lab checked whether price moved 1 ATR (Average True Range, the typical bar size) in the arrow's direction before it moved 1 ATR against it.

  • 50.6% of 174 signals reached 1 ATR in the arrow's direction first. That is a coin flip. The arrow tells you the structure has changed, but it is not an edge by itself. Use it with a filter.
  • Median of 3 bars to hit. On M15, 3 × 15 = 45 minutes. Price usually moved soon after an arrow, so you have little time to decide.
  • 13.2 signals per week on M15. That is about 2–3 trend-state changes per trading day (13.2 ÷ 5 = 2.64), so the state flips often on this timeframe.

Who should use it and who should skip it

The comparison below helps you decide whether it fits the way you trade.

Downtrend indicator: who should use it and who should skip it
Use it when
  • –You read trends from swing highs and lows and want them labelled the same way every time
  • –You want a confirmed trend state plus a pullback area to plan entries from
  • –You can accept waiting SwingStrength bars for each swing to confirm
  • –You will combine the arrow with your own filter
Skip it when
  • –You want entries at the exact top or bottom of a move
  • –You want an arrow that works as a stand-alone entry
  • –You trade tight ranges, where the trend state flips back and forth (not measured by the Lab)
  • –You need tested results on your own pair or timeframe

How it works

  1. 1
    Finds swing highs and swing lows, each confirmed by a number of bars on both sides.Swing High: High above SwingStrength bars before and afterInputs: SwingStrength
  2. 2
    Steps through closed bars and tracks a trend state: up, down, pullback or break, using a pullback zone setting.State from swing sequence | pullback zone fraction = PullbackZonePctInputs: PullbackZonePct
  3. 3
    Marks a new downtrend start at the bar high and a new uptrend start at the bar low.New downtrend marked at High | new uptrend marked at LowInputs: MaxSwingsShown, ShowSwingLabels, ShowChannelFill
  4. 4
    Runs the same swing and state logic on closed bars of a higher timeframe to show its trend.Same swing logic on higher timeframe barsInputs: UseHigherTF, HigherTFMode, HigherTFManual

Specifications

Platform
MetaTrader 5
Version
1.00
Type
Indicator
Window
Main chart
Draws
2 arrows, 3 zones, 1 panel
Alerts
popup, push, sound
Repaints
No (0 of 174 signals changed)
Inputs
17
Tested on
MT5 build 6230 · 2026-10-09

Repaint test

Signals logged live
174
Changed after close
0
Arrow delay
None

No repaint detected. In a 9 Jul 2026 – 8 Oct 2026 test on EURUSD M15 (Raw Trading Ltd real ticks), 174 signals were logged at bar close and re-read at the end of the test: 0 changed. Arrows print on the bar that closes the signal, with no delay.

IndicatorFree — tested 2026-10-09 · MT5 build 6230 · Raw Trading Ltd real ticks. Results come from historical data, not live trading, and do not guarantee future results.

Signal statistics

Price moved 1×ATR in the signal direction first50.6%
Price moved 1×ATR against it first45.4%
Neither within 20 bars4%

Over 9 Jul 2026 – 8 Oct 2026 on EURUSD M15, the indicator printed 174 arrows. After 50.6% of them, price moved 1×ATR(14) in the arrow's direction before moving 1×ATR against it (median 3 bars). 4% reached neither level within 20 bars.

This measures price movement after the arrow, not a trading result. It includes no spread, commission, stop loss or position sizing.

What it draws

  • Arrows (Downtrend Start) from buffer 0, drawn on the closed bar.
  • Arrows (Uptrend Start) from buffer 1, drawn on the closed bar.
  • Rectangles (Swing Labels) drawn as chart objects, not buffers — they are not readable by iCustom() in an EA.
  • Rectangles (Trend Legs and Break Level) drawn as chart objects, not buffers — they are not readable by iCustom() in an EA.
  • Rectangles (Channel and Pullback Zone) drawn as chart objects, not buffers — they are not readable by iCustom() in an EA.
  • An on-chart panel (Trend State); values shown in the panel are not exposed as buffers.

Inputs

InputDefaultWhat it does
SwingStrength5Bars on each side (K) to confirm a swing high / low (2-20)
PullbackZonePct0.382Pullback zone: share of the last swing range measured down from the last swing high (0.1-0.6)
MaxSwingsShown80Recent swings that keep their labels and legs on the chart (10-300)
ShowChannelFilltrueShade the band between the last swing low and swing high while a trend is confirmed
ShowSwingLabelstrueShow "HH" / "HL" / "LH" / "LL" text at each swing point
UseHigherTFtrueShow the trend state of a higher timeframe on the panel (reference only)
HigherTFModeAutoAuto picks the next higher timeframe, Manual uses HigherTFManual
HigherTFManualH4Higher timeframe used when HigherTFMode = Manual
AlertPopuptruePopup alert when a new downtrend or uptrend starts
AlertPushfalsePush notification when a new downtrend or uptrend starts
AlertSoundfalsePlay a sound when a new downtrend or uptrend starts
AlertPullbackfalseAlso alert when the close enters the pullback zone (uses the channels above)
AlertBreakWarningfalseAlso alert on a trend break warning (uses the channels above)
ShowDashboardtrueShow the on-chart panel
PanelScale1Panel size multiplier (DPI is applied automatically)
ThemeDarkChart color theme
RestoreThemetrueRestore the original chart colors when the indicator is removed

How to read it

Install it in one line

In MT5, go to File > Open Data Folder > MQL5 > Indicators, paste the file there, refresh the Navigator and drag Downtrend onto a chart.

How a downtrend gets confirmed

The indicator is always in one of three states: downtrend, uptrend or no clear trend. A Downtrend Start arrow fires when a newly confirmed swing leaves two things true at once: the last swing high is a Lower High and the last swing low is a Lower Low. The state must not already be a downtrend. Uptrend Start is the mirror case: a Higher High plus a Higher Low.

Each arrow marks only the start of a trend, not every new swing.

The illustration below shows the sequence: an uptrend high (HH), a drop to a Lower Low, a rally that stalls at a Lower High, then the arrow once that high is confirmed.

Illustration of a typical Downtrend Start signal with its channel and pullback zoneIllustration
Last swing high (LH)1.09650Channel: lastswing low to last Pullback zone(PullbackZonePct 0HHLLLHDowntrend Start (5 bars afteClose inside pullback zone

The common misread: the arrow is not the top

A swing high only counts once SwingStrength bars sit on each side of it. That means it can only be confirmed after that many bars have closed to its right. At the default of 5 on M15, the Lower High is at least 75 minutes old (5 × 15) before the arrow can appear, and price has often already dropped.

Treat the arrow as "downtrend confirmed", not "sell here". The same rule explains why a small wiggle or an inside bar gets no HL or LH label: it has to stand out from SwingStrength bars on each side to count as a swing.

Channel, pullback zone and break level

The channel shades the band between the last swing low and the last swing high while a trend is confirmed. It is redrawn on every closed bar.

The pullback zone is a share of the last swing range, measured down from the last swing high. Worked example, as an illustration: swing high 1.1000, swing low 1.0900, range 100 pips. With PullbackZonePct 0.382, the zone runs from 1.1000 down to 1.0962 (100 × 0.382 = 38.2 pips). The zone is deleted when the close leaves it.

The zone always hangs from the swing high. In an uptrend that means a shallow dip below the high. In a downtrend it means a deep rally back toward the high. Raising PullbackZonePct widens the zone downward, so a downtrend rally counts sooner.

The break level appears as a line and on the panel while a trend is active. This page does not describe how it is placed, so watch where it sits on your own chart before you act on an AlertBreakWarning. Both the channel and the pullback zone are removed when the state returns to no clear trend.

Inputs to change first

  • SwingStrength (default 5, range 2–20): the single most important setting. Higher values give fewer, larger swings and later arrows. Lower values give earlier arrows and more noise.
  • PullbackZonePct (default 0.382, range 0.1–0.6): sets how deep the pullback zone reaches.
  • UseHigherTF (default on): shows the higher timeframe trend on the panel. It is for reference only and does not filter the arrows.
  • MaxSwingsShown (default 80, range 10–300): how many recent swings keep their labels and legs. Lower it if the chart gets cluttered.
  • ShowChannelFill / ShowSwingLabels / ShowDashboard: turn off whatever you don't read. PanelScale (default 1) resizes the panel.

Alerts

A new Downtrend Start or Uptrend Start can trigger three channels: AlertPopup (on by default, shown in the MT5 alert window), AlertPush (to your phone) and AlertSound. Two extra events are off by default and use whichever channels you turned on: AlertPullback (the close enters the pullback zone) and AlertBreakWarning (a trend break warning).

A decision rule for each arrow

This rule is not tested by the Lab. Compare it with taking every arrow on your own charts.

  • Downtrend Start: consider a sell only if the panel's higher timeframe also shows a downtrend and a later close enters the pullback zone. Skip the setup if a break warning appears first, or if the higher timeframe shows an uptrend.
  • Uptrend Start: consider a buy only if the higher timeframe shows an uptrend and a close dips into the pullback zone below the swing high. Skip it on a break warning or a higher-timeframe downtrend.

Installation

  1. 1Download DowntrendIndicator.ex5 from the button above (Google Drive).
  2. 2In MetaTrader 5: File → Open Data Folder → MQL5 → Indicators. Copy DowntrendIndicator.ex5 there.
  3. 3Restart MT5 or right-click Indicators in Navigator → Refresh.
  4. 4Drag Downtrend onto a chart. For push alerts, enable "Allow push notifications" under Tools → Options → Notifications.
  5. Tested on MT5 build 6230.

Key terms and guides

Swing high
A swing high is a candle whose high is above the highs of the candles on both sides of it. It marks a peak where buyers stopped pushing and price turned lower, at least for a while.
Higher high
A higher high is a swing high that peaks above the previous swing high. When higher highs and higher lows form in sequence, the market is in an uptrend.
Pullback
A pullback is a short, temporary move against the main trend: price dips during an uptrend or rallies during a downtrend, then turns back the trend's way. Traders use it to enter a trend at a better price.
Higher Timeframe
A higher timeframe is any chart period longer than the one you trade on, such as the daily chart for someone trading the 1-hour chart. Traders use it to see the bigger trend and the main price levels around their smaller-chart trades.
Market structure
Market structure is the pattern of swing highs and swing lows price leaves on a chart. Higher highs and higher lows mark an uptrend, lower highs and lower lows mark a downtrend, and a break of that pattern warns the trend may be changing.
Trend
A trend is the main direction price keeps moving in over a period. In an uptrend price makes higher highs and higher lows. In a downtrend it makes lower highs and lower lows.

More on this subject: Trend & moving averages guide, terms and tools

User reviews

No reviews yet. Members who download the tool can review it here.

Write a review

Sign in and download the tool to review it.

Build a checklist with it

Downtrend does one job on the chart: trend / context. Put it on the same chart as the tools below and the IndicatorFree panels merge into one checklist card, ordered trend, zone, signal, risk.

  • Zone / levelAnchored VWAPAdds where price is: the zones and levels that Downtrend does not draw.
  • Entry signalClimax VolumeAdds the entry signal: the moment to act once Downtrend has set the scene.

The Lab has not tested these combinations. Each tool is tested on its own; the card only lines up what each one says. Free members get 2 new tools a day. If one has to wait until tomorrow, install BlackBox to raise the limit to 5 a day (20 on a live account).

FAQ

Does Downtrend repaint?

No repaint detected. In a 9 Jul 2026 – 8 Oct 2026 test on EURUSD M15 (Raw Trading Ltd real ticks), 174 signals were logged at bar close and re-read at the end of the test: 0 changed. Arrows print on the bar that closes the signal, with no delay.

Can I use Downtrend in an EA?

Yes. Read buffer 0 (Downtrend Start) with iCustom() on bar 1 — the last closed bar.

Why can’t my EA read the zones?

Zones and the panel are chart objects, not indicator buffers, so iCustom() does not return them.

How do I get alerts on my phone?

Enter your MetaQuotes ID under Tools → Options → Notifications, tick "Enable push notifications", and keep the push alert input on.

Does it work on other pairs?

Tested on EURUSD only; other symbols not tested.

Can I use the Downtrend indicator on gold, indices or other timeframes?

You can attach it to any chart, but the Lab's results cover only EURUSD M15. On other symbols or timeframes, watch it on history first and see how often the trend state flips before you rely on it.

How do I choose which higher timeframe the panel shows?

With HigherTFMode set to Auto, it picks the next higher timeframe automatically. Switch it to Manual and the panel uses HigherTFManual instead, which defaults to H4.

Why did an LH label appear without a Downtrend Start arrow?

Either the last swing low is not yet a Lower Low, or the state was already a downtrend, so new LH and LL swings keep the state without printing a new arrow.

Why did my chart colours change, and will they come back?

The Theme input (default Dark) recolours the chart. With RestoreTheme left on, your original colours come back when you remove the indicator.

Why am I not getting push notifications?

AlertPush is off by default, so switch it on in the inputs. Your MT5 terminal also needs your MetaQuotes ID entered in its notification settings before any push can reach your phone.

Changelog

  • 1.00Initial release: trend state machine that confirms Downtrend only when the latest confirmed swing high is a Lower High AND the latest confirmed swing low is a Lower Low (mirrored for Uptrend), built on symmetric K-bar. · 2026-10-09

Final verdict

Verdict: a disciplined structure reader, not a stand-alone entry signal

Downtrend does one job well. It applies a strict LH + LL (or HH + HL) rule the same way on every swing, and its arrows held still in the repaint test. What it does not give you is an edge from the arrow alone. The breakdown by arrow shows why.

Lab results by arrow type: share of signals reaching 1 ATR first, and share with no hit in 20 bars (EURUSD M15, 87 signaIllustration
Downtrend Start: 1 ATR in arrow directio
49.4%
Uptrend Start: 1 ATR in arrow direction
51.7%
Downtrend Start: no hit within 20 bars
2.3%
Uptrend Start: no hit within 20 bars
5.7%

The Downtrend Start arrow, the one this indicator is named for, was slightly below a coin flip in this test. Uptrend Start arrows did a little better but stalled more often. Across all 174 signals, only 4% hit neither level within 20 bars, so arrows rarely fired into a dead market, but up arrows stalled more than twice as often as down arrows. Each arrow type fired 6.6 times a week, so on M15 you will see a fresh trend call most days.

Where it falls short

  • Built-in lag. Arrows come after the swing confirms, never at the turn (see How it works).
  • No built-in filter. The higher timeframe trend is shown for reference only. Applying it is up to you.
  • Narrow test. The Lab's numbers cover one symbol (EURUSD), one timeframe (M15) and one quarter. Other markets and timeframes are untested.
  • Ranges hurt (not measured by the Lab). When swings alternate without a clear direction, the state switches between trend and no clear trend, and the arrows chase it.

Skip it if you want an indicator that tells you when to enter on its own. Keep it if you want structure labelled for you and you already have your own entry trigger.

Settings to start with

  • M15: keep the Lab-tested defaults (SwingStrength 5, PullbackZonePct 0.382).
  • M5: try SwingStrength 8 to cut down on minor swings. Not tested by the Lab — compare it with the default.
  • H1 and above: try SwingStrength 3 so swings confirm faster on slow bars. Not tested by the Lab — compare it with the default.
  • If downtrend pullback alerts rarely fire: try PullbackZonePct 0.5 so shallower rallies count. Not tested by the Lab.
  • Suggested, not tested by the Lab: turn on AlertPullback and AlertBreakWarning if you follow the decision rule above.

More trend indicators tools