The rsi arrow indicator marks the moment RSI crosses back out of an extreme. It plots Wilder’s oscillator in its own pane with the usual 30, 50 and 70 reference lines, then places an arrow at the crossing bar. A cooldown stops a reading that hovers on a threshold from producing a run of identical arrows.
This build ships as a compiled .ex4 for MT4 and .ex5 for MT5.
| Platforms | MT4 (.ex4) + MT5 (.ex5) |
|---|---|
| Chart window | Separate window (levels 30 / 50 / 70) |
| Plots | 3: RSI, Buy, Sell |
| Alerts | popup, push notification, email, sound |
| Inputs | 11 |
Reading the drawn elements
RSI is the dodger blue line, scaled 0 to 100 with level lines at 30, 50 and 70.
Buy places a lime arrow at the RSI value where the line crosses back up out of oversold.
Sell places a red arrow where it crosses back down out of overbought.
Both markers sit on the oscillator scale inside the pane, not beside a candle.
- RSI: line, dodger blue, width 2
- Buy: arrow, lime, width 2, arrow code 233
- Sell: arrow, red, width 2, arrow code 234

The arithmetic
Wilder’s RSI in a single pass
A seed bar takes avgGain and avgLoss as plain averages of the gains and losses over `RsiPeriod`. Every later bar smooths them Wilder’s way: avgGain becomes (avgGain * (RsiPeriod – 1) + g) / RsiPeriod, and avgLoss follows the same shape. RsiValue then converts the pair into the 0 to 100 reading. Computing it once forward, rather than calling iRSI per bar, keeps a long history fast.
Comparing two readings
prev holds RsiBuf[i + 1] and cur holds the current bar’s value. A crossing needs the two on opposite sides of a threshold, so the oscillator has to move through `OversoldLevel` or `OverboughtLevel` rather than simply sit past it. BuyBuf and SellBuf then receive cur, which is why the marker lands at the RSI reading itself.
Blocking the repeats
An oscillator sitting on a threshold can cross it several times in a few bars. `SignalCooldown` at `3` blocks a second same-side arrow within that span. There is also `ShowEarlySignals`, which the source comment labels honestly: switching it on allows an arrow on the forming bar, and that arrow repaints.
Turning output into a view
Arrows sit on the RSI line, so read them against the 30 and 70 levels rather than against price.
A crossing out of oversold is the event. RSI merely being low produces nothing.
Gaps between arrows often reflect the cooldown rather than a quiet oscillator.
Leave the early-signal switch off unless you accept that those arrows can vanish.
Alert channels in this build: popup, push notification, email and sound, one message per closed bar.
Four channels sit beneath `EnableAlerts`: popup, push notification, email and sound, with `SoundFile` naming the clip. Popup ships enabled. The alert configuration group is labelled once per closed bar, so a message follows a settled crossing rather than a forming one.
Every RSI Arrow Indicator input
Core settings
| Setting | What it does | Default |
|---|---|---|
RsiPeriod |
RSI lookback period. Oscillator lookback, default `14`, Wilder’s original figure. | 14 |
OverboughtLevel |
Overbought reference. Upper threshold, default `70.0`. Raise it to 80 for rarer, more stretched signals. | 70.0 |
OversoldLevel |
Oversold reference. Lower threshold, default `30.0`, mirroring the upper one. | 30.0 |
SignalCooldown |
Min bars between same-side arrows. Minimum bars between two arrows on the same side, default `3`. | 3 |
Display settings
| Setting | What it does | Default |
|---|---|---|
ShowEarlySignals |
Allow forming-bar arrow (repaints). Off by default, and best left there. Its own comment states that a forming-bar arrow repaints. | off |
Alert settings
| Setting | What it does | Default |
|---|---|---|
EnableAlerts |
Master alert switch. | on |
EnablePopup |
Popup alert. | on |
EnablePushNotify |
Push to mobile MetaTrader. | off |
EnableEmail |
Email alert. | off |
EnableSound |
Sound alert. | off |
SoundFile |
Sound file name. | alert.wav |

Where this one belongs
Threshold crossings suit instruments that oscillate rather than trend relentlessly. The majors on H1 and H4 work well. On M5 the oscillator crosses 30 and 70 many times a session, and the cooldown carries most of the load. On the daily chart crossings become rare enough that each one is worth waiting for.
Limits worth knowing
A strong trend pins RSI at one end. Crossings then mark pauses in the move rather than turns against it.
The thresholds are fixed numbers, so the same 30 means something different on a quiet pair and a volatile one.
Turning on early signals trades reliability for speed, and the arrows you see mid-bar may not survive the close.
Copy the compiled RSI Arrow 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 RSI Arrow Indicator: Control premium on Wikipedia, Wyckoff Analysis Articles at StockCharts ChartSchool.
Download the RSI Arrow Indicator for MT4 and MT5
The zip holds the compiled RSI Arrow 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
What does ShowEarlySignals actually change?
It allows an arrow on the bar still forming. The input’s own comment says plainly that this repaints, and the default is `false` for that reason. With it off, an arrow appears only once its bar has closed and then stays put. With it on you see signals sooner and some of them disappear.
Why does the arrow sit on the RSI line rather than beside a candle?
Because this build lives in a separate window scaled 0 to 100. BuyBuf and SellBuf both receive cur, the current RSI reading, so the marker plots at the oscillator’s own value. That lines the arrows up with the 30 and 70 level lines, which is where the crossing happened.
What is SignalCooldown stopping?
A cluster of identical arrows. RSI hovering right on a threshold can cross it several times within a few bars, and each crossing would otherwise qualify. At `3` the code blocks a second same-side arrow for three bars. Raise it on fast charts where the oscillator tends to straddle a level.
Should I move OversoldLevel from 30?
Only with a reason. Thirty and seventy are Wilder’s conventional bands and most published RSI work assumes them. Moving to 20 and 80 makes signals rarer and each one more stretched, which suits mean-reversion traders. Moving inward produces many more crossings of much less significance.
Are results guaranteed?
No. Trading involves risk. Results are not guaranteed; past performance is not indicative of future results. Use the RSI Arrow Indicator as one input. Always backtest before trading live.
Category: this is part of our Oscillators collection. Browse more Oscillators for MetaTrader, or explore every MT4 indicator and MT5 indicator on the site.
External references
- For background on this concept, see Control premium on Wikipedia.
- For broader market context, see Wyckoff Analysis Articles at StockCharts ChartSchool.
