If you've ever wanted institutional-grade technical analysis updating live in your Excel spreadsheet, RTI functions are exactly what you've been waiting for. RTI — short for Real-Time Indicator — is a family of MarketXLS functions that compute technical indicators on live streaming market data, directly inside your cells.
No manual refresh. No API calls. No coding. Just type a formula like =RTI_RSI("AAPL", 5, 14, "Last") and watch the 14-period RSI update every few seconds as new price data flows in from QuoteMedia's institutional-grade streaming feed.
This guide covers every RTI function available in MarketXLS, explains the technical concepts behind each indicator, and shows you how to combine them into powerful real-time trading dashboards.
How RTI Functions Work
Before diving into individual functions, it helps to understand the architecture behind them. RTI functions are different from traditional MarketXLS functions in several important ways:
Traditional functions make an API call each time you calculate, fetch a snapshot of data, and return a static result. They're great for end-of-day analysis and historical research.
RTI functions tap into a live streaming connection. Here's what happens behind the scenes:
- You enter the formula — MarketXLS registers your symbol for real-time streaming
- QuoteMedia streams live ticks — Price updates arrive every few seconds via a persistent connection
- Data is cached in memory — Ticks are aggregated into interval bars (1-minute, 5-minute, 15-minute, or 60-minute)
- Indicators are computed on each refresh — Your formula recalculates using the latest cached data
- The cell updates automatically — No manual refresh, no button clicks
This means you can have dozens of RTI formulas across your spreadsheet, all updating simultaneously, all computing on the same shared data stream. It's the same architecture used by professional trading platforms — just delivered through Excel.
Prerequisites
Before using RTI functions, make sure:
- MarketXLS is installed and active in Excel
- QuoteMedia streaming is configured — Go to Settings > Data Subscriptions > QuoteMedia
- Excel is in automatic calculation mode — Formulas > Calculation Options > Automatic
- Internet connection is active for live data streaming
Common Parameters
Most RTI functions share these parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
symbol | String | Required | Stock ticker symbol — "AAPL", "MSFT", "TSLA", etc. |
interval | Integer | 5 | Bar interval in minutes: 1, 5, 15, or 60 |
lookback | Integer | varies | Number of historical periods for the calculation (max 200) |
field | String | "Last" | Price field: "Last", "Open", "High", "Low", "Close" |
index | Integer | 0 | Bar offset: 0 = current/latest, 1 = previous bar, 2 = two bars ago |
The index parameter is particularly powerful — it lets you access not just the current indicator value, but also historical values. For example, =RTI_RSI("AAPL", 5, 14, "Last", 1) gives you the RSI from the previous bar, which you can compare against the current bar to detect crossovers.
Price & Volume Functions
These are the foundation — raw streaming price and volume data for any symbol.
RTI_Last — Latest Price
Returns the most recent traded price, updating in real time.
=RTI_Last("AAPL")
=RTI_Last("AAPL", 5) ' 5-minute interval
=RTI_Last("AAPL", 5, 1) ' Previous bar's last price
RTI_Open / RTI_High / RTI_Low / RTI_Close
OHLC data for the current (or historical) interval bar.
=RTI_Open("AAPL", 5) ' Open of current 5-min bar
=RTI_High("AAPL", 15) ' High of current 15-min bar
=RTI_Low("AAPL", 5, 1) ' Low of the previous 5-min bar
=RTI_Close("AAPL", 60) ' Close of current hourly bar
RTI_Volume — Bar Volume
=RTI_Volume("AAPL", 5) ' Volume in current 5-min bar
=RTI_Volume("TSLA", 1) ' Volume in current 1-min bar
RTI_Time — Bar Timestamp
=RTI_Time("AAPL", 5) ' Timestamp of current 5-min bar
RTI_Stream_Value — Generic Field Accessor
A flexible function that can retrieve any available streaming metric.
=RTI_Stream_Value("AAPL", 5, 50, "Last", 0)
Moving Average Functions
Moving averages smooth price data to identify trends. They're the building blocks of many trading strategies.
RTI_SMA — Simple Moving Average
The SMA gives equal weight to all periods. A 20-period SMA on 5-minute bars averages the last 20 five-minute closing prices.
=RTI_SMA("AAPL", 5, 20, "Last") ' 20-period SMA on 5-min bars
=RTI_SMA("TSLA", 1, 50, "Last") ' 50-period SMA on 1-min bars
=RTI_SMA("MSFT", 15, 9, "Last", 1) ' 9-SMA on 15-min, previous bar
Trading application: When price crosses above the SMA, it suggests bullish momentum. The 9/20 SMA crossover is a classic intraday signal.
RTI_EMA — Exponential Moving Average
The EMA places more weight on recent prices, making it more responsive to new information than the SMA. Traders use EMAs for faster signal generation.
=RTI_EMA("AAPL", 5, 12, "Last") ' 12-period EMA (fast)
=RTI_EMA("AAPL", 5, 26, "Last") ' 26-period EMA (slow)
=RTI_EMA("SPY", 1, 9, "Last") ' 9 EMA on 1-min for scalping
Trading application: The 12/26 EMA pair forms the basis of the MACD indicator. A faster EMA crossing above a slower EMA signals bullish momentum.
Momentum Indicators
Momentum indicators measure the speed and strength of price movements. They help identify overbought/oversold conditions and potential reversals.
RTI_RSI — Relative Strength Index
RSI measures the magnitude of recent price changes on a scale of 0 to 100. Developed by J. Welles Wilder, it's one of the most widely used technical indicators in the world.
- Above 70: Overbought — price may be due for a pullback
- Below 30: Oversold — price may be due for a bounce
- 50 level: Often acts as support/resistance for the RSI itself
=RTI_RSI("AAPL", 5, 14, "Last") ' Standard 14-period RSI
=RTI_RSI("TSLA", 1, 7, "Last") ' Fast 7-period RSI for scalping
Strategy formula — Auto-label conditions:
=IF(RTI_RSI("AAPL",5,14,"Last")>70, "OVERBOUGHT",
IF(RTI_RSI("AAPL",5,14,"Last")<30, "OVERSOLD", "NEUTRAL"))
RTI_MACD — Moving Average Convergence Divergence
MACD reveals changes in the strength, direction, momentum, and duration of a trend. It consists of three components:
- MACD Line: Difference between the 12-period and 26-period EMA
- Signal Line: 9-period EMA of the MACD line
- Histogram: MACD line minus signal line (visual representation of momentum)
When the MACD line crosses above the signal line, it generates a bullish signal. When it crosses below, it's bearish.
=RTI_MACD("AAPL", 5, 50, "Last", "macd") ' MACD line
=RTI_MACD("AAPL", 5, 50, "Last", "signal") ' Signal line
=RTI_MACD("AAPL", 5, 50, "Last", "histogram") ' Histogram
Convenience functions (no component parameter needed):
=RTI_MACD_Signal("AAPL") ' Signal line with defaults
=RTI_MACD_Histogram("AAPL") ' Histogram with defaults
Strategy formula — MACD crossover detection:
=IF(RTI_MACD("AAPL",5,50,"Last","macd") >
RTI_MACD("AAPL",5,50,"Last","signal"),
"BUY SIGNAL", "SELL SIGNAL")
Important: MACD needs at least 35 data points (26 for the slow EMA + 9 for the signal). Set lookback to 50 or higher to ensure enough data.
RTI_Stochastic — Stochastic Oscillator
The Stochastic Oscillator compares a stock's closing price to its price range over N periods. It returns two lines:
- %K (fast line): The raw stochastic value
- %D (slow/signal line): A 3-period SMA of %K
Both lines move between 0 and 100. Readings above 80 suggest overbought conditions; below 20 suggest oversold. Crossovers of %K and %D generate trading signals.
=RTI_Stochastic("AAPL", 5, 14, "k") ' %K line
=RTI_Stochastic("AAPL", 5, 14, "d") ' %D line
Strategy formula — Crossover signal:
=IF(RTI_Stochastic("AAPL",5,14,"k") >
RTI_Stochastic("AAPL",5,14,"d"),
"BULLISH", "BEARISH")
Volatility Indicators
Volatility indicators measure how much and how fast prices are moving. They're essential for position sizing, stop-loss placement, and identifying potential breakouts.
RTI_BollingerBands — Bollinger Bands
Developed by John Bollinger, this indicator plots bands at two standard deviations above and below a moving average. The bands expand during high volatility and contract during low volatility — a contraction (called a "squeeze") often precedes a significant price move.
Three components:
- Upper Band: SMA + 2 standard deviations
- Middle Band: 20-period SMA
- Lower Band: SMA - 2 standard deviations
=RTI_BollingerBands("AAPL", 5, 20, "Last", "upper") ' Upper band
=RTI_BollingerBands("AAPL", 5, 20, "Last", "middle") ' Middle band
=RTI_BollingerBands("AAPL", 5, 20, "Last", "lower") ' Lower band
Bandwidth (volatility measure):
=RTI_BollingerBands("AAPL",5,20,"Last","upper") -
RTI_BollingerBands("AAPL",5,20,"Last","lower")
Strategy formula — Bollinger squeeze detection:
=IF((RTI_BollingerBands("AAPL",5,20,"Last","upper") -
RTI_BollingerBands("AAPL",5,20,"Last","lower")) /
RTI_BollingerBands("AAPL",5,20,"Last","middle") < 0.02,
"SQUEEZE - BREAKOUT IMMINENT", "NORMAL")
RTI_ATR — Average True Range
ATR measures market volatility by calculating the average range of price bars over N periods, accounting for gaps between bars. Higher ATR means more volatile price action.
ATR is invaluable for:
- Setting stop-losses — Use a multiple of ATR (e.g., 2x ATR) for dynamic stops
- Position sizing — Smaller positions in high-ATR (volatile) stocks
- Identifying breakouts — ATR expansion often signals the start of a new trend
=RTI_ATR("AAPL", 5, 14) ' 14-period ATR on 5-min bars
=RTI_ATR("TSLA", 1, 14) ' ATR on 1-min (higher for volatile stocks)
Strategy formula — Dynamic stop-loss:
=RTI_Last("AAPL") - 2 * RTI_ATR("AAPL", 5, 14) ' Stop at 2x ATR below price
Trend Indicators
RTI_ADX — Average Directional Index
ADX measures the strength of a trend on a 0-100 scale — not the direction. A rising ADX means the trend is getting stronger, whether it's up or down.
- ADX > 25: Strong trend — use trend-following strategies
- ADX < 20: No trend / ranging market — use mean-reversion strategies
- ADX 20-25: Trend may be developing
=RTI_ADX("AAPL", 5, 14) ' 14-period ADX
Strategy formula — Market regime detection:
=IF(RTI_ADX("AAPL",5,14) > 25, "TRENDING", "RANGING")
This is incredibly useful because different strategies work in different market conditions. Trend-following strategies (moving average crossovers, breakouts) work when ADX is high. Mean-reversion strategies (RSI extremes, Bollinger band touches) work when ADX is low.
Volume Indicators
Volume confirms price movements. A price move on high volume is more significant than the same move on low volume. These indicators quantify that relationship.
RTI_VWAP — Volume Weighted Average Price
VWAP is the single most important intraday benchmark used by institutional traders. It represents the average price weighted by volume throughout the trading day.
- Price above VWAP: Bullish bias — buyers are in control
- Price below VWAP: Bearish bias — sellers are in control
- Price at VWAP: Fair value for the day
Institutions often use VWAP to evaluate execution quality. If they bought below VWAP, they got a good fill.
=RTI_VWAP("AAPL", 5) ' Current VWAP
=RTI_Last("AAPL") - RTI_VWAP("AAPL", 5) ' Distance from VWAP
Strategy formula — VWAP position:
=IF(RTI_Last("AAPL") > RTI_VWAP("AAPL",5),
"ABOVE VWAP", "BELOW VWAP")
RTI_OBV — On-Balance Volume
OBV is a cumulative volume indicator that adds volume on up-bars and subtracts volume on down-bars. The theory: volume precedes price — OBV often breaks out before price does.
- Rising OBV with rising price: Confirms the uptrend
- Rising OBV with flat/falling price: Accumulation — bullish divergence
- Falling OBV with rising price: Distribution — bearish divergence
=RTI_OBV("AAPL", 5) ' On-Balance Volume
RTI_MFI — Money Flow Index
MFI is essentially RSI applied to volume-weighted price data. It measures buying and selling pressure on a 0-100 scale.
- Above 80: Overbought with heavy volume — potential reversal
- Below 20: Oversold with heavy volume — potential bounce
- Divergence from price: Strong reversal signal
=RTI_MFI("AAPL", 5, 14) ' 14-period MFI
Strategy formula — Volume-confirmed overbought/oversold:
=IF(RTI_MFI("AAPL",5,14) > 80, "OVERBOUGHT (VOLUME CONFIRMED)",
IF(RTI_MFI("AAPL",5,14) < 20, "OVERSOLD (VOLUME CONFIRMED)", "NEUTRAL"))
RTI_AD — Accumulation/Distribution Line
The A/D line measures the cumulative flow of money into and out of a stock. It uses the position of the close within the bar's range, weighted by volume.
- Close near the high + high volume: Money flowing in (accumulation)
- Close near the low + high volume: Money flowing out (distribution)
=RTI_AD("AAPL", 5) ' Accumulation/Distribution line
Time-Based Functions
These functions let you reference specific moments in the trading day — perfect for measuring moves from the open, tracking specific time-of-day patterns, or comparing current price to earlier levels.
RTI_Price_At_Min / RTI_Volume_At_Min
Retrieve price or volume at a specific clock time.
=RTI_Price_At_Min("AAPL", "09:30") ' Price at market open
=RTI_Price_At_Min("AAPL", "10:00") ' Price at 10:00 AM
=RTI_Volume_At_Min("AAPL", "09:30") ' Volume at market open
RTI_Price_Change_From_Min / RTI_Price_ChangePct_From_Min
Measure how much price has moved since a specific time.
=RTI_Price_Change_From_Min("AAPL", "09:30") ' Dollar change from open
=RTI_Price_ChangePct_From_Min("AAPL", "09:30") ' Percent change from open
Relative Time Functions
Look back a specific number of minutes from the current time — no clock time needed.
=RTI_Price_X_Min_Ago("AAPL", 10) ' Price 10 minutes ago
=RTI_PriceChange_X_Min_Ago("AAPL", 10) ' Change in last 10 min
=RTI_PriceChangePct_X_Min_Ago("AAPL", 10) ' % change in last 10 min
=RTI_HighestPrice_in_X_Mins("AAPL", 30) ' 30-min high
=RTI_LowestPrice_in_X_Mins("AAPL", 30) ' 30-min low
30-minute trading range:
=RTI_HighestPrice_in_X_Mins("AAPL", 30) -
RTI_LowestPrice_in_X_Mins("AAPL", 30)
Building a Live Trading Dashboard
Here's how to combine multiple RTI functions into a comprehensive real-time dashboard. Enter a symbol in cell A2 (e.g., "AAPL") and use these formulas:
Price Panel
| Cell | Formula | Description |
|---|---|---|
| B2 | =RTI_Last(A2) | Current price |
| B3 | =RTI_Volume(A2, 5) | Current volume |
| B4 | =RTI_VWAP(A2, 5) | VWAP |
| B5 | =RTI_Last(A2) - RTI_VWAP(A2, 5) | Distance from VWAP |
Momentum Panel
| Cell | Formula | Description |
|---|---|---|
| C2 | =RTI_RSI(A2, 5, 14, "Last") | RSI (14) |
| C3 | =RTI_MACD(A2, 5, 50, "Last", "macd") | MACD Line |
| C4 | =RTI_MACD(A2, 5, 50, "Last", "signal") | MACD Signal |
| C5 | =RTI_Stochastic(A2, 5, 14, "k") | Stochastic %K |
Trend & Volatility Panel
| Cell | Formula | Description |
|---|---|---|
| D2 | =RTI_SMA(A2, 5, 20, "Last") | 20-SMA |
| D3 | =RTI_EMA(A2, 5, 12, "Last") | 12-EMA |
| D4 | =RTI_ATR(A2, 5, 14) | ATR (14) |
| D5 | =RTI_ADX(A2, 5, 14) | ADX (14) |
Bollinger Bands Panel
| Cell | Formula | Description |
|---|---|---|
| E2 | =RTI_BollingerBands(A2, 5, 20, "Last", "upper") | Upper Band |
| E3 | =RTI_BollingerBands(A2, 5, 20, "Last", "middle") | Middle Band |
| E4 | =RTI_BollingerBands(A2, 5, 20, "Last", "lower") | Lower Band |
Volume Indicators Panel
| Cell | Formula | Description |
|---|---|---|
| F2 | =RTI_OBV(A2, 5) | On-Balance Volume |
| F3 | =RTI_MFI(A2, 5, 14) | Money Flow Index |
| F4 | =RTI_AD(A2, 5) | Accumulation/Distribution |
Ready-Made Strategy Formulas
Copy these formulas directly into your spreadsheet for instant signal detection:
RSI Overbought/Oversold:
=IF(RTI_RSI("AAPL",5,14,"Last")>70,"OVERBOUGHT",
IF(RTI_RSI("AAPL",5,14,"Last")<30,"OVERSOLD","NEUTRAL"))
MACD Crossover:
=IF(RTI_MACD("AAPL",5,50,"Last","macd") >
RTI_MACD("AAPL",5,50,"Last","signal"),
"BUY SIGNAL","SELL SIGNAL")
Bollinger Squeeze Alert:
=IF((RTI_BollingerBands("AAPL",5,20,"Last","upper") -
RTI_BollingerBands("AAPL",5,20,"Last","lower")) /
RTI_BollingerBands("AAPL",5,20,"Last","middle") < 0.02,
"SQUEEZE","NORMAL")
Trend Strength Filter:
=IF(RTI_ADX("AAPL",5,14)>25,"TRENDING","RANGING")
Dynamic Stop-Loss (2x ATR):
=RTI_Last("AAPL") - 2 * RTI_ATR("AAPL", 5, 14)
Momentum Score (RSI + Stochastic average):
=(RTI_RSI("AAPL",5,14,"Last") + RTI_Stochastic("AAPL",5,14,"k")) / 2
30-Minute Range Breakout:
=IF(RTI_Last("AAPL") > RTI_HighestPrice_in_X_Mins("AAPL",30),
"BREAKOUT UP",
IF(RTI_Last("AAPL") < RTI_LowestPrice_in_X_Mins("AAPL",30),
"BREAKOUT DOWN","IN RANGE"))
VWAP Mean Reversion:
=IF(RTI_Last("AAPL") < RTI_VWAP("AAPL",5) * 0.99,
"BELOW VWAP - POTENTIAL BUY","HOLD")
Complete Function Reference
| Function | Category | Description |
|---|---|---|
RTI_Last | Price | Latest traded price |
RTI_Open | Price | Open of current bar |
RTI_High | Price | High of current bar |
RTI_Low | Price | Low of current bar |
RTI_Close | Price | Close of current bar |
RTI_Volume | Price | Volume of current bar |
RTI_Time | Price | Timestamp of current bar |
RTI_Stream_Value | Price | Generic field accessor |
RTI_SMA | Moving Average | Simple Moving Average |
RTI_EMA | Moving Average | Exponential Moving Average |
RTI_RSI | Momentum | Relative Strength Index (0-100) |
RTI_MACD | Momentum | MACD line/signal/histogram |
RTI_MACD_Signal | Momentum | MACD signal line |
RTI_MACD_Histogram | Momentum | MACD histogram |
RTI_Stochastic | Momentum | Stochastic %K or %D (0-100) |
RTI_BollingerBands | Volatility | Bollinger upper/middle/lower |
RTI_ATR | Volatility | Average True Range |
RTI_ADX | Trend | Average Directional Index (0-100) |
RTI_VWAP | Volume | Volume Weighted Average Price |
RTI_OBV | Volume | On-Balance Volume |
RTI_MFI | Volume | Money Flow Index (0-100) |
RTI_AD | Volume | Accumulation/Distribution |
RTI_Price_At_Min | Time-Based | Price at specific time |
RTI_Volume_At_Min | Time-Based | Volume at specific time |
RTI_Price_Change_From_Min | Time-Based | Change since specific time |
RTI_Price_ChangePct_From_Min | Time-Based | % change since specific time |
RTI_Price_X_Min_Ago | Relative | Price X minutes ago |
RTI_PriceChange_X_Min_Ago | Relative | Change from X minutes ago |
RTI_PriceChangePct_X_Min_Ago | Relative | % change from X minutes ago |
RTI_HighestPrice_in_X_Mins | Relative | Highest in last X minutes |
RTI_LowestPrice_in_X_Mins | Relative | Lowest in last X minutes |
Tips for Best Results
- Use 5-minute intervals as your default — they balance responsiveness with data efficiency
- Set lookback to 50+ for MACD — it needs at least 35 bars for the slow EMA + signal calculation
- Functions show "Collecting data..." until enough bars accumulate — this is normal, just wait a few minutes
- Combine indicators for stronger signals — RSI + MACD agreement is more reliable than either alone
- Use the index parameter to look back at previous bars rather than creating many separate formulas
- ADX helps you choose your strategy — trend-following when ADX > 25, mean-reversion when ADX < 20
- VWAP is most meaningful intraday — it resets each trading day
RTI functions put the full power of institutional-grade technical analysis directly in your Excel spreadsheet. Whether you're building a multi-stock screener, a real-time alerting system, or a comprehensive trading dashboard, these functions give you everything you need — no coding required.
Ready to get started? Download MarketXLS and start building your real-time trading dashboard today.