Skip to main content

What you’ll build

A screen that reads RSI and MACD for a pool straight from the API, without downloading candles and computing the indicator yourself. The server computes it from the same OHLCV candles that pool OHLCV returns, so the numbers line up with the charts you already draw. By the end you will have:
  • A curl that returns hourly RSI for a pool, with no key
  • A Python script that flags overbought and oversold pools and MACD crosses
  • A clear picture of which indicator needs which plan

Which plan you need

Paid plans call https://api-pro.dexpaprika.com with the key as the entire Authorization header. Compare plans on pricing and get a key in console.dexpaprika.com.

The call

Hourly RSI for the USDC/WETH pool on Uniswap v3, last six hours, no key:
Values come oldest first, one per candle. timestamp is the candle’s open time, and only completed candles count, so the candle that is still open has no value yet. parameters echoes what was used, defaults included. Set interval every time. It defaults to 24h, and on the free tier a daily series cut to the last 7 days is six values.

The five indicators

Replace rsi in the path with the indicator you want. Pools use /networks/{network}/pools/{pool_address}/indicators/{name}, tokens use /networks/{network}/tokens/{token_address}/indicators/{name}. Every indicator also takes: With start, limit counts forward from it. When the range holds more candles than limit, has_next_page is true and next_cursor continues it.

Screen a pool in Python

RSI over 70 is commonly read as overbought and under 30 as oversold. A MACD histogram that changes sign means MACD crossed its signal line. This script checks both on the last completed hourly candle:
Two requests, two credits. A screen over many pools reaches the keyless rate limit quickly; a free key raises it.

Four things that will surprise you

The same candle can get a different value from a different start. RSI, EMA and MACD are smoothed: each value carries some weight from every candle before it. The API reads only the candles each indicator strictly needs before your start, 14 for RSI(14), so a short range starts the smoothing late. Hourly RSI(14) for one 09:00 candle on the pool above, measured on 12 October: Start at least ten periods before the first value you use, 140 candles for RSI(14), and keep the tail. On the free tier the 7-day window holds 168 hourly candles, which is enough at 1h and shorter intervals, but only seven daily ones, so daily RSI and EMA need a paid plan to settle. The same effect explains differences from a charting site that has years of history behind each point. A short range on a quiet pool can fail. The warm-up is measured in time, period intervals back, so minutes without a trade leave it short of candles. interval=1m&limit=2 on the pool above answered 400 with insufficient data: rsi needs at least 15 candles. Received 12, and limit=50 worked. Ask for more values than you need. Quiet intervals have no candle, so they have no value. Indicators are computed over the candles that exist. On a thinly traded pool at 5m, the period of an RSI spans more wall-clock time than you would expect. Pool indicators follow the pool’s OHLCV price, with no way to flip it. An EMA, Bollinger Band or VWAP on a pool is on the same price as pool OHLCV with its default inversed=false, and the indicator endpoints take no inversed. For one USD series across every pool a token trades in, use the token indicators, built on token OHLCV.

Errors

A paid-only request without a paid key looks like this:
More on error handling.

Where to go next