Analysis 10 min read

Top 10 Technical Indicators Every Trading Bot Needs

A ranked breakdown of the 10 most effective technical indicators for algorithmic trading, with API examples and strategy tips for each one.

12Sections
10Code samples
10Min read
AnalysisCategory

Not all indicators are created equal for automation. Some produce clean, programmable signals. Others require subjective interpretation that only a human can provide. This list ranks the 10 indicators that work best when you hand them to a bot, with real API examples from the TickAtlas API.

1. RSI (Relative Strength Index)

Why it is #1: Clean numerical output (0-100), universally understood thresholds (30/70), and works across all timeframes and instruments. Every bot should start here.

Python 1. RSI (Relative Strength Index)
# Fetch RSI for any symbol
import requests

resp = requests.get("https://tickatlas.com/v1/indicators", params={
    "symbol": "EURUSD", "timeframe": "H1"
}, headers={"X-API-Key": API_KEY})

rsi = resp.json()["data"]["indicators"]["RSI_14"]
# Returns: 34.7

RSI API Reference

2. MACD (Moving Average Convergence Divergence)

Why it matters: MACD captures both trend direction and momentum in a single indicator. The histogram crossing zero is one of the most reliable programmable signals.

JSON 2. MACD (Moving Average Convergence Divergence)
// data.indicators from GET /v1/indicators?symbol=EURUSD&timeframe=H1
{
  "MACD_main": 0.00045,
  "MACD_signal": 0.00032,
  "MACD_hist": 0.00013
}
// Bot logic: histogram > 0 = bullish momentum

MACD API Reference

3. Bollinger Bands

Why it matters: Provides dynamic support/resistance levels that adapt to volatility. The bandwidth value is excellent for detecting volatility squeezes that precede big moves.

JSON 3. Bollinger Bands
// data.indicators from GET /v1/indicators?symbol=EURUSD&timeframe=H1
{
  "BB_upper": 1.0892,
  "BB_middle": 1.0856,
  "BB_lower": 1.0820,
  "BB_width": 0.0066
}
// Bot logic: price < lower band + RSI < 30 = mean reversion buy

Bollinger Bands API Reference | Developer Guide

4. ATR (Average True Range)

Why it matters: Not a directional indicator — ATR measures volatility. Use it to set dynamic stop losses and calculate position sizes. Essential for risk management.

Python 4. ATR (Average True Range)
# Dynamic stop loss using ATR
atr = resp.json()["data"]["indicators"]["ATR_14"]
stop_loss = entry_price - (2.0 * atr)  # 2x ATR below entry
take_profit = entry_price + (3.0 * atr)  # 3x ATR above entry

ATR API Reference

5. ADX (Average Directional Index)

Why it matters: Tells you whether the market is trending or ranging. ADX above 25 means a trend is present; below 20 means it is range-bound. This one filter alone prevents your trend-following bot from getting chopped up in sideways markets.

Python 5. ADX (Average Directional Index)
# Only trade trend strategies when ADX confirms a trend
adx = resp.json()["data"]["indicators"]["ADX"]
if adx > 25:
    # Market is trending — use MACD/EMA crossover strategy
    pass
else:
    # Market is ranging — use RSI mean reversion strategy
    pass

ADX Deep Dive | ADX API Reference

6. EMA (Exponential Moving Average)

Why it matters: Faster than SMA, the EMA reacts to recent price changes more quickly. A fast/slow EMA crossover — the API publishes the 10, 20 and 50 period EMAs — is one of the simplest and most effective trend-following signals.

Shell 6. EMA (Exponential Moving Average)
# EMA crossover detection
ema_10 = indicators["EMA_10"]
ema_20 = indicators["EMA_20"]

if ema_10 > ema_20:
    trend = "BULLISH"
elif ema_10 < ema_20:
    trend = "BEARISH"

EMA API Reference

7. Stochastic Oscillator

Why it matters: Similar to RSI but with a signal line crossover component. The %K/%D crossover in oversold/overbought zones produces clean entry signals, especially on higher timeframes.

JSON 7. Stochastic Oscillator
// data.indicators from GET /v1/indicators?symbol=EURUSD&timeframe=H1
{
  "Stochastic_K": 18.5,
  "Stochastic_D": 22.1
}
// Bot logic: %K crosses above %D in oversold zone = buy

Stochastic API Reference

8. Ichimoku Cloud

Why it matters: A complete trading system in one indicator. It provides trend direction, support/resistance, and momentum all at once. Complex for humans to read, but perfect for a bot. The API publishes three of its lines — Tenkan-sen, Kijun-sen and Senkou Span A.

Shell 8. Ichimoku Cloud
# Ichimoku trend filter
tenkan = indicators["Ichimoku_tenkan"]
kijun = indicators["Ichimoku_kijun"]
senkou_a = indicators["Ichimoku_senkou_a"]

# Span A, Tenkan and Kijun are published; Span B is not — derive it from
# /v1/ohlc if you need the full cloud (see the Ichimoku guide below).
if current_price > senkou_a and tenkan > kijun:
    signal = "STRONG_BULLISH"

Ichimoku Automation Guide | API Reference

9. OBV (On-Balance Volume)

Why it matters: Volume confirms price moves. Rising OBV with rising price confirms the trend. Divergence between OBV and price often precedes reversals. Essential for filtering false breakouts.

Python 9. OBV (On-Balance Volume)
# OBV divergence detection — the API returns the current value, so pull the
# previous one from the history endpoint.
series = requests.get("https://tickatlas.com/v1/indicator/history", params={
    "symbol": "EURUSD", "indicator": "OBV", "timeframe": "H1", "limit": 2
}, headers={"X-API-Key": API_KEY}).json()["data"]["series"]

obv_rising = series[-1]["value"] > series[-2]["value"]
price_rising = current_price > previous_price

if price_rising and not obv_rising:
    print("Warning: bearish OBV divergence — trend may reverse")

OBV API Reference

10. Parabolic SAR

Why it matters: Provides clear trailing stop levels. When the dots flip from below to above price, it signals a trend change. Excellent as a trailing stop mechanism for bots that need to ride trends.

Shell 10. Parabolic SAR
# Parabolic SAR trailing stop
sar = indicators["SAR"]
if current_price > sar:
    # Uptrend — SAR is the trailing stop level
    stop_loss = sar
else:
    # Downtrend signal — exit long positions
    signal = "EXIT_LONG"

Parabolic SAR API Reference

How to Combine Them

Do not use all 10 at once. Pick 2-3 indicators from different families for a balanced strategy:

  • Trend + Momentum: EMA crossover + RSI confirmation
  • Volatility + Oscillator: Bollinger Bands + Stochastic
  • Trend filter + Entry: ADX trend filter + MACD signal crossover
  • All-in-one: Ichimoku for direction + ATR for position sizing

One /v1/indicators call returns all 42 indicators for a symbol and timeframe, so fetch once and read the keys you need from the flat map. Narrow it with category (trend, oscillator, volatility, volume), or use /v1/multi when you need several symbols in one request.

Further Reading

Run this against live data.

Every account starts pay-as-you-go with $2.50 of credit and no card. Paste the key into the samples above and the requests work unchanged.

Prefer the API to the article

Build it instead of reading about it.

Create a key, run the first request, then extend one layer at a time. Every account starts pay-as-you-go with $2.50 of credit — no card required.