Forex
Indicator

DeMarker: Reading the 0 to 1 Reversal Scale

Last updated 2026-07-19

DeMarker (often written DeM) is a bounded reversal oscillator developed by market technician Tom DeMark, designed to flag when a market has become exhausted after a directional push and is due for a pause or reversal. Unlike RSI, which builds its reading from closing-price changes, DeMarker looks specifically at each bar's high and low relative to the bar before it — a subtly different lens on the same underlying question of "has this move gone too far, too fast?"

How DeMarker Is Calculated

DeMarker works from two raw building blocks calculated bar by bar. DeMax compares the current bar's high to the previous bar's high: if the current high is greater, DeMax is the difference between them; if not, DeMax is zero. DeMin does the mirror comparison on the low: if the previous bar's low is greater than the current low, DeMin is that difference; otherwise DeMin is zero. In practice only one of the two is ever non-zero on a given bar — a bar either pushes a new high, a new low, or neither, rarely both at once in a way that matters here.

Over the lookback period (14 candles by default), DeMax values are averaged and DeMin values are averaged separately, then DeMarker is the ratio of the averaged DeMax to the sum of the averaged DeMax and averaged DeMin. That division is what compresses the whole indicator into a 0 to 1 scale: when recent bars have been making consistently higher highs and few lower lows, the DeMax average dominates the denominator and DeMarker pushes toward 1; when the reverse is true, it pushes toward 0. A reading of exactly 0.5 means the buying and selling pressure captured by this high/low method has been roughly balanced over the period.

Reading the 0 to 1 Scale: Why 0.7/0.3, Not 70/30

This is the detail that trips up traders moving from RSI, Stochastic, or CCI to DeMarker: every other bounded oscillator on this site runs on a 0-100 scale (RSI, Stochastic) or a ±100 scale (CCI); DeMarker is the only one that runs on a plain 0 to 1 scale, and its default zone thresholds are 0.7 and 0.3 — not 70 and 30, and not 80 and 20.

  • DeMarker above 0.7 — the Overbought zone, buying pressure has dominated recent bars and the move may be stretched.
  • DeMarker below 0.3 — the Oversold zone, selling pressure has dominated and the move may be due for a bounce.
  • DeMarker near 0.5 — no real extreme, buying and selling pressure roughly balanced.
PriceBUYSELL0.70.3OverboughtOversoldDeMarker (0 to 1 scale)
Entry conditions: BUY when DeMarker crosses back above 0.3 after being in the Oversold zone — SELL when DeMarker crosses back below 0.7 after being in the Overbought zone

The numbers 0.7 and 0.3 look similar to RSI's 70/30 and Stochastic's 80/20 if you drop the decimal point, and that's exactly the trap: plug 70 into a DeMarker chart expecting an overbought threshold and the line will never get anywhere close, because DeMarker simply never exceeds 1. Always check which scale you're reading before setting an alert threshold — a DeMarker input of "70" instead of "0.7" is a silent, easy-to-make mistake that produces an indicator that never fires.

Entry Conditions

  • BUY — DeMarker crosses back above 0.3 after having been in the Oversold zone.
  • SELL — DeMarker crosses back below 0.7 after having been in the Overbought zone.

As with RSI and CCI, the exit from the extreme zone is the more useful signal than the entry into it. DeMarker first dropping below 0.3 only confirms that selling pressure has been heavy over the lookback window — it says nothing about whether that pressure is finished. Waiting for the cross back above 0.3 filters out the common case where DeMarker dips into the oversold zone and simply sits there while price keeps grinding lower.

A Worked Example

Say GBP/USD has been climbing steadily for several sessions, each new bar printing a higher high with only occasional, shallow lower lows. Over the 14-bar lookback, DeMax keeps accumulating while DeMin stays close to zero, so DeMarker climbs — first through 0.5, then past 0.7 into the Overbought zone, eventually touching 0.85 as the rally peaks. Price then stalls: the next few bars fail to make new highs, and a couple of modest lower lows appear, so DeMin starts contributing again. DeMarker falls from 0.85 back through 0.7. That cross back below 0.7 is the SELL condition described above — not the moment the rally looked strongest, but the moment the balance of highs and lows started tipping the other way.

