Graded Cross Signals is an EMA crossover indicator for MT4 and MT5 that doesn't try very hard to throw signals away. On 57,562 hourly gold bars back to January 2014 it saw 1,759 crossovers and took 1,544 of them. What it does instead is tell you, on every arrow, how much of the chart agreed with that cross when the bar closed. Then it runs each entry as a trade with a stop, three targets and a scorecard in R.

XAUUSD H1 on MT5, default settings. Each arrow carries its grade, the dashboard on the right shows the market read, the current plan, the open model trade and the running statistics.

Graded Cross Signals vs a plain EMA crossover

What a crossover entry needs What a plain crossover indicator does What Graded Cross Signals does
Price actually moving with the cross Fires the moment the fast EMA crosses, wherever the close is Opens a candidate. It only becomes an entry if the bar closes beyond both EMAs, and it's dropped the moment that fails
Some idea of how good this cross is Every arrow looks the same Seven checks score the bar and the arrow says A+, A or B. On H1 defaults that's six, five or four checks out of seven
A stop before you click Nothing, or a fixed pip distance ATR stop, pushed out to the recent swing when that's further, capped at 1.5 times the ATR stop
Targets that match the stop None TP1, TP2, TP3 at 1, 2 and 3 times the initial risk, with the stop stepping behind each one
A way to know if it works on your symbol You scroll back and count by eye Every entry is traded on closed bars and scored in R: trades, net R, drawdown, loss streak, per grade and per regime

Row one matters most. A fast EMA can cross a slow one while the bar closes back between them, and a plain crossover tool arrows that bar anyway. Here it never becomes an entry.

How a signal is built

  1. Fast EMA crosses slow EMA. A candidate opens. Nothing is traded.
  2. The close must hold beyond both EMAs, above for a long and below for a short.
  3. Evidence. One point each: close beyond the trend EMA, RSI 50 to 75 (25 to 50 for shorts), MACD histogram side, MACD histogram slope, ADX over 20 with DI agreeing, a tick-volume spike, and the close on the right side of session VWAP. An optional higher timeframe adds 1.5.
  4. Gates. Too little evidence, RSI past 75 or 25, or ATR running hot against its 42-bar mean, and the candidate stops there.

The grade is score over maximum: 80% and up is A+, 65% is A, 50% is B. Every built-in preset already needs 50%, so a C never gets through; I checked six datasets and there isn't one.

So what does the filter remove? On that gold history, 116 crossovers died on the volatility gate, 73 on the score, 24 were replaced by an opposite cross and two hit an RSI extreme. The value is in the grade more than the rejection.

EURUSD H4 on MT5 with the dashboard hidden. A Short A from 11 September 2026: the stop steps to entry after TP1, to TP1 after TP2, and the trade closes at TP3 on 22 September.

What it draws

The EMA ribbon. Fast and slow EMA with the gap shaded green or red, plus a thin trend EMA. On MT5 the shade is a real fill; MT4 draws the lines only.

Entries and exits. Long A+ on the entry bar, clear of the candle. Each exit gets a dot at the fill price and a label such as TP3 +3R or SL -1R.

The latest trade's levels. Entry, initial stop, TP1 to TP3 and the stepped stop. When the stepped stop lands on another level the labels merge (ENTRY = STEP SL) instead of overprinting.

Nearest known levels. The closest resistance and support among yesterday's high and low, the session extreme and the last confirmed pivot. The dashboard turns that into "0.4R to resistance".

The dashboard. Market, Signal, Trade and Stats sections, plus an optional Diagnostics section showing which checks passed, why crossovers were rejected and how each grade and regime has done. A recent-trades table is there too, off by default.

It doesn't tint the background and it doesn't place orders.

How to read it

On the chart Read it as
Long A+ or Short A Six or five of seven checks agreed at the close
Long B Four of seven. Same rules, less agreement
Status: "Long: Insufficient score" A candidate is open but the evidence isn't there yet
Regime: Range (ADX<20) Crossovers will come fast and many will stop out
"Price is 1.3R past entry, late to join" The move already happened without you

