Ultra Indicators
Systematic trading tools for volatility and trend identification (ATR, ADX, CCI, PSAR).
The Ultra Tier indicators are staples in algorithmic trading systems. They are less about "Buy/Sell" signals and more about measuring market state—is it trending? Is it volatile?
A measure of volatility introduced by Welles Wilder. It does not indicate price direction, only the degree of price movement. It decomposes the "True Range" of an asset for that period.
- Endpoint:
/api/indicators/atr - Method:
POST
| Name | Type | Default | Description |
|---|---|---|---|
period | integer | 14 | The smoothing period. |
Returns an array of numbers (the ATR value).
[ 250.5, 245.2, 260.8, ... ]- Volatility Measurement: Higher ATR means higher volatility.
- Stop Loss Sizing: Traders often place stop-losses at
Price - (2 * ATR)to avoid market noise.
[!TIP] A sudden spike in ATR often signals a breakout or a news event.
import { IndicatorsApi, CandlesApi } from "tickcatcher";
// 1. Get Candles
const candles = await new CandlesApi(config).basicCandles({ symbol: "SOLUSDT", timeframe: "1h", limit: 100 });
// 2. Calculate ATR
const values = await new IndicatorsApi(config).atr({
atrRequest: {
data: candles,
params: { period: 14 }
}
});
console.log(`Current ATR: ${values[values.length - 1]}`);Used to determine the strength of a trend, not the direction. It is often plotted alongside +DI and -DI lines (though this endpoint primarily returns the ADX value).
- Endpoint:
/api/indicators/adx - Method:
POST
| Name | Type | Default | Description |
|---|---|---|---|
period | integer | 14 | The calculation period. |
[
{
"adx": 25.5,
"pdi": 28.1,
"mdi": 15.2
}
]- < 20: Weak trend / Ranging. Strategies should focus on mean reversion.
- > 25: Strong trend. Trend-following strategies work best.
- > 50: Extremely strong trend. Be wary of exhaustion.
import { IndicatorsApi, CandlesApi } from "tickcatcher";
// 1. Get Candles
const candles = await new CandlesApi(config).basicCandles({ symbol: "SOLUSDT", timeframe: "1h", limit: 100 });
// 2. Calculate ADX
const values = await new IndicatorsApi(config).adx({
adxRequest: {
data: candles,
params: { period: 14 }
}
});
const last = values[values.length - 1];
console.log(`ADX Strength: ${last.adx}`);A versatile indicator used to identify a new trend or warn of extreme conditions. Unlike RSI, it is unbounded (can go above 100 or below -100).
- Endpoint:
/api/indicators/cci - Method:
POST
| Name | Type | Default | Description |
|---|---|---|---|
period | integer | 20 | The cycle period. |
Returns an array of numbers.
[ 95.5, 102.1, 88.4, ... ]- Check Points: +100 and -100 are the key levels.
- Signals: Moving above +100 suggests a strong uptrend. Moving below -100 suggests a strong downtrend.
import { IndicatorsApi, CandlesApi } from "tickcatcher";
// 1. Get Candles
const candles = await new CandlesApi(config).basicCandles({ symbol: "SOLUSDT", timeframe: "1h", limit: 100 });
// 2. Calculate CCI
const values = await new IndicatorsApi(config).cci({
cciRequest: {
data: candles,
params: { period: 20 }
}
});
console.log(`Current CCI: ${values[values.length - 1]}`);A trend-following indicator that plots points above or below prices. When the dots flip, it signals a potential reversal.
- Endpoint:
/api/indicators/psar - Method:
POST
| Name | Type | Default | Description |
|---|---|---|---|
step | number | 0.02 | The acceleration factor. |
max | number | 0.2 | The maximum acceleration factor. |
Returns an array of numbers (the SAR price dots).
[ 64000.5, 64100.2, ... ]- Position: If the dots are below candles, the trend is Bullish. If above, Bearish.
- Reversal: When the price hits the PSAR dot, the dot typically flips to the other side, signaling a reversal.
[!TIP] PSAR is excellent for setting trailing stops. Move your stop-loss to the value of the PSAR dot for each candle ("Trailing Stop").
import { IndicatorsApi, CandlesApi } from "tickcatcher";
// 1. Get Candles
const candles = await new CandlesApi(config).basicCandles({ symbol: "SOLUSDT", timeframe: "1h", limit: 100 });
// 2. Calculate PSAR
const values = await new IndicatorsApi(config).psar({
psarRequest: {
data: candles,
params: { step: 0.02, max: 0.2 }
}
});
console.log(`Current Stop Level: ${values[values.length - 1]}`);