Why Every Crypto Trading Regime Needs a Technical / Structural Overlay

Most trading strategies fire on a state — an oversold RSI, a 200-day moving average reclaim, a Bollinger band squeeze about to break. None of those are regimes on their own; they are structural overlays that pair with whatever regime you're already in.

A 200MA reclaim during a confirmed bull regime is a high-conviction long. The same reclaim during a liquidation cascade is a bull trap. The price-structure signal is identical; the context is what makes it tradable.

The new /api/v1/indicators/technical endpoint exposes the four canonical price-structure indicators — moving averages, Bollinger squeezes, range positions, and RSI extremes — for every asset in the Hyperliquid perps universe plus the top Binance USDT spot pairs. One call, ~630 symbols, computed every 30 minutes. It's Regime #14 in our regime taxonomy: the universal overlay.

What the Technical Regime Endpoint Returns

Each asset in the response carries four indicator blocks — moving-average state, Bollinger compression state, 20-day range state, and RSI extremes — plus current price and source (binance_spot or hyperliquid_perp).

curl -H "X-API-Key: cdk_live_yourkey" \
  "https://cryptodataapi.com/api/v1/indicators/technical?bb=in_squeeze&sort=squeeze_days&order=desc&limit=5"

One symbol in the response:

{
  "symbol": "KLAY",
  "source": "binance_spot",
  "price": 0.1255,
  "ma": {
    "sma_200": 0.155928,
    "above_200": false,
    "dist_from_200_pct": -19.51,
    "last_cross_200": null
  },
  "bollinger": {
    "bandwidth_pct": 11.09,
    "squeeze_percentile": 8.3,
    "in_squeeze": true,
    "days_in_squeeze": 14,
    "expanding": false
  },
  "range_state": {
    "low": 0.1173, "high": 0.1391,
    "position_pct": 37.6, "zone": "mid"
  },
  "rsi": {
    "rsi_14_1d": 48.2, "state_1d": "neutral",
    "rsi_14_1h": 71.8, "state_1h": "overbought",
    "extreme_duration_bars": 0
  }
}

That single record tells you KLAY is below its 200-day MA by 19.5%, has been in the tightest 10% of its 90-day Bollinger bandwidth for 14 consecutive days, sits mid-range on the daily, and is overbought on the 1-hour. A volatility breakout is structurally overdue.

The Four Price-Structure Signals, Decoded

Each block answers a different structural question. Combine them or read them separately — the screener supports independent filters per indicator.

How Do I Screen for Specific Technical Setups via the API?

The endpoint accepts independent filters per indicator. Stack them to build high-conviction screens.

SetupQuery string
Volatility breakouts brewing?bb=in_squeeze&sort=squeeze_days&order=desc
Fresh 200MA reclaims (last 10d)?ma_state=reclaim_200
Sustained oversold?rsi=oversold&min_days_in_state=2
Mean-reversion fade candidates?range_zone=near_high&rsi=overbought
Trend continuation longs?ma_state=above_200&range_zone=near_high

Available sort keys: squeeze_days, rsi_1d, bb_bandwidth, dist_from_200, position_in_range, symbol, price. Default limit is 250, max 500. The full screener is computed off a 30-minute TTL cache, so repeated queries are essentially free.

Technical Regime vs SIGNUM_RGG: Which Indicator When?

Crypto Data API exposes two computed trend layers. They answer different questions and the right approach is to read both.

SIGNUM_RGGTechnical / Structural
What it tells youTrend direction state (red/grey/green)Where price sits structurally inside that trend
Underlying mathADX(14) + DMI with hysteresisSMA cross + BB squeeze + RSI + range
Best atRegime gating, days-in-color trackingEntry timing inside a regime
Update cadenceHourly (daily + 1h)Every 30 minutes (daily + 1h RSI)
Endpoint/indicators/signum-rgg/indicators/technical

Practical pattern: filter your universe with SIGNUM, time entries with Technical. A green-trend asset (SIGNUM) entering a Bollinger squeeze with RSI exiting oversold (Technical) is a higher-quality long than either signal alone.

Wiring the Technical Regime Into an AI Trading Agent

Two reads is usually enough — pull the universe-wide screener for candidate scanning, then pull the per-symbol detail for any candidates you want to act on.

import httpx

HDR = {"X-API-Key": "cdk_live_yourkey"}
BASE = "https://cryptodataapi.com/api/v1/indicators/technical"

# 1. Find assets in a sustained Bollinger squeeze
squeezed = httpx.get(
    BASE, headers=HDR,
    params={"bb": "in_squeeze", "sort": "squeeze_days",
            "order": "desc", "limit": 20},
).json()["items"]

# 2. For each, pull detail with 60d history
for r in squeezed[:5]:
    detail = httpx.get(f"{BASE}/{r['symbol']}", headers=HDR).json()
    print(r['symbol'], detail['bollinger']['days_in_squeeze'],
          'in_squeeze', '|', detail['rsi']['state_1d'])

For backtests, the same summary is included in every archived daily snapshot under technical_regime90 days of history is already backfilled, so you can replay regime-tagged simulations without computing indicators yourself.

curl -H "X-API-Key: cdk_live_yourkey" \
  "https://cryptodataapi.com/api/v1/backtesting/daily-snapshots/2026-05-15" \
  | jq '.snapshot.technical_regime'
{
  "total": 629,
  "above_200ma": 93,
  "in_squeeze": 85,
  "overbought_1d": 13,
  "oversold_1d": 86,
  "top_in_squeeze": ["KLAY", "FET", "..."],
  "backfilled": true
}

When to Reach for the Technical Regime

This endpoint earns its keep in three concrete scenarios:

What this endpoint isn't: a standalone alpha signal. Technical setups fire constantly. Treating every BB squeeze as a buy is how you over-trade. Always pair with regime context — that's why we built the full regime taxonomy.