Jurik Moving Average Indicator: Volatility-Adaptive EMA Pair

Written by Dominic Walsh · Published · Last updated

This jurik moving average indicator builds an adaptive average from tools MetaTrader already has. It blends two exponential averages. The blend weight moves with volatility. A faster market gives the short average more say. You get two lines that tighten in trends and widen out in chop. This is not Jurik Research’s proprietary JMA. The maths below is exactly what the code does.

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 4: JMA Fast, JMA Slow, Buy, Sell
Alerts popup
Inputs 7

What the Jurik Moving Average Indicator draws on the chart

JMA Fast is the dodger blue line. It leans toward the shorter average when volatility rises.

JMA Slow is the orange line, always the steadier of the two.

Buy places a lime arrow beneath the bar where the fast line crosses above the slow one.

Sell places a red arrow above the bar on the opposite cross.

  • JMA Fast: line, dodger blue, width 2
  • JMA Slow: line, orange, width 2
  • Buy: arrow, lime, width 2, arrow code 233
  • Sell: arrow, red, width 2, arrow code 234
Jurik moving average indicator on EURUSD H1 with JMA Fast, JMA Slow and cross arrows
Jurik moving average indicator on EURUSD H1 with JMA Fast, JMA Slow and cross arrows

How the Jurik Moving Average Indicator calculates its values

Two ordinary EMAs first

The code calls iMA twice on the close. One call uses `InpFastEMA` bars, the other `InpSlowEMA`. That gives emaFast and emaSlow. Nothing adaptive has happened yet. These are the raw ingredients.

Measuring how fast the market moves

An ATR over `InpATRLength` bars meets a longer ATR average over `InpATRAvgLength` bars. Their quotient becomes ratio, and w takes MathSqrt of it. When current volatility matches its own baseline, ratio sits near 1.0 and so does w. A burst of movement lifts w above 1.0. A quiet stretch drags it below.

Blending by that measurement

fastShare comes from w as (w – 0.30) / 1.40. That maps the volatility reading onto a mixing weight. jmaFast then takes emaFast * fastShare + emaSlow * (1.0 – fastShare). A high reading pulls the blue line toward the short average. jmaSlow uses the same weight in reverse and stays nearer the long average. `InpAdaptStrength` scales how far this goes. Crossings between the two lines create the arrows, `InpArrowOffsetPt` points clear of the candle.

How to read the signals

The gap between the two lines is the trend reading. Wide and parallel means a move with some conviction.

Lines that converge without crossing show the adaptation at work, usually as volatility falls back to its baseline.

Arrows come from the crossover alone. No separate trend filter sits on top.

Both lines shift their weighting together, so a cross during a volatility spike arrives sooner than a raw EMA cross would.

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

Cross alerts arrive as a terminal popup and nothing else. `InpEnableAlerts` ships `true`. The message waits for the bar to close, so a cross that appears mid-bar and unwinds before the close never reaches you.

Every Jurik Moving Average Indicator input

Core settings

Setting What it does Default
InpFastEMA Fast EMA length. Length of the short average, default `10`. This sets the floor on how quick the blue line can get. 10
InpSlowEMA Slow EMA length. Length of the long average, default `30`. Widen the gap to `10` and `50` for fewer, slower crosses. 30
InpATRLength ATR length. Bars in the current volatility reading, default `14`. 14
InpATRAvgLength ATR average length (volatility baseline). Bars in the baseline it compares against, default `50`. A shorter baseline makes the adaptation twitchier. 50
InpAdaptStrength Volatility blend strength (0..1). How strongly volatility moves the blend, default `0.50`. Near 0 the pair behaves like plain EMAs. 0.50

Display settings

Setting What it does Default
InpArrowOffsetPt Arrow offset (points). 12

Alert settings

Setting What it does Default
InpEnableAlerts Enable cross alerts. on
Jurik moving average indicator inputs: InpFastEMA, InpSlowEMA and InpAdaptStrength
Jurik moving average indicator inputs: InpFastEMA, InpSlowEMA and InpAdaptStrength

Settings that fit your chart

Adaptive averages earn their keep where volatility shifts through the session. That fits the majors around the London and New York handover. EURUSD on H1 is the reference chart. On daily bars the ATR ratio moves slowly. The adaptation adds little there, and you sit close to a plain 10 and 30 crossover. On M1 the ratio swings hard and the blend can shift bar to bar.

When the Jurik Moving Average Indicator fails

A crossover system still sits underneath. A sideways drift crosses the two lines again and again with no follow-through.

Both averages lag by design. Blending them does not remove that. The adaptation changes how much lag you get, not whether you get any.

One volatility spike skews the ratio while it stays inside the ATR window. The blend can lean the wrong way after the move that caused it ends.

Copy the compiled Jurik Moving Average 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: Moving Average Crossover Strategy.

Download the Jurik Moving Average Indicator for MT4 and MT5

The zip holds the compiled Jurik Moving Average 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

Is the JMA Fast plot the same as Jurik Research’s JMA?

No, and the page should not suggest otherwise. The genuine JMA is a proprietary algorithm nobody has published. This build makes an adaptive average from standard MetaTrader functions: two EMAs blended by the ratio of current ATR to its own longer average. The behaviour is comparable in spirit. The internals differ, and the section above describes them fully.

What does InpAdaptStrength change?

It sets how far the volatility reading can move the blend. At the default `0.50` the code applies the adaptation at half strength. Take it toward 1.0 and JMA Fast swings hard between the short and long averages as conditions change. Take it toward 0 and you effectively run a fixed 10 and 30 EMA pair.

Why does InpATRLength get compared against another ATR average?

A raw ATR value means nothing alone, because 12 pips is calm on gold and wild on EURCHF. Dividing current ATR by its own 50-bar average gives a unitless number centred on 1.0, which reads the same on every instrument. That is what makes one setting transferable across symbols.

Do the Buy arrows appear on the signal bar or the next one?

On the bar where the cross completes, `InpArrowOffsetPt` points clear of the candle, which defaults to `12`. The popup alert waits until that bar closes. If you watch live, an arrow can appear and then vanish when price moves back before the close.

Are results guaranteed?

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

Category: this is part of our Trend collection. Also, browse more Trend 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