Most swing tools make you pick one depth. The 3 level zz semafor indicator runs three at once and colours them apart. A shallow test catches minor turns in yellow, a middle one in aqua, the deepest in magenta, so a move shows its structure at every scale together.
This build ships as a compiled .ex4 for MT4 and .ex5 for MT5; the screenshots below come from EURUSD H4.
| Platforms | MT4 (.ex4) + MT5 (.ex5) |
|---|---|
| Chart window | Main price chart |
| Plots | 6: L1 Hi, L1 Lo, L2 Hi, L2 Lo, L3 Hi, L3 Lo |
| Alerts | popup, push notification, email, sound |
| Inputs | 10 |
What draws where
Six arrow plots, all over price.
`L1 Hi` and `L1 Lo` mark shallow turns in yellow.
`L2 Hi` and `L2 Lo` mark deeper ones in aqua.
`L3 Hi` and `L3 Lo` mark the deepest in magenta.
Arrow width grows with the level.
Each level sits further from the bar than the last.
- L1 Hi: arrow, yellow, width 1, arrow code 234
- L1 Lo: arrow, yellow, width 1, arrow code 233
- L2 Hi: arrow, aqua, width 2, arrow code 234
- L2 Lo: arrow, aqua, width 2, arrow code 233
- L3 Hi: arrow, magenta, width 3, arrow code 234
- L3 Lo: arrow, magenta, width 3, arrow code 233

How the source computes it
One test, three widths
The same fractal check runs three times. `Level1Depth` `2`, `Level2Depth` `4` and `Level3Depth` `7` bars either side decide whether a bar is a local extreme.
Nested by construction
A deeper test is stricter. Anything passing at seven bars also passes at four and at two, so the three levels nest rather than compete.
Spacing them apart
`OffsetPoints` `25` sets the first gap. The second level sits at twice that and the third at three times, which stops the three marks stacking on one bar.
How to interpret it
Yellow marks the smallest turns and appears most often.
Magenta marks the ones worth drawing a level from.
All three on one bar means a major turn.
Each level confirms as many bars later as its depth.
So magenta always arrives last.
Nothing here connects the marks into a line.
Alert channels in this build: popup, push notification, email and sound, one message per closed bar.
Messages here follow a new swing at any level. `EnableAlerts` governs whether they go out and ships on with `EnablePopup`. The other three wait: `EnablePushNotify` to your phone, `EnableEmail` out through the terminal, `EnableSound` playing `SoundFile`.
Every 3 Level ZZ Semafor Indicator input
Core settings
| Setting | What it does | Default |
|---|---|---|
Level1Depth |
Bars each side for the shallow test, `2`. | 2 |
Level2Depth |
Bars for the middle test, `4`. | 4 |
Level3Depth |
Bars for the deepest test, `7`. | 7 |
OffsetPoints |
First level’s gap from the bar, `25`. | 25 |
Alert settings
| Setting | What it does | Default |
|---|---|---|
EnableAlerts |
master toggle. Whether swing messages go out, `true`. | on |
EnablePopup |
MT4 popup dialog. Shows one in a MetaTrader box, `true`. | on |
EnablePushNotify |
mobile MT4 push notification. Sends one to your phone, `false`. | off |
EnableEmail |
SMTP email (configure in MT4 Tools > Options > Email). Mails one out, `false`. | off |
EnableSound |
play sound file from MT4/Sounds/. Sounds one on the desktop, `false`. | off |
SoundFile |
Clip the swing sound uses, `”alert.wav”`. | alert.wav |

Where the settings fit
EURUSD H4 is the reference chart, and the choice matters. A seven-bar depth on H4 covers a week of structure, which is the scale the magenta level is meant for. Drop to M5 and even the deepest test finds noise.
Where it lets you down
Every level confirms late, and the deepest latest of all.
A depth of two produces a great many yellow marks.
Six plots on one chart is a busy read.
The marks never join up, so you draw the levels yourself.
Copy the compiled 3 Level ZZ Semafor 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.
Download the 3 Level ZZ Semafor Indicator for MT4 and MT5
The zip holds the compiled 3 Level ZZ Semafor 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.
FAQ
Does Level3Depth find swings Level1Depth misses?
It finds fewer, not different ones. Anything passing at seven bars also passes at four and two, so a magenta mark always has aqua and yellow beneath it, and that stacking is what flags a major turn.
How late does Level3Depth 7 confirm?
Seven bars after the extreme itself. The high or low sits where it always did, but seven bars have to print on the far side before the magenta mark can appear, which is the cost of the deepest test.
Why does OffsetPoints scale with the level?
So the three marks do not stack on one bar. The first level sits twenty-five points off, the second fifty and the third seventy-five, which keeps all three legible when they coincide.
Is Level1Depth 2 too shallow to be useful?
On its own, probably. Two bars either side finds a great many small turns. Its value is as the fastest layer of the three, showing minor structure inside the bigger swings the other levels mark.
Are results guaranteed?
No. Trading involves risk. Results are not guaranteed; past performance is not indicative of future results. Use the 3 Level ZZ Semafor Indicator as one input. Always backtest before trading live.
Category: this is part of our Trend collection. Next, browse more Trend for MetaTrader, or explore every MT4 indicator and MT5 indicator on the site.
External references
- For background on this concept, see Psychological level on Wikipedia.
- For broader market context, see Trend Lines at StockCharts ChartSchool.
