ATR API — Dynamic Stop-Loss Sizing

Use ATR for volatility-aware stops, position sizing, and breakout detection. Live values across 7 timeframes for any supported symbol.

No credit card$2.50 PAYG credit on sign up
15+API endpoints
42Indicator series
M1–D17 timeframes
$2.50PAYG starting credit
Why TickAtlas

What is the ATR API?

The Average True Range measures market volatility — the average of the true price range over 14 periods. A higher ATR means wider candles; a lower ATR means tighter consolidation. Systematic traders use ATR to set stop-losses proportional to current volatility (e.g., "stop = 1.5x ATR below entry") rather than arbitrary pip values. TickAtlas pre-calculates ATR_14 and ATR_7 from our live data, so your bot can compute position sizes and stop levels in real time without touching raw candle history.

Pre-Calculated, Redis-Cached

Indicator values are computed server-side on every new candle. Your app queries the result — no TA library, no candle history needed.

7 Timeframes

M1, M5, M15, M30, H1, H4, D1 — the same endpoint serves scalpers and position traders alike.

Forex, Crypto, Commodities

EURUSD, GBPUSD, XAUUSD, BTCUSD, USDJPY — data available for every symbol in our data.

One Request. Instant Data.

REQUEST
curl -X GET \
  "https://tickatlas.com/v1/indicator?symbol=EURUSD&indicator=ATR_14&timeframe=H1" \
  -H "X-API-Key: YOUR_API_KEY"
200 OK
{
  "success": true,
  "data": {
    "symbol": "EURUSD",
    "timeframe": "H1",
    "indicator": "ATR_14",
    "value": 0.00125,
    "bid": 1.08401,
    "ask": 1.08414,
    "updated_at": 1711548000,
    "server_time": "2024-03-27T14:00:00+00:00"
  }
}

Volatility-Adjusted Stops in One Call

cURL Request
curl -H "X-API-Key: YOUR_KEY" "https://tickatlas.com/v1/indicator?symbol=EURUSD&indicator=ATR_14&timeframe=H1"
Python ATR-based stop-loss calculation
import requests

r = requests.get(
    "https://tickatlas.com/v1/indicator",
    headers={"X-API-Key": "YOUR_KEY"},
    params={"symbol": "EURUSD", "indicator": "ATR_14", "timeframe": "H1"},
)
atr = r.json()["data"]["value"]

# ATR-based stops: 2x ATR risk, 3x ATR target
entry = 1.0850
stop_loss = entry - 2 * atr
take_profit = entry + 3 * atr
print(stop_loss, take_profit)
200 OK Response
{
  "success": true,
  "data": {
    "symbol": "EURUSD",
    "timeframe": "H1",
    "indicator": "ATR_14",
    "value": 0.00121,
    "bid": 1.08401,
    "ask": 1.08414,
    "updated_at": 1711548000,
    "server_time": "2024-03-27T14:00:00+00:00"
  }
}

Available ATR indicators

  • ATR_14 — 14-period ATR (Wilder's default)
  • ATR_7 — 7-period ATR (shorter-term volatility)

Common ATR stop multiples:

Scalping: 1.0–1.5x ATR

Swing: 1.5–2.0x ATR

Position: 2.0–3.0x ATR

Plug into any stack

  • ChatGPT Custom GPTs
  • Claude Tools
  • Python / pandas
  • Node.js
  • Discord bots
  • Slack webhooks
  • n8n
  • Zapier
  • Google Sheets
Pricing

Start on pay-as-you-go, upgrade when the traffic justifies it.

Every new account starts with $2.50 of pay-as-you-go credit and no card. Monthly plans add a flat monthly price, WebSocket streaming and support.

Pay as you go
$2.50 credit No card required to start
  • $2.50 of credit included
  • Every REST endpoint except raw ticks
  • No card required, no overage
  • 10 API keys
See plan details
Starter
$29 per month · 10,000 requests/day · 120/min
  • Every REST endpoint except raw ticks
  • WebSocket streaming, 5 symbols
  • Released calendar actuals
  • Email support
  • 3 API keys
See plan details
Frequently asked questions

What developers ask first.

Straight answers on limits, coverage and how the endpoint behaves in production.

How does the API value for ATR relate to pips or price units?

ATR is returned in the native price unit of the symbol. For EURUSD, a value of 0.00085 = 8.5 pips. For XAUUSD, a value of 8.42 = $8.42 per ounce. The bid and ask fields in the same response show the price scale for reference.

What's the difference between ATR_14 and ATR_7?

ATR_14 uses Wilder's 14-period smoothing — the standard. ATR_7 reacts more quickly to recent price spikes, making it useful for detecting short-term volatility surges before they fully propagate into ATR_14.

Can I use ATR for position sizing, not just stops?

Yes — ATR-based position sizing (risk = fixed $ amount / ATR stop distance) is a standard approach. Query ATR from the API, apply your risk-per-trade formula in your bot, and size positions accordingly on each trade.

Does ATR behave differently near market open/close?

ATR tends to be higher near London and New York opens due to increased volatility. On M1 and M5 timeframes this is especially noticeable. The 14-period smoothing reduces session-boundary distortion on higher timeframes like H1 and H4.

Start building

Start Building in 5 Minutes

Sign up, grab your API key, make your first request.

Every new account starts with $2.50 of pay-as-you-go credit. No card required.