Long: a Long A or better, regime not flagged as range, and at least 1R of room to the resistance line. Take it on the next bar with the drawn stop, or treat TP1 as the point to stop worrying. Short is the same thing inverted.

Skip it when the dashboard says Range and the last few exits are all SL -1R. That's the chop the stats will count against you.

GBPUSD M15 on MT5. A range in mid-September: crossovers every few hours and a run of stops, and the Stats section counts every one of them.

Settings

Everything under Entry engine and Risk changes signals or trades. Everything under Display doesn't.

Setting Default What it changes When to move it
Preset Auto Picks lengths by timeframe: Scalping up to M5, Default (EMA 9/21/55, RSI 13, ATR 14 x1.5, score 5) from M15 to H1, Conservative on H2 and H3, Swing (13/34/89, ATR 20 x2.5, score 6) from H4 Leave it. Pick Custom only if you want to set the lengths yourself
Grade filter All "A+ and A" raises the floor to 65% When you've checked the per-grade rows in Diagnostics and B entries aren't earning their place on your symbol
High volatility Skip Signals Blocks entries while ATR is over 1.3 times its mean; "Widen SL" takes them with a 1.5x stop instead Widen SL if you trade news-driven moves on purpose
Extra confirmation bars 0 Lets a candidate wait that many bars for the close to clear both EMAs 1 or 2 if you keep seeing entries one bar too early
HTF mode / Higher timeframe Soft score / off Adds 1.5 points when the higher timeframe's EMAs agree, or blocks entries when they don't (Hard filter) Set H4 on an H1 chart if you only want trades with the bigger trend
ATR stop multiplier, TP1/TP2/TP3 R 1.5 ยท 1 ยท 2 ยท 3 The plan's geometry and therefore the stats Move the multiplier for your symbol's noise, not for nicer numbers

Preset, Grade filter and the timeframe are the three to touch first. The dashboard sections, the ribbon, markers, colours and alert channels don't change a single signal.

What this version can't do

It doesn't know what a range is until ADX says so, and ADX lags. Regime is shown, and ADX adds a point, but a range doesn't block an entry on its own. That's the M15 screenshot above.

VWAP resets on the broker's server day and the volume check uses tick volume, since that's what MetaTrader has for FX.

The grade measures agreement, not probability. Whether A+ beats B on your symbol is what the per-grade rows in Diagnostics are for, and I'd look before filtering on it.

The model enters at the close, takes the stop first when one bar touches stop and target, and counts no costs until you enter them.

You won't find a win rate table in this listing, and I'd be careful with any indicator listing that has one. The dashboard shows the model's numbers on your own chart, which you can check.

Honestly, the longest part wasn't the scoring. It was proving MT4 and MT5 make identical decisions bar for bar, and two equal price moves nearly talked me into "fixing" code that was right.

Questions you'll have

Does Graded Cross Signals repaint? Not on closed bars. Entries, grades and model trades are decided when a bar closes, pivots count only once the bars to their right have closed, and the higher timeframe is read from its last closed bar. Only the dashboard's live gauge moves on the forming bar.

Why doesn't it filter out more crossovers? The momentum rule already removes the weakest, and four checks of seven is enough on defaults. Set the grade filter to "A+ and A" for fewer.

Why don't I ever see a C? Every built-in preset needs at least half the evidence, and C starts below half. You'd need Custom, a low minimum score and Hide C switched off.

Can an EA read the signals? Yes. The signal (+1 or -1) is buffer 11 on MT5 and 10 on MT4, the grade is the next one, and entry, stop, targets and exit R follow. Message me for the full map.

MT4? Both platforms are included. Same rules and same decisions bar for bar. MT4 has no shaded ribbon and no Telegram alert; popup, push and email work on both, and MT5 adds Telegram with or without a screenshot.

XAUUSD H1 on MT4, same default settings. Same entries and levels; the ribbon is drawn as lines instead of a fill.

Support

Send me a screenshot with the dashboard visible, plus the symbol and timeframe, and I can usually tell you what's going on. Updates are free.

Analysis tool. It places no trades and makes no profitability claim. Past price behaviour is not a guide to future price behaviour.