The buy sell signals arrows indicator keeps two rules and shows only their result. An 8 period EMA has to cross a 21 period one, and RSI has to sit on the matching side of 50 at that moment. Neither average appears on the chart. You get the arrows and nothing else, which suits traders who already have their own lines up.
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 | 2: BUY, SELL |
| Alerts | popup |
| Inputs | 7 |
What the Buy Sell Signals Arrows Indicator shows
BUY places a wide lime arrow beneath a bar where the fast EMA crossed up and RSI cleared its threshold.
SELL places the red counterpart above the bar on the opposite pair.
Both arrows draw at width 4, so they stay visible over whatever else you have on the chart.
No lines are plotted. The EMAs and RSI are read internally and never drawn.
- BUY: arrow, lime, width 4, arrow code 233
- SELL: arrow, red, width 4, arrow code 234

What feeds each plot
Reading both averages twice
Four iMA calls supply fNow and fPrev over `FastEmaPeriod`, plus sNow and sPrev over `SlowEmaPeriod`. Reading each average at the current bar and the one before is what makes this a crossing test rather than a state test, so a market where the fast EMA has been above for days produces no repeat arrows.
Detecting the cross
buyCross needs fPrev at or below sPrev with fNow above sNow. sellCross mirrors it. The comparison uses the same bar index for both averages on each side, so nothing drifts between the two readings.
Gating on momentum
rsi comes from iRSI over `RsiPeriod`. A buy arrow needs buyCross AND rsi above `RsiBuyMin`, which ships at `50.0`. A sell needs sellCross AND rsi below `RsiSellMax`, also `50.0`. Both thresholds sit at the midline by default, so the filter asks only that momentum agrees with the direction rather than that it is extreme.
Getting a signal from it
An arrow means the cross and the momentum check happened together on the same bar.
Crosses that failed the RSI test leave no trace, so quiet stretches can hide real crossings.
Because nothing is plotted, add your own 8 and 21 EMAs if you want to see what produced a signal.
Moving both thresholds away from 50 makes the filter meaningfully stricter rather than merely directional.
Alert channels in this build: popup, one message per closed bar.
One channel exists, a terminal popup, controlled by `EnableAlerts` at its `true` default. The alert path re-reads RSI at shift 1 rather than reusing the drawing loop’s value, so the message describes a bar that has closed.
Every Buy Sell Signals Arrows Indicator input
Core settings
| Setting | What it does | Default |
|---|---|---|
FastEmaPeriod |
Crossing average length, default `8`. | 8 |
SlowEmaPeriod |
Reference average length, default `21`. Widening the gap to 8 and 34 reduces the cross count. | 21 |
RsiPeriod |
Momentum lookback, default `14`. | 14 |
RsiBuyMin |
RSI must be ABOVE this for BUY. RSI must sit above this for a buy, default `50.0`. Raise it to 55 to demand momentum with something behind it. | 50.0 |
RsiSellMax |
RSI must be BELOW this for SELL. RSI must sit below this for a sell, default `50.0`. | 50.0 |
Display settings
| Setting | What it does | Default |
|---|---|---|
ArrowOffsetPts |
Distance between candle and arrow, default `30` points. | 30 |
Alert settings
| Setting | What it does | Default |
|---|---|---|
EnableAlerts |
(see inputs panel) | on |

Which pair, which timeframe
An 8 and 21 cross is a fast pairing that suits intraday work. EURUSD H1 is the reference chart, where signals arrive a few times a week. On M5 the crosses come constantly and the midline RSI filter removes only about half of them. On H4 and daily the pairing becomes a swing tool and arrows turn rare.
The trade-offs
A threshold of 50 is the weakest possible filter. RSI sits above 50 roughly half the time, so it blocks far fewer crosses than a stricter level would.
Both inputs lag, and requiring them together delays the arrow rather than improving it.
Nothing is drawn, so a signal that looks wrong gives you no way to check what the tool saw without adding the lines yourself.
Copy the compiled Buy Sell Signals Arrows 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.
Background reading on the method behind the Buy Sell Signals Arrows Indicator: Relative strength index on Wikipedia, USD at Investopedia.
Download the Buy Sell Signals Arrows Indicator for MT4 and MT5
The zip holds the compiled Buy Sell Signals Arrows 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
How much does the RsiBuyMin filter really remove?
Less than you might hope at its default. RSI sits above 50 about half the time, so a threshold there blocks roughly half of the upward crosses. Raising it to 55 or 60 makes the filter demand real momentum and cuts the arrow count noticeably. That is usually the first change worth trying.
Why does FastEmaPeriod not plot a visible line?
The build declares only two buffers, both for arrows. It reads the averages through iMA and never writes them to a plot. If you want to see the 8 and 21 lines, add MetaTrader’s own Moving Average twice with matching settings; the values will line up exactly with what the tool used.
Can FastEmaPeriod produce two BUY arrows back to back?
No. The fast average has to move from at or below the slow one to above it. Once it sits above, it cannot repeat that transition without first dropping back under, which would test the sell side instead. So the arrows must alternate, whatever the RSI gate does.
Does the alert use the same RSI value as the arrow?
Not exactly the same call. The drawing loop reads RSI at bar i, while the alert path re-reads it at shift 1 through rsiAlert. Both refer to closed bars, so they agree in practice, but the alert deliberately anchors itself to the most recently completed bar.
Are results guaranteed?
No. Trading involves risk. Results are not guaranteed; past performance is not indicative of future results. Use the Buy Sell Signals Arrows Indicator as one input. Always backtest before trading live.
Category: this is part of our Signal and Forecast collection. Also, truly, browse more Signal and Forecast for MetaTrader, or explore every MT4 indicator and MT5 indicator on the site.
External references
- For background on this concept, see Relative strength index on Wikipedia.
- For broader market context, see USD at Investopedia.