Parameters

  • DeMarkerPeriod (default 14) — the lookback window used to average DeMax and DeMin. A shorter period reacts faster to recent highs and lows and reaches the extreme zones more often; a longer period smooths the reading and produces fewer, later signals. 14 is the same default period used across RSI, CCI, MFI, and most oscillators on this site.
  • Overbought (default 0.7) — the upper zone threshold, on the 0 to 1 scale.
  • Oversold (default 0.3) — the lower zone threshold, on the 0 to 1 scale.
  • EnableAlert (default true) — pop up a terminal alert the first time DeMarker enters or exits a zone.
  • EnablePush (default false) — also send a push notification to your phone via MetaTrader's mobile app.

DeMarker vs RSI and CCI: Comparing Reversal Oscillators

All three are reversal oscillators built to answer "has this move gone too far," but each measures a different raw ingredient. RSI weighs the size of up-closes against down-closes; CCI measures how far the typical price has strayed from its own moving average, with no ceiling on the answer; DeMarker instead compares each bar's high (or low) directly to the prior bar's high (or low), ignoring where the bar closed relative to its open. That high/low focus makes DeMarker react somewhat differently around exhaustion points than a closing-price oscillator like RSI: a bar that closes flat but still prints a fresh high still pushes DeMarker higher, even though RSI might barely move on a closing price that didn't change much. In a market making a string of higher highs with progressively smaller closing gains — a classic late-trend exhaustion pattern — DeMarker can start rolling over before RSI does, simply because it's watching the highs directly rather than waiting for the closes to catch up.

None of this makes DeMarker strictly better than RSI or CCI — it's a different lens on similar behavior, and like the others it's a momentum reading, not a price target. Traders often run DeMarker alongside just one other tool that measures something genuinely different (trend strength, volatility, or support/resistance) rather than stacking multiple reversal oscillators that mostly restate the same price action in different units.

A Word of Caution

Like every bounded oscillator on this site, DeMarker can stay pinned in the Overbought or Oversold zone for an extended stretch during a strong trend, repeatedly signaling a reversal that doesn't arrive — the same trap RSI has in strong trends. Check whether the market is trending or ranging first (see Trend vs Range) and treat DeMarker's reversal signals as most reliable in ranging conditions, or filter them with a trend tool so you only take oversold buy signals inside an established uptrend. Remember, too, that the scale mismatch described above is a real, common mistake — double-check any DeMarker-based alert or strategy is set to 0.7/0.3, not 70/30. And as with any indicator-based signal, size positions sensibly and always define your risk before entering — see Risk Management Basics for the position-sizing math.

Download the Indicator

This custom indicator plots DeMarker with automatic alerts when it enters the Overbought or Oversold zone. It's available for both MetaTrader 4 and MetaTrader 5 below.

How to Install — MetaTrader 4

  1. Download the demarker-alert.mq4 file below.
  2. Open MetaTrader 4 → click FileOpen Data Folder.
  3. Place the file in the MQL4/Indicators folder.
  4. Restart MetaTrader 4, then drag the indicator from the Navigator window onto the chart.

How to Install — MetaTrader 5

  1. Download the demarker-alert.mq5 file below.
  2. Open MetaTrader 5 → click FileOpen Data Folder.
  3. Place the file in the MQL5/Indicators folder.
  4. Restart MetaTrader 5, then drag the indicator from the Navigator window onto the chart.

Both files are source code — open and review the full code before using it, for your own safety.

Download demarker-alert.mq4

For MetaTrader 4 — this is source code (.mq4), open and review it fully before using it.

Download File

Download demarker-alert.mq5

For MetaTrader 5 — this is source code (.mq5), open and review it fully before using it.

Download File