Skip to main content

What is RSI? A Futures Trader's Guide

TL;DR

The Relative Strength Index (RSI) is a momentum oscillator that measures the speed and magnitude of recent price changes on a 0–100 scale. Readings above 70 traditionally flag overbought conditions, below 30 oversold. For futures traders, RSI works best as a trend filter and divergence tool, not a blunt reversal signal.

The plain-English definition

RSI compares the size of recent up-candles to the size of recent down-candles over a lookback period (default: 14 bars). If buyers are dominating by a wide margin, RSI climbs toward 100. If sellers are dominating, it falls toward 0.

Developed by J. Welles Wilder Jr. in 1978, RSI has become one of the three or four indicators every trader has heard of — which is both its strength (it's well-studied) and its weakness (it's heavily front-run).

How RSI is calculated

You do not need to memorize this, but understanding it prevents you from misusing it.

RS = (Average Gain over N periods) / (Average Loss over N periods)
RSI = 100 − (100 / (1 + RS))

The key point: RSI is a ratio, not a price. It tells you the balance of buying vs. selling pressure, not how far price has moved. A stock that rallied 50% over a month can still print a low RSI if the rally was steady; a flat chop can print extreme RSI if one day's range dwarfs the rest.

How to read RSI

Overbought / oversold zones

  • RSI > 70 → "overbought" (momentum has been extreme to the upside)
  • RSI < 30 → "oversold" (momentum has been extreme to the downside)

These are not sell and buy signals on their own. A strong trend will stay overbought for days. Fading every 70-print in a bull market is a great way to donate to your broker.

The trend-aware rule: In an uptrend, RSI tends to stay between 40 and 90. In a downtrend, between 10 and 60. When a trending market fails to reach the opposite zone — e.g., a downtrend's RSI rally dies at 55 — that's a continuation signal, not a reversal.

Divergence

Divergence is RSI's most valuable pattern.

  • Bearish divergence: price prints a higher high, RSI prints a lower high. Momentum is fading.
  • Bullish divergence: price prints a lower low, RSI prints a higher low. Selling pressure is exhausted.

Divergence does not give you an entry — it gives you a heads-up that the existing trend is weakening. Wait for a structure break before acting.

Settings that actually work for futures

The default is 14 periods. It's fine. Here's how different periods behave:

PeriodBehaviorWho uses it
7Faster, more signals, more noiseScalpers on 1m/5m
14Classic, balancedMost traders
21Smoother, fewer signalsSwing traders

For index futures (ES, NQ) on intraday timeframes, 14 on a 5-minute chart is a reasonable default. For day trading breakouts, some traders prefer a 9-period RSI paired with structure breaks.

Do not keep tweaking the period looking for a "magic" setting. It doesn't exist. Pick a setting, test it, stick with it.

Common mistakes

  1. Shorting every 70-print. The indicator is not a standalone sell signal. Combine with trend context or structure.
  2. Buying every 30-print in a downtrend. Same mistake, inverted.
  3. Ignoring the timeframe. RSI on a 1-minute chart and a daily chart are telling completely different stories.
  4. Over-optimizing the period. Curve-fitting to historical data destroys out-of-sample results.
  5. Using RSI alone. It's a filter, not a strategy. Pair it with price action, VWAP, or a trend filter like the 200 EMA.

RSI in TradingView

TradingView ships with RSI built in:

  1. Open a chart, click Indicators, search "Relative Strength Index"
  2. Apply, then adjust the period in settings (default 14)
  3. Right-click the indicator → Add alert to trigger on conditions like "RSI crosses below 30"

For Pine Script users, RSI is a one-liner:

//@version=6
indicator("Simple RSI Alert", overlay=false)
length = input.int(14, "RSI Length")
rsiValue = ta.rsi(close, length)
plot(rsiValue, title="RSI", color=color.orange)
hline(70, "Overbought", color=color.red)
hline(30, "Oversold", color=color.green)

alertcondition(ta.crossunder(rsiValue, 30), title="RSI Oversold", message="RSI crossed below 30")
alertcondition(ta.crossover(rsiValue, 70), title="RSI Overbought", message="RSI crossed above 70")

RSI in NinjaTrader

NT8 has RSI as a built-in indicator:

  1. Right-click chart → Indicators…
  2. Search "RSI", add it
  3. Set period (14) and the levels (30/70)
  4. To fire an alert, use the Alerts tab and condition on the RSI value

NinjaScript users can access RSI(14)[0] inside any strategy for the current bar's value.

How to automate RSI signals with CrossTrade

The pipeline is simple: TradingView fires a webhook when your RSI condition hits → CrossTrade translates it → NinjaTrader places the order.

  1. In the Pine Script above, replace alertcondition() with an alert() call that sends a CrossTrade-formatted payload.
  2. Create an alert in TradingView set to "any alert() function call," pasting your CrossTrade webhook URL into the Notifications tab.
  3. Example payload for a long entry on RSI oversold:
key=YOUR-SECRET-KEY;
command=place;
account=Sim101;
instrument=ES 03-26;
action=buy;
qty=1;
order_type=market;
tif=day;

Test in sim first. Always test in sim first.

Frequently Asked Questions

Is RSI good for futures trading?

Yes. RSI works on any liquid market — ES, NQ, CL, GC — and is especially useful as a divergence tool on 5-minute and 15-minute charts. Avoid using it as a standalone reversal signal in strong trends.

What's the best RSI setting for day trading?

The default 14-period RSI works for most intraday setups. Scalpers sometimes drop to 7 or 9 for faster signals; swing traders sometimes go to 21 for smoother readings. There is no universally 'best' setting — pick one and commit.

What's the difference between RSI and Stochastic?

Both are momentum oscillators bounded 0–100, but RSI measures the ratio of gains to losses while Stochastic measures where the close sits within a recent high-low range. Stochastic reacts faster; RSI is smoother and better for divergence.

Can RSI stay overbought for a long time?

Absolutely. In strong uptrends, RSI can hold above 70 for days or weeks. Shorting every 70-print is one of the most expensive mistakes new traders make. Treat extreme readings as 'trend confirmation' until price structure breaks.

How do I automate RSI alerts with CrossTrade?

Write a Pine Script that fires an alert() call when your RSI condition triggers, format the alert message as a CrossTrade webhook payload, then point the alert's webhook URL at your CrossTrade endpoint. The /learn/pine-script/webhook-alerts guide covers the full setup.