# MobiusQuant API documentation --- API requests, parameters, response fields and usage notes. Detailed Chinese references are available under /zh/. --- # AI Agent Operating Manual > This page is for AI agents / LLMs / automated crawlers. This site (`docs.mobiusquant.ai`) is the public documentation for MobiusQuant — all content is open for scraping and citation. --- ## Quick navigation | I want to know... | Fetch this | | --- | --- | | How to get a token | [`/token.md`](/token.md) | | What markets are supported | [`/markets.md`](/markets.md) | | How to query gold spot (minimum 5m) | [Gold spot](/markets#gold-spot) | | What indicators exist | [`/indicators/index.md`](/indicators/index.md) | | How to query feature IDs, rules and meanings by indicator | [Feature definitions](/signals.md); API: `GET /api/indicators/signals` | | How BTC/ETH ETF capital is flowing | [`/wgo/llms.txt`](/wgo/llms.txt) | | What daily on-chain metrics WGO exposes | [`/wgo/onchain.md`](/wgo/onchain.md) | | How to integrate with an AI tool | [`/skills.md`](/skills.md) | | How to query A-share policy and sector intelligence | [`/zh/gendangzou/llms.txt`](/zh/gendangzou/llms.txt) | | Entire docs in one fetch (English) | [`/llms-full.txt`](/llms-full.txt) | | Site index summary | [`/llms.txt`](/llms.txt) | --- ## Gold spot integration Use `commodity:spot / XAUUSD`, not `forex:spot` or gold futures `commodity:futures / XAUF`. Supported intervals are `5m`, `15m`, `30m`, `1h`, `4h`, `1d`; `1m` is not available. All periods refresh every 5 minutes. Use price-based indicators and inspect `data_meta`; do not interpret the placeholder volume fields as real volume. See [Gold spot](/markets#gold-spot). ## For agents: when the user asks you to install OpenMobius-skill When the user says "install OpenMobius / set up the mobius trading skill / 帮我装 OpenMobius" or similar, **do not improvise from memory** — fetch our agent-specific install playbook first: ``` https://raw.githubusercontent.com/MobiusQuant/OpenMobius-skill/main/README_AGENT.md ``` This file contains: - The full list of trigger phrases (English + Chinese) - The 6-step procedure (preflight → platform detection → user-confirm → install → health check → report) - Install-path table for all 4 supported platforms - Success criteria + failure handling per step - Uninstall / update branches Read it through, then execute. **Do not skip steps, do not edit `install.py`, and report failures back to the user instead of bypassing them.** --- ## URL conventions - **Every HTML page has a sibling `.md`** containing the raw markdown source (no HTML chrome): - `https://docs.mobiusquant.ai/indicators/rsi` → browser-friendly HTML - `https://docs.mobiusquant.ai/indicators/rsi.md` → AI-friendly markdown - **Indicator detail URLs**: `/indicators/.md` (English structured) and `/zh/indicators/.md` (Chinese with full interpretation guide). `` is the lowercase canonical ID (`rsi`, `macd`, `bollinger`, `ema`, `mobius_trend`, ...). - **CORS**: every `.md` and `.txt` file is served with `Access-Control-Allow-Origin: *`. Client-side fetches work cross-origin. - **Locales**: this site has English (root) and Chinese (`/zh/...`) API references, including indicator parameters, output fields, interpretation notes, and examples. --- ## Site structure HMM parameters, supported intervals, output fields, and examples: [HMM API reference](/indicators/hmm_regime.md). ``` / API overview and quick start /token.md API token application guide /markets.md Markets / venues / canonical-symbol rules /indicators/index.md Indicator catalog (overview) /indicators/.md Per-indicator: parameters, output columns, example call /skills.md Optional API client installation and usage /agents.md This page /wgo/ WGO human-readable English documentation /wgo/llms.txt Product-scoped Agent index /wgo/openapi.json WGO OpenAPI reference /zh/wgo/ WGO Chinese documentation /zh/ Chinese versions of all of the above, with full prose narrative /zh/gendangzou/ Gendangzou human-readable API documentation /zh/gendangzou/llms.txt Product-scoped Agent index /zh/gendangzou/agent-manifest.json Machine-readable capability contract /llms.txt llmstxt.org standard site index /llms-full.txt Full English reference in one response /sitemap.xml Standard search-engine sitemap ``` --- ## Möbius Lab (proprietary indicators) Indicators in the **🧪 Möbius Lab** sidebar group are MobiusQuant in-house creations, not classic public indicators. Currently this includes `mobius_trend`. When citing, you may note "MobiusQuant proprietary indicator". The Lab group is pinned to the top of every indicator-page sidebar. --- ## Recommendations when citing 1. **Prefer `.md` URLs over `.html`** — saves you parsing, avoids navigation/footer noise. 2. **Link rather than paste** — content evolves; linking keeps your users on the latest version. 3. **Fetch `/llms-full.txt` once** before doing per-page lookups — saves N round-trips. 4. **API call examples use `mq_xxx` as a placeholder.** Real tokens come from the apply page (anonymous 7-day) or Account page (logged-in permanent). See [Token](/token). --- ## Related machine-readable resources - [Engine `agents.md`](https://api.mobiusquant.ai/agents.md) — engine-side operating manual: canonical conventions, error codes, rate limits. Complements this page: this site covers "what is available"; the engine page covers "how to call". - [Gendangzou Agent index](/zh/gendangzou/llms.txt) — policy, trusted-media, sector signals, company mappings, and evidence routing - [Gendangzou capability contract](/zh/gendangzou/agent-manifest.json) — stable capability IDs, paths, parameter constraints, and response fields - [WGO Agent index](/wgo/llms.txt) — BTC/ETH ETF flow and on-chain documentation routing - [WGO OpenAPI reference](/wgo/openapi.json) — WGO public paths and parameter constraints - [OpenAPI / Swagger](https://api.mobiusquant.ai/docs) — interactive API reference - [`/api/indicators/registry`](https://api.mobiusquant.ai/api/indicators/registry) — live indicator catalog - [`/api/markets`](https://api.mobiusquant.ai/api/markets) — live venue health + symbol list --- _This page is available for programmatic reading and citation._ --- # Compute on Your Own Data `POST /api/indicators/compute` calculates indicators **from candles you supply**, without requiring a supported venue or symbol. Good for: - **Backtest**: run indicators over OHLCV history pulled from your DB / CSV - **Custom data sources**: counterparty exchange, aggregated contracts, your own tick resamples - **Offline analysis**: calculate indicator values for a specific historical window Not for: - **Live data** — use [`POST /api/indicators`](#related) for lower latency, it reads from in-memory store - **Multi-timeframe requests** such as SMC's `fvg_timeframe` — use the market-data indicator endpoint for supported multi-timeframe queries --- ## 30-second quickstart ```bash curl -X POST 'https://api.mobiusquant.ai/api/indicators/compute' \ -H 'authorization: Bearer mq_xxx' \ -H 'content-type: application/json' \ -d '{ "klines": [ [1735689600000, 95000.0, 95500.0, 94800.0, 95200.0, 1234.5], [1735693200000, 95200.0, 95800.0, 95100.0, 95650.0, 1500.2] ], "interval": "1h", "calc": [{"name": "rsi", "params": {"period": 14}}] }' ``` Returns: ```jsonc { "count": 2, "interval": "1h", "klines": [[1735689600000, 95000.0, ...], ...], // echoed "indicators": { "rsi:period=14": { "columns": ["open_time", "rsi"], "data": [[1735689600000, null], [1735693200000, null]], "explain": { /* knowledge: summary_focus / signals / caveats */ } } } } ``` > RSI returns `null` for the first 14 bars — this is **normal**. All cumulative indicators need warmup. See [Limits](#limits) below. --- ## Python example ```python import requests import pandas as pd # Load historical OHLCV from your own data source df = pd.read_csv('btc_1h_history.csv') # columns: open_time(ms), open, high, low, close, volume klines = df[['open_time', 'open', 'high', 'low', 'close', 'volume']].values.tolist() resp = requests.post( 'https://api.mobiusquant.ai/api/indicators/compute', headers={'Authorization': 'Bearer mq_xxx'}, json={ 'klines': klines, 'interval': '1h', 'calc': [ {'name': 'ema', 'params': {'period': 20}, 'id': 'ema20'}, {'name': 'ema', 'params': {'period': 200}, 'id': 'ema200'}, {'name': 'rsi', 'params': {'period': 14}}, ], }, ) result = resp.json() print(result['indicators']['ema20']['data'][-1]) # latest EMA20 value print(result['indicators']['rsi:period=14']['data'][-1]) ``` --- ## SMC and other "composite" indicators work too Indicators like SMC (Smart Money Concepts) that produce non-numeric output also return per-bar columns + an `objects` sidecar: ```bash curl -X POST 'https://api.mobiusquant.ai/api/indicators/compute?explain=false' \ -H 'content-type: application/json' \ -d '{ "klines": [/* ≥500 historical bars */], "calc": [{"id": "smc", "name": "smc", "params": {"show_swing_points": true, "show_premium_discount_zones": true}}] }' ``` The response includes `indicators.smc.objects` with structured shapes — `swing_structures`, `order_blocks_swing`, `fair_value_gaps`, `premium_zone`, etc. Feed them straight into a chart renderer or an LLM. See [SMC indicator page](/indicators/smc). --- ## Request schema | Field | Type | Required | Description | |---|---|---|---| | `klines` | array | ✓ | OHLCV bars; each row auto-detected as either list or object (see below) | | `calc` | array | ✓ | Indicators to compute, each `{name, params, id?}` — same shape as [`/api/indicators`](https://api.mobiusquant.ai/docs#/indicators/post_indicators_api_indicators_post) | | `interval` | string | ✗ | Candle interval; required for HMM and used for CVD confirmation times | | `last_bar_closed` | bool | ✗ | Defaults to `true`; set `false` for a forming final candle, for features and HMM/CVD confirmation | | `signals` | bool | ✗ | Defaults to `false`; `true` adds per-bar features and requires `interval` | | `include_forming` | bool | ✗ | Defaults to `false`; requires `signals=true`, evaluates the forming final sample and appends signal `bar_status` | | `echo_klines` | bool | ✗ | Default `true` — echoes input klines; set `false` to shrink the response | Two `klines` row formats (auto-detected): ```jsonc // Compact (Binance nested-list style): [open_time_ms, open, high, low, close, volume, quote_volume?] [1735689600000, 95000.0, 95500.0, 94800.0, 95200.0, 1234.5, 117526200.0] // Object (more explicit) { "open_time": 1735689600000, "open": 95000.0, "high": 95500.0, "low": 94800.0, "close": 95200.0, "volume": 1234.5, "quote_volume": 117526200.0 // optional, used by some indicators (VWAP / CVD); defaults to 0 } ``` --- ## Response schema | Field | Type | Description | |---|---|---| | `count` | int | Number of klines processed | | `interval` | string | Echoes request's `interval` (only when provided) | | `klines` | array | Echo of input klines (omitted when `echo_klines=false`) | | `indicators` | object | key = `id` or auto-generated `name:p1=v1,...`, value = single indicator's columns/data/objects/explain | Each `indicators.` has the same shape as in [`POST /api/indicators`](https://api.mobiusquant.ai/agents.md): ```jsonc { "columns": ["open_time", "rsi"], "data": [[1735689600000, null], [1735693200000, 67.4], ...], "objects": { /* present only for SMC and other non-numeric indicators */ }, "explain": { /* knowledge: only when ?explain=true */ } } ``` --- ## Limits [HMM](./indicators/hmm_regime) requires an explicit interval: `5m/15m/1h/4h/12h/1d`; 12h is BYO-only, not live data. HMM returns eight business fields, including `hmm_supported` (true/false/null), plus `open_time` and per-result `meta`. Default normalization=auto selects D1 for 5m/15m/1h and Legacy for 4h/12h/1d; explicit modes override it. At horizon20, input warmup is D1 20/60 or Legacy 153/461 bars; at horizon100, 100/300 or 769/2309. Candidate confirmation is additional. Support=false does not confirm reversal; null includes pending first confirmation. At most eight HMM instances per request. If the final candle is forming, set top-level `last_bar_closed: false`; otherwise all input candles are assumed closed. | Limit | Value | On violation | |---|---|---| | Kline count | ≤ **2000**; **5000** for HMM-only requests | Business cap: `413`; schema hard cap above 5000: `422` | | `open_time` | strictly **monotonically increasing in ms** | `400` | | OHLCV | must be finite (no NaN / inf) | `400` | | `calc` list | non-empty, all `name` in [registry](https://api.mobiusquant.ai/api/indicators/registry) | `400` | | Invalid indicator parameters | Unknown parameter or invalid parameter value | `400` | ### Supply enough input history This endpoint uses only the candles you supply. Include sufficient history before the period you want to analyze. So make sure you include enough history: | Indicator / usage | Minimum bars | |---|---| | RSI(14) to stabilize | ≥ 50 | | EMA(200) / ATR(200) to stabilize | ≥ 200 | | Bollinger / Keltner / Donchian (default params) | ≥ 30 | | SMC internal structure + FVG | ≥ 50 | | SMC swing structure / OB / Strong-Weak / P/D zones | ≥ 100 (default swing_size=50, plus buffer) | | SMC complete + EQH/EQL stable | ≥ 200 (ATR threshold converges) | | **Production-grade analysis** | **500+** | The first N bars returning `null` is normal — discard them and use the stable tail. --- ## Native features Add top-level `"signals": true` to `POST /api/indicators` or `POST /api/indicators/compute` to request native feature results. Of 59 indicators, 35 provide 106 features (101 events and 5 states); the other 24 provide descriptive values without independent feature signals. Each [indicator reference](/indicators/) documents rules, meanings and validity requirements, or explains why no signals are provided. These describe indicator events or states, not trade instructions. ```json { "exchange": "binance", "market": "perp", "symbol": "BTCUSDT", "interval": "5m", "limit": 100, "calc": [ {"name": "macd", "id": "macd"}, {"name": "rsi", "id": "rsi"}, {"name": "cvd", "id": "cvd"} ], "signals": true } ``` Send this body to `/api/indicators?explain=false`. For BYO, use `/api/indicators/compute?explain=false`, replace market, symbol and limit fields with `klines`, and retain `interval`, `calc` and `signals`. Each indicator adds a `signals` object with `columns` and `data`, aligned one-to-one with its numeric output rows. The first columns are `open_time` and `confirmed_at_ms` in milliseconds, followed by feature columns. `confirmed_at_ms` is the closed candle's interval-based close time; its presence does not imply that any feature triggered. For example, `indicators.macd.signals`: ```json { "columns": ["open_time", "confirmed_at_ms", "macd.cross_up", "macd.cross_down", "macd.zero_cross_up", "macd.zero_cross_down", "macd.above_signal", "macd.below_signal"], "data": [[1735689600000, 1735689900000, true, false, false, false, true, false]] } ``` This bar has a cross-up and MACD is above Signal, without a zero-axis crossing. | Value | Meaning | | --- | --- | | Feature `true` | Event occurred on this bar, or state holds on this bar | | Feature `false` | Valid evaluation, but the event did not occur or state does not hold | | Feature `null` | Unknown: forming candle, insufficient history, invalid dependent value or input gap | | Entire `signals: null` | This indicator has no enabled feature output | | No `signals` field | Features were not requested | Events are true only on their occurrence bar; states can remain true for multiple bars. Read by column name, not a hard-coded index. Use [`GET /api/indicators/signals`](/signals) to query full definitions by indicator, kind or feature ID, including display names, rules, meanings and boundary conditions. Results stay grouped by indicator. Definitions do not indicate that a feature has occurred in current market data. Compact definitions remain available with `GET /api/indicators/registry?include_signals=true`. Each indicator adds `has_signals` and a `signals` list containing `id`, `kind=event|state`, `description`, `required_history`, and `version`. The default registry response does not include these fields. Constraints: - Live features support connected Binance, Bybit, OKX and Hyperliquid feeds, including [Binance stock perpetuals](/markets#binance-stock-perp), but not stock spot venues. Other markets return 400 when features are requested; numeric-only queries remain available. - BYO requires `interval` and fixed-duration bars. Set `last_bar_closed: false` for a forming last bar; all earlier bars must be closed. - Forming bars have null confirmation times and feature values. Features use the numeric output window, not an independent window. - From the first interval gap onward, features remain null for the rest of that input. Supply contiguous data with sufficient warmup; do not turn unknown into false. - Revised data or a different history start may change results. This API does not provide monitoring progress, catch-up or deduplication guarantees. - `signals` accepts JSON booleans only, not strings, objects or expressions. Omitted or false means no feature output. - `/api/chart` also accepts `signals`, as described below. ## Feature charts {#feature-chart} For intrabar warnings, set `signals: true` and `include_forming: true` and read the same signal table. Forming rows have `bar_status=forming` and `confirmed_at_ms=null`; features may disappear at close. Chart event markers carry the same classification; provisional CVD objects have `status=forming`. Default requests are unchanged. See [forming trials](/signals#forming) for live and BYO usage. For unknown-value reasons, native links, effective parameters and actual input ranges, use the optional top-level [`include` options](/signals#single-calculation). Omitting them preserves the existing response. Send the same example request to `POST /api/chart`, keeping `"signals": true`. Alongside ordinary candles, indicator plots and structural objects, the response adds: - `indicator_signals[responseKey]`: the same `{columns, data}` feature format as the calculation endpoint; `null` for indicators without independent features. - Main-panel `panels[].items[]` entries with `type: "markers", source: "signals"`: confirmed `event=true` markers, distinguished by `indicator_key`. Example marker item: ```json { "type": "markers", "source": "signals", "indicator_key": "macd", "data": [{ "time": 1735689600, "confirmed_at_ms": 1735689900000, "position": "aboveBar", "shape": "circle", "role": "neutral", "indicator_key": "macd", "signal_ids": ["macd.cross_up"], "text": "MACD 金叉" }] } ``` `time` is the confirmation candle's open time in **seconds**; `confirmed_at_ms` is its close time in **milliseconds**. Markers are never backdated to a pivot and never represent forming bars, `null` or `false`. Multiple events on one candle for one indicator instance share a marker, retaining all `signal_ids`. No empty marker item is emitted. States remain readable but are not plotted on every candle; candles are not recolored. CVD retains divergence segments and endpoints; with this option, unified markers replace its confirmation arrows to avoid duplicates. SMC objects remain available for structural drawings; clients generating their own confirmation annotations should deduplicate against `signal_ids`. Omit `signals` or set it to `false` to keep the original chart response, without `indicator_signals` or unified event markers. --- ## Auth & rate limits Same as `/api/indicators`: - No `Authorization` header → anonymous quota per IP - Valid `Bearer mq_xxx` → higher token quota - Don't have a token yet? [Apply for one](https://www.mobiusquant.ai/zh/apply-token) — it's free. --- ## Error codes | Code | Meaning | What to do | |---|---|---| | `400` | Validation failed (non-monotonic, NaN, unknown indicator, too few columns) | Read `detail`, fix the request | | `401` | Authorization header present but token invalid | [Re-apply](https://www.mobiusquant.ai/zh/apply-token) | | `413` | `klines` exceeds the applicable cap (2000, or 5000 for HMM-only) | Shorten the window without discarding necessary warmup | | `422` | Invalid request structure (missing field, wrong type, unknown field) | Check the locations in `detail` | | `429` | Rate limited | Honor `Retry-After`; authenticated requests have a higher quota | | `500` | Indicator computation crashed (indicator bug) | Report with the indicator name in `detail` | --- ## Related - [`POST /api/indicators`](https://api.mobiusquant.ai/docs#/indicators/post_indicators_api_indicators_post) — Calculate indicators for supported markets and symbols - [`GET /api/indicators/registry`](https://api.mobiusquant.ai/api/indicators/registry) — Available indicators and their parameters - [SMC indicator page](/indicators/smc) — Details of the SMC `objects` sidecar - [AI Agent Manual](/agents) — Engine integration guide for LLMs - [Skill Runtime Lookup](/lookup-guide) — Endpoint decision tree for Skill integration --- # Derivatives & Sentiment The engine provides five endpoints for crypto derivatives analytics and market sentiment. These complement the core OHLCV kline data with on-chain and exchange-level metrics commonly used for position sizing, regime detection, and contrarian signals. All derivative endpoints cover **perpetual contracts only**. ## Funding Rates Historical funding rates for perpetual contracts across multiple exchanges. **`GET /api/derivatives/funding-rates`** | Parameter | Type | Required | Description | | --- | --- | --- | --- | | `exchange` | string | Yes | `binance`, `bybit`, or `okx` | | `symbol` | string | Yes | Canonical symbol (e.g. `BTCUSDT`) | | `limit` | integer | No | Number of records (default 100, max 1000) | ```bash curl -H "Authorization: Bearer mq_xxx" \ "https://api.mobiusquant.ai/api/derivatives/funding-rates?exchange=binance&symbol=BTCUSDT&limit=100" ``` Example response: ```json { "symbol": "BTCUSDT", "exchange": "binance", "data": [ { "funding_rate": 0.0001, "funding_time": 1717027200000, "mark_price": "67890.50" } ] } ``` ## Open Interest Historical open interest data (Binance only). **`GET /api/derivatives/open-interest`** | Parameter | Type | Required | Description | | --- | --- | --- | --- | | `symbol` | string | Yes | Canonical symbol (e.g. `BTCUSDT`) | | `period` | string | No | Aggregation period: `5m` `15m` `30m` `1h` `2h` `4h` `6h` `12h` `1d` (default `1h`) | | `limit` | integer | No | Number of records (default 100, max 500) | ```bash curl -H "Authorization: Bearer mq_xxx" \ "https://api.mobiusquant.ai/api/derivatives/open-interest?symbol=BTCUSDT&period=1h&limit=100" ``` Example response: ```json { "symbol": "BTCUSDT", "data": [ { "sum_open_interest": "12345.678", "sum_open_interest_value": "838926543.21", "timestamp": 1717027200000 } ] } ``` ## Long/Short Ratio Top trader long/short ratio (Binance only). Shows the ratio of net long vs net short positions held by top accounts. **`GET /api/derivatives/long-short-ratio`** | Parameter | Type | Required | Description | | --- | --- | --- | --- | | `symbol` | string | Yes | Canonical symbol (e.g. `BTCUSDT`) | | `period` | string | No | Aggregation period: `5m` `15m` `30m` `1h` `2h` `4h` `6h` `12h` `1d` (default `1h`) | | `limit` | integer | No | Number of records (default 100, max 500) | ```bash curl -H "Authorization: Bearer mq_xxx" \ "https://api.mobiusquant.ai/api/derivatives/long-short-ratio?symbol=BTCUSDT&period=1h&limit=100" ``` Example response: ```json { "symbol": "BTCUSDT", "data": [ { "long_short_ratio": "1.234", "long_account": "0.5523", "short_account": "0.4477", "timestamp": 1717027200000 } ] } ``` ## Taker Buy/Sell Ratio Taker buy/sell volume ratio (Binance only). Measures whether aggressive buying or selling dominates. **`GET /api/derivatives/taker-ratio`** | Parameter | Type | Required | Description | | --- | --- | --- | --- | | `symbol` | string | Yes | Canonical symbol (e.g. `BTCUSDT`) | | `period` | string | No | Aggregation period: `5m` `15m` `30m` `1h` `2h` `4h` `6h` `12h` `1d` (default `1h`) | | `limit` | integer | No | Number of records (default 100, max 500) | ```bash curl -H "Authorization: Bearer mq_xxx" \ "https://api.mobiusquant.ai/api/derivatives/taker-ratio?symbol=BTCUSDT&period=1h&limit=100" ``` Example response: ```json { "symbol": "BTCUSDT", "data": [ { "buy_sell_ratio": "1.056", "buy_vol": "5678.123", "sell_vol": "5376.890", "timestamp": 1717027200000 } ] } ``` ## Fear & Greed Index Crypto Fear & Greed Index from alternative.me. A composite sentiment indicator (0 = Extreme Fear, 100 = Extreme Greed). **`GET /api/sentiment/fear-greed`** | Parameter | Type | Required | Description | | --- | --- | --- | --- | | `limit` | integer | No | Number of days (default 30, max 365) | ```bash curl -H "Authorization: Bearer mq_xxx" \ "https://api.mobiusquant.ai/api/sentiment/fear-greed?limit=30" ``` Example response: ```json { "data": [ { "value": 72, "value_classification": "Greed", "timestamp": 1717027200 } ] } ``` ## Data freshness | Endpoint group | Approximate refresh interval | | --- | --- | | Derivatives (funding-rates, open-interest, long-short-ratio, taker-ratio) | 5 -- 10 minutes | | Sentiment (fear-greed) | 1 hour | These intervals are approximate, not an arrival-time guarantee. Read each response's timestamps to determine the age of the returned data. --- # Gendangzou API Gendangzou is a sector-first A-share research API. It provides policy and trusted-media materials discovered every five minutes, the latest sector taxonomy, three independent signal dimensions, dynamic company-to-sector mappings, and the evidence behind each result. The canonical product documentation is currently maintained in Chinese: - [API overview](/zh/gendangzou/) - [Source list](/zh/gendangzou/data-sources) - [Quick start](/zh/gendangzou/quickstart) - [Data freshness and time fields](/zh/gendangzou/data-freshness) - [Agent workflows](/zh/gendangzou/workflows) - [Machine-readable capability manifest](/zh/gendangzou/agent-manifest.json) - [Product-scoped `llms.txt`](/zh/gendangzou/llms.txt) API base URL: ```text https://api.mobiusquant.ai/api/gendangzou ``` Agents should start with `system.bootstrap`, discover a task-specific stable capability ID, request compact responses where supported, and fetch evidence only when the user needs it. --- ## Quick start Check service health, then request the latest 100 BTC perpetual 5m candles: ```bash curl 'https://api.mobiusquant.ai/api/health' curl 'https://api.mobiusquant.ai/api/klines?exchange=binance&market=perp&symbol=BTCUSDT&interval=5m&limit=100' ``` Calculate indicators: ```bash curl -X POST 'https://api.mobiusquant.ai/api/indicators?explain=false' \ -H 'Content-Type: application/json' \ -d '{"exchange":"binance","market":"perp","symbol":"BTCUSDT","interval":"5m","limit":100,"calc":[{"name":"rsi","params":{"period":14},"id":"rsi"}]}' ``` Read `indicators.rsi.columns` and `indicators.rsi.data`. See [indicators](/indicators/) for parameters or [Compute API](/compute) to use your own data. An optional [Skill client](/skills) is available for AI tools. ::: tip API Token is optional Anonymous mode (no token) gets you 10 req/min per IP — plenty for trying out. Add a free token for 60 req/min. [Apply →](/token) ::: ## For AI agents This documentation site is designed to be machine-friendly: - [`/llms.txt`](/llms.txt) — site index in English - [`/llms-full.txt`](/llms-full.txt) — entire docs in English, structured - Every HTML page has a sibling `.md` (raw markdown) at the same path - See [`/agents`](/agents) for the full AI Agent operating manual ## Other entry points - Interactive API docs (Swagger): - Engine operating manual (machine-friendly): - Open-source Skill repo: --- # `accelerator_oscillator` — Accelerator Oscillator > Category: **Momentum** · Composite ::: tip Reading the response Use `POST /api/indicators?explain=true` to include interpretation notes at `indicators[responseKey].explain`. Read numeric results from `columns` and `data` in the same object. ::: This is a momentum indicator. ## Parameters | Parameter | Type | Default | |------|------|--------| | `fast` | int | `5` | | `slow` | int | `34` | ## Output columns | Column | |------| | `ac` | ## Native features Set top-level `signals: true` and read `indicators[responseKey].signals`. By default features are evaluated on closed bars: `true` is a positive result, `false` a valid negative result, and `null` unknown. These are not trade instructions. This indicator supports `include_forming: true`: treat the current final OHLCV sample as complete under the same native rules, returning one set of values, features and objects. The signal table appends `bar_status`: `closed` for closed bars, `forming` for a trial with `confirmed_at_ms=null`. A trial may disappear on later updates or at close. For BYO, still set `last_bar_closed: false`. Close requirements below describe the default mode; trials only admit the final sample without shortening structural windows or model confirmation requirements. See [forming trials](/signals#forming). History lengths are minimum evaluation requirements, not convergence guarantees. Comparisons use unrounded values and the exact boundaries below. Do not turn `null` into `false` on gaps, invalid dependencies or forming bars in the default mode. | Feature column | Kind | Rule | Meaning | History / validity | | --- | --- | --- | --- | --- | | `accelerator_oscillator.cross_up` | `event` | Previous ac <= 0; current ac > 0. | AO crosses its fast-period average: relative momentum acceleration changes, not necessarily price direction. | max(fast, slow) + fast contiguous bars and valid dependencies on both bars. | | `accelerator_oscillator.cross_down` | `event` | Previous ac >= 0; current ac < 0. | AO crosses its fast-period average: relative momentum acceleration changes, not necessarily price direction. | max(fast, slow) + fast contiguous bars and valid dependencies on both bars. | See [feature requests](/compute#native-features) for the format and examples. `/api/chart` also accepts `signals: true`, marking confirmed events by default. With `include_forming`, trial events also produce markers tagged `bar_status=forming`; states are not drawn on every bar. See [feature charts](/compute#feature-chart). ## Example call ```bash curl -X POST -H "Authorization: Bearer mq_xxx" \ -H "Content-Type: application/json" \ -d '{ "exchange": "binance", "market": "perp", "symbol": "BTCUSDT", "interval": "5m", "limit": 100, "signals": true, "calc": [{"name": "accelerator_oscillator", "params": {"fast": 5, "slow": 34}}] }' \ https://api.mobiusquant.ai/api/indicators ``` ## Full interpretation guide Field meanings, interpretation rules and usage notes are documented in Chinese at: [accelerator_oscillator (中文详情)](https://docs.mobiusquant.ai/zh/indicators/accelerator_oscillator) ## Related indicators [awesome_oscillator](./awesome_oscillator) · [cci](./cci) · [chande_mo](./chande_mo) · [connors_rsi](./connors_rsi) · [coppock_curve](./coppock_curve) · [dpo](./dpo) · [kst](./kst) · [macd](./macd) --- # `adx` — ADX > Category: **Trend Strength** · Standard ::: tip Reading the response Use `POST /api/indicators?explain=true` to include interpretation notes at `indicators[responseKey].explain`. Read numeric results from `columns` and `data` in the same object. ::: This is a trend strength indicator. ## Parameters | Parameter | Type | Default | |------|------|--------| | `period` | int | `18` | ## Output columns | Column | |------| | `adx` | ## Native features This indicator has no independent native feature signals. Outputs directionless ADX strength only, not +DI/-DI or confirmed directional events; no invented DI crosses or price direction. With `signals: true`, this indicator returns `signals: null`. Numeric values and charts remain available; no crossing, divergence or trade rules are added. ## Example call ```bash curl -X POST -H "Authorization: Bearer mq_xxx" \ -H "Content-Type: application/json" \ -d '{ "exchange": "binance", "market": "perp", "symbol": "BTCUSDT", "interval": "5m", "limit": 100, "calc": [{"name": "adx", "params": {"period": 18}}] }' \ https://api.mobiusquant.ai/api/indicators ``` ## Full interpretation guide Field meanings, interpretation rules and usage notes are documented in Chinese at: [adx (中文详情)](https://docs.mobiusquant.ai/zh/indicators/adx) ## Related indicators [aroon_oscillator](./aroon_oscillator) · [choppiness_index](./choppiness_index) · [vortex](./vortex) --- # `alligator` — Alligator > Category: **Trend** · Composite ::: tip Reading the response Use `POST /api/indicators?explain=true` to include interpretation notes at `indicators[responseKey].explain`. Read numeric results from `columns` and `data` in the same object. ::: This is a trend indicator. ## Parameters | Parameter | Type | Default | |------|------|--------| | `jaw_length` | int | `13` | | `teeth_length` | int | `8` | | `lips_length` | int | `5` | ## Output columns | Column | |------| | `jaw` | | `lips` | | `teeth` | ## Native features This indicator has no independent native feature signals. Provides three smoothed averages, without a defined crossing combination, opening rule or confirmed state. With `signals: true`, this indicator returns `signals: null`. Numeric values and charts remain available; no crossing, divergence or trade rules are added. ## Example call ```bash curl -X POST -H "Authorization: Bearer mq_xxx" \ -H "Content-Type: application/json" \ -d '{ "exchange": "binance", "market": "perp", "symbol": "BTCUSDT", "interval": "5m", "limit": 100, "calc": [{"name": "alligator", "params": {"jaw_length": 13, "teeth_length": 8, "lips_length": 5}}] }' \ https://api.mobiusquant.ai/api/indicators ``` ## Full interpretation guide Field meanings, interpretation rules and usage notes are documented in Chinese at: [alligator (中文详情)](https://docs.mobiusquant.ai/zh/indicators/alligator) ## Related indicators [alma](./alma) · [ema](./ema) · [hma](./hma) · [hmm_regime](./hmm_regime) · [lsma](./lsma) · [mcginley_dynamic](./mcginley_dynamic) · [mobius_trend](./mobius_trend) · [parabolic_sar](./parabolic_sar) --- # `alma` — ALMA > Category: **Trend** · Standard ::: tip Reading the response Use `POST /api/indicators?explain=true` to include interpretation notes at `indicators[responseKey].explain`. Read numeric results from `columns` and `data` in the same object. ::: This is a trend indicator. ## Parameters | Parameter | Type | Default | |------|------|--------| | `length` | int | `9` | | `offset` | float | `0.85` | | `sigma` | float | `6` | ## Output columns | Column | |------| | `alma` | ## Native features This indicator has no independent native feature signals. A single Gaussian-weighted average without a native crossing counterpart or trigger. With `signals: true`, this indicator returns `signals: null`. Numeric values and charts remain available; no crossing, divergence or trade rules are added. ## Example call ```bash curl -X POST -H "Authorization: Bearer mq_xxx" \ -H "Content-Type: application/json" \ -d '{ "exchange": "binance", "market": "perp", "symbol": "BTCUSDT", "interval": "5m", "limit": 100, "calc": [{"name": "alma", "params": {"length": 9, "offset": 0.85, "sigma": 6}}] }' \ https://api.mobiusquant.ai/api/indicators ``` ## Full interpretation guide Field meanings, interpretation rules and usage notes are documented in Chinese at: [alma (中文详情)](https://docs.mobiusquant.ai/zh/indicators/alma) ## Related indicators [alligator](./alligator) · [ema](./ema) · [hma](./hma) · [hmm_regime](./hmm_regime) · [lsma](./lsma) · [mcginley_dynamic](./mcginley_dynamic) · [mobius_trend](./mobius_trend) · [parabolic_sar](./parabolic_sar) --- # `aroon_oscillator` — Aroon Oscillator > Category: **Trend Strength** · Standard ::: tip Reading the response Use `POST /api/indicators?explain=true` to include interpretation notes at `indicators[responseKey].explain`. Read numeric results from `columns` and `data` in the same object. ::: This is a trend strength indicator. ## Parameters | Parameter | Type | Default | |------|------|--------| | `length` | int | `14` | ## Output columns | Column | |------| | `aroon_dn` | | `aroon_osc` | | `aroon_up` | ## Native features Set top-level `signals: true` and read `indicators[responseKey].signals`. By default features are evaluated on closed bars: `true` is a positive result, `false` a valid negative result, and `null` unknown. These are not trade instructions. This indicator supports `include_forming: true`: treat the current final OHLCV sample as complete under the same native rules, returning one set of values, features and objects. The signal table appends `bar_status`: `closed` for closed bars, `forming` for a trial with `confirmed_at_ms=null`. A trial may disappear on later updates or at close. For BYO, still set `last_bar_closed: false`. Close requirements below describe the default mode; trials only admit the final sample without shortening structural windows or model confirmation requirements. See [forming trials](/signals#forming). History lengths are minimum evaluation requirements, not convergence guarantees. Comparisons use unrounded values and the exact boundaries below. Do not turn `null` into `false` on gaps, invalid dependencies or forming bars in the default mode. | Feature column | Kind | Rule | Meaning | History / validity | | --- | --- | --- | --- | --- | | `aroon_oscillator.cross_up` | `event` | Previous aroon_up <= aroon_dn; current aroon_up > aroon_dn. | Relative recency of the window high and low switches dominance, using the calculation's existing tie handling. | length + 2 contiguous bars and valid dependencies on both bars. | | `aroon_oscillator.cross_down` | `event` | Previous aroon_up >= aroon_dn; current aroon_up < aroon_dn. | Relative recency of the window high and low switches dominance, using the calculation's existing tie handling. | length + 2 contiguous bars and valid dependencies on both bars. | See [feature requests](/compute#native-features) for the format and examples. `/api/chart` also accepts `signals: true`, marking confirmed events by default. With `include_forming`, trial events also produce markers tagged `bar_status=forming`; states are not drawn on every bar. See [feature charts](/compute#feature-chart). ## Example call ```bash curl -X POST -H "Authorization: Bearer mq_xxx" \ -H "Content-Type: application/json" \ -d '{ "exchange": "binance", "market": "perp", "symbol": "BTCUSDT", "interval": "5m", "limit": 100, "signals": true, "calc": [{"name": "aroon_oscillator", "params": {"length": 14}}] }' \ https://api.mobiusquant.ai/api/indicators ``` ## Full interpretation guide Field meanings, interpretation rules and usage notes are documented in Chinese at: [aroon_oscillator (中文详情)](https://docs.mobiusquant.ai/zh/indicators/aroon_oscillator) ## Related indicators [adx](./adx) · [choppiness_index](./choppiness_index) · [vortex](./vortex) --- # `atr` — ATR > Category: **Volatility** · Standard ::: tip Reading the response Use `POST /api/indicators?explain=true` to include interpretation notes at `indicators[responseKey].explain`. Read numeric results from `columns` and `data` in the same object. ::: This is a volatility indicator. ## Parameters | Parameter | Type | Default | |------|------|--------| | `period` | int | `14` | ## Output columns | Column | |------| | `atr` | ## Native features This indicator has no independent native feature signals. Describes true range without direction or a fixed anomaly threshold; changes alone are not signals. With `signals: true`, this indicator returns `signals: null`. Numeric values and charts remain available; no crossing, divergence or trade rules are added. ## Example call ```bash curl -X POST -H "Authorization: Bearer mq_xxx" \ -H "Content-Type: application/json" \ -d '{ "exchange": "binance", "market": "perp", "symbol": "BTCUSDT", "interval": "5m", "limit": 100, "calc": [{"name": "atr", "params": {"period": 14}}] }' \ https://api.mobiusquant.ai/api/indicators ``` ## Full interpretation guide Field meanings, interpretation rules and usage notes are documented in Chinese at: [atr (中文详情)](https://docs.mobiusquant.ai/zh/indicators/atr) ## Related indicators [bollinger](./bollinger) · [chande_kroll_stop](./chande_kroll_stop) · [donchian_channels](./donchian_channels) · [fibonacci_bollinger_bands](./fibonacci_bollinger_bands) · [historical_volatility](./historical_volatility) · [keltner_channels](./keltner_channels) · [linear_regression_channel](./linear_regression_channel) · [mass_index](./mass_index) --- # `awesome_oscillator` — Awesome Oscillator > Category: **Momentum** · Standard ::: tip Reading the response Use `POST /api/indicators?explain=true` to include interpretation notes at `indicators[responseKey].explain`. Read numeric results from `columns` and `data` in the same object. ::: This is a momentum indicator. ## Parameters | Parameter | Type | Default | |------|------|--------| | `fast` | int | `5` | | `slow` | int | `34` | ## Output columns | Column | |------| | `ao` | ## Native features Set top-level `signals: true` and read `indicators[responseKey].signals`. By default features are evaluated on closed bars: `true` is a positive result, `false` a valid negative result, and `null` unknown. These are not trade instructions. This indicator supports `include_forming: true`: treat the current final OHLCV sample as complete under the same native rules, returning one set of values, features and objects. The signal table appends `bar_status`: `closed` for closed bars, `forming` for a trial with `confirmed_at_ms=null`. A trial may disappear on later updates or at close. For BYO, still set `last_bar_closed: false`. Close requirements below describe the default mode; trials only admit the final sample without shortening structural windows or model confirmation requirements. See [forming trials](/signals#forming). History lengths are minimum evaluation requirements, not convergence guarantees. Comparisons use unrounded values and the exact boundaries below. Do not turn `null` into `false` on gaps, invalid dependencies or forming bars in the default mode. | Feature column | Kind | Rule | Meaning | History / validity | | --- | --- | --- | --- | --- | | `awesome_oscillator.cross_up` | `event` | Previous ao <= 0; current ao > 0. | The short-minus-long median-price average changes sign; this is a momentum-relative change, not proof of a price reversal. | max(fast, slow) + 1 contiguous bars and valid dependencies on both bars. | | `awesome_oscillator.cross_down` | `event` | Previous ao >= 0; current ao < 0. | The short-minus-long median-price average changes sign; this is a momentum-relative change, not proof of a price reversal. | max(fast, slow) + 1 contiguous bars and valid dependencies on both bars. | See [feature requests](/compute#native-features) for the format and examples. `/api/chart` also accepts `signals: true`, marking confirmed events by default. With `include_forming`, trial events also produce markers tagged `bar_status=forming`; states are not drawn on every bar. See [feature charts](/compute#feature-chart). ## Example call ```bash curl -X POST -H "Authorization: Bearer mq_xxx" \ -H "Content-Type: application/json" \ -d '{ "exchange": "binance", "market": "perp", "symbol": "BTCUSDT", "interval": "5m", "limit": 100, "signals": true, "calc": [{"name": "awesome_oscillator", "params": {"fast": 5, "slow": 34}}] }' \ https://api.mobiusquant.ai/api/indicators ``` ## Full interpretation guide Field meanings, interpretation rules and usage notes are documented in Chinese at: [awesome_oscillator (中文详情)](https://docs.mobiusquant.ai/zh/indicators/awesome_oscillator) ## Related indicators [accelerator_oscillator](./accelerator_oscillator) · [cci](./cci) · [chande_mo](./chande_mo) · [connors_rsi](./connors_rsi) · [coppock_curve](./coppock_curve) · [dpo](./dpo) · [kst](./kst) · [macd](./macd) --- # `bollinger` — Bollinger > Category: **Volatility** · Standard ::: tip Reading the response Use `POST /api/indicators?explain=true` to include interpretation notes at `indicators[responseKey].explain`. Read numeric results from `columns` and `data` in the same object. ::: This is a volatility indicator. ## Parameters | Parameter | Type | Default | |------|------|--------| | `period` | int | `20` | | `std_dev` | float | `2` | ## Output columns | Column | |------| | `bb_lower` | | `bb_mid` | | `bb_upper` | ## Native features This indicator has no independent native feature signals. Provides mean/standard-deviation bands, without a defined breakout, reversion or squeeze-confirmation rule. With `signals: true`, this indicator returns `signals: null`. Numeric values and charts remain available; no crossing, divergence or trade rules are added. ## Example call ```bash curl -X POST -H "Authorization: Bearer mq_xxx" \ -H "Content-Type: application/json" \ -d '{ "exchange": "binance", "market": "perp", "symbol": "BTCUSDT", "interval": "5m", "limit": 100, "calc": [{"name": "bollinger", "params": {"period": 20, "std_dev": 2}}] }' \ https://api.mobiusquant.ai/api/indicators ``` ## Full interpretation guide Field meanings, interpretation rules and usage notes are documented in Chinese at: [bollinger (中文详情)](https://docs.mobiusquant.ai/zh/indicators/bollinger) ## Related indicators [atr](./atr) · [chande_kroll_stop](./chande_kroll_stop) · [donchian_channels](./donchian_channels) · [fibonacci_bollinger_bands](./fibonacci_bollinger_bands) · [historical_volatility](./historical_volatility) · [keltner_channels](./keltner_channels) · [linear_regression_channel](./linear_regression_channel) · [mass_index](./mass_index) --- # `cci` — CCI > Category: **Momentum** · Standard ::: tip Reading the response Use `POST /api/indicators?explain=true` to include interpretation notes at `indicators[responseKey].explain`. Read numeric results from `columns` and `data` in the same object. ::: This is a momentum indicator. ## Parameters | Parameter | Type | Default | |------|------|--------| | `length` | int | `20` | ## Output columns | Column | |------| | `cci` | ## Native features Set top-level `signals: true` and read `indicators[responseKey].signals`. By default features are evaluated on closed bars: `true` is a positive result, `false` a valid negative result, and `null` unknown. These are not trade instructions. This indicator supports `include_forming: true`: treat the current final OHLCV sample as complete under the same native rules, returning one set of values, features and objects. The signal table appends `bar_status`: `closed` for closed bars, `forming` for a trial with `confirmed_at_ms=null`. A trial may disappear on later updates or at close. For BYO, still set `last_bar_closed: false`. Close requirements below describe the default mode; trials only admit the final sample without shortening structural windows or model confirmation requirements. See [forming trials](/signals#forming). History lengths are minimum evaluation requirements, not convergence guarantees. Comparisons use unrounded values and the exact boundaries below. Do not turn `null` into `false` on gaps, invalid dependencies or forming bars in the default mode. | Feature column | Kind | Rule | Meaning | History / validity | | --- | --- | --- | --- | --- | | `cci.enter_overbought` | `event` | Previous cci <= 100; current cci > 100. | Typical-price deviation enters or exits the existing ±100 reference regions; reversal is not implied. | length + 1 contiguous bars and valid dependencies on both bars. | | `cci.exit_overbought` | `event` | Previous cci > 100; current cci <= 100. | Typical-price deviation enters or exits the existing ±100 reference regions; reversal is not implied. | length + 1 contiguous bars and valid dependencies on both bars. | | `cci.enter_oversold` | `event` | Previous cci >= -100; current cci < -100. | Typical-price deviation enters or exits the existing ±100 reference regions; reversal is not implied. | length + 1 contiguous bars and valid dependencies on both bars. | | `cci.exit_oversold` | `event` | Previous cci < -100; current cci >= -100. | Typical-price deviation enters or exits the existing ±100 reference regions; reversal is not implied. | length + 1 contiguous bars and valid dependencies on both bars. | See [feature requests](/compute#native-features) for the format and examples. `/api/chart` also accepts `signals: true`, marking confirmed events by default. With `include_forming`, trial events also produce markers tagged `bar_status=forming`; states are not drawn on every bar. See [feature charts](/compute#feature-chart). ## Example call ```bash curl -X POST -H "Authorization: Bearer mq_xxx" \ -H "Content-Type: application/json" \ -d '{ "exchange": "binance", "market": "perp", "symbol": "BTCUSDT", "interval": "5m", "limit": 100, "signals": true, "calc": [{"name": "cci", "params": {"length": 20}}] }' \ https://api.mobiusquant.ai/api/indicators ``` ## Full interpretation guide Field meanings, interpretation rules and usage notes are documented in Chinese at: [cci (中文详情)](https://docs.mobiusquant.ai/zh/indicators/cci) ## Related indicators [accelerator_oscillator](./accelerator_oscillator) · [awesome_oscillator](./awesome_oscillator) · [chande_mo](./chande_mo) · [connors_rsi](./connors_rsi) · [coppock_curve](./coppock_curve) · [dpo](./dpo) · [kst](./kst) · [macd](./macd) --- # `chaikin_oscillator` — Chaikin Oscillator > Category: **Volume** · Composite ::: tip Reading the response Use `POST /api/indicators?explain=true` to include interpretation notes at `indicators[responseKey].explain`. Read numeric results from `columns` and `data` in the same object. ::: This is a volume indicator. ## Parameters | Parameter | Type | Default | |------|------|--------| | `fast` | int | `3` | | `slow` | int | `10` | ## Output columns | Column | |------| | `acc_dist` | | `chaikin_osc` | ## Native features Set top-level `signals: true` and read `indicators[responseKey].signals`. By default features are evaluated on closed bars: `true` is a positive result, `false` a valid negative result, and `null` unknown. These are not trade instructions. This indicator supports `include_forming: true`: treat the current final OHLCV sample as complete under the same native rules, returning one set of values, features and objects. The signal table appends `bar_status`: `closed` for closed bars, `forming` for a trial with `confirmed_at_ms=null`. A trial may disappear on later updates or at close. For BYO, still set `last_bar_closed: false`. Close requirements below describe the default mode; trials only admit the final sample without shortening structural windows or model confirmation requirements. See [forming trials](/signals#forming). History lengths are minimum evaluation requirements, not convergence guarantees. Comparisons use unrounded values and the exact boundaries below. Do not turn `null` into `false` on gaps, invalid dependencies or forming bars in the default mode. | Feature column | Kind | Rule | Meaning | History / validity | | --- | --- | --- | --- | --- | | `chaikin_oscillator.cross_up` | `event` | Previous chaikin_osc <= 0; current chaikin_osc > 0. | The fast-minus-slow EMA of estimated accumulation/distribution changes sign, not actual cash inflows or outflows. | max(fast, slow) + 1 contiguous bars, valid dependencies and positive volume observed by both comparison bars. | | `chaikin_oscillator.cross_down` | `event` | Previous chaikin_osc >= 0; current chaikin_osc < 0. | The fast-minus-slow EMA of estimated accumulation/distribution changes sign, not actual cash inflows or outflows. | max(fast, slow) + 1 contiguous bars, valid dependencies and positive volume observed by both comparison bars. | See [feature requests](/compute#native-features) for the format and examples. `/api/chart` also accepts `signals: true`, marking confirmed events by default. With `include_forming`, trial events also produce markers tagged `bar_status=forming`; states are not drawn on every bar. See [feature charts](/compute#feature-chart). ## Example call ```bash curl -X POST -H "Authorization: Bearer mq_xxx" \ -H "Content-Type: application/json" \ -d '{ "exchange": "binance", "market": "perp", "symbol": "BTCUSDT", "interval": "5m", "limit": 100, "signals": true, "calc": [{"name": "chaikin_oscillator", "params": {"fast": 3, "slow": 10}}] }' \ https://api.mobiusquant.ai/api/indicators ``` ## Full interpretation guide Field meanings, interpretation rules and usage notes are documented in Chinese at: [chaikin_oscillator (中文详情)](https://docs.mobiusquant.ai/zh/indicators/chaikin_oscillator) ## Related indicators [cmf](./cmf) · [cvd](./cvd) · [kvo](./kvo) · [obv](./obv) · [pvo](./pvo) · [vwap](./vwap) --- # `chande_kroll_stop` — Chande Kroll STOP > Category: **Volatility** · Composite ::: tip Reading the response Use `POST /api/indicators?explain=true` to include interpretation notes at `indicators[responseKey].explain`. Read numeric results from `columns` and `data` in the same object. ::: This is a volatility indicator. ## Parameters | Parameter | Type | Default | |------|------|--------| | `p` | int | `10` | | `x` | int | `1` | | `q` | int | `9` | ## Output columns | Column | |------| | `stop_long` | | `stop_short` | ## Native features This indicator has no independent native feature signals. Provides two stop-reference levels, not a position state, crossing confirmation or executed stop. With `signals: true`, this indicator returns `signals: null`. Numeric values and charts remain available; no crossing, divergence or trade rules are added. ## Example call ```bash curl -X POST -H "Authorization: Bearer mq_xxx" \ -H "Content-Type: application/json" \ -d '{ "exchange": "binance", "market": "perp", "symbol": "BTCUSDT", "interval": "5m", "limit": 100, "calc": [{"name": "chande_kroll_stop", "params": {"p": 10, "x": 1, "q": 9}}] }' \ https://api.mobiusquant.ai/api/indicators ``` ## Full interpretation guide Field meanings, interpretation rules and usage notes are documented in Chinese at: [chande_kroll_stop (中文详情)](https://docs.mobiusquant.ai/zh/indicators/chande_kroll_stop) ## Related indicators [atr](./atr) · [bollinger](./bollinger) · [donchian_channels](./donchian_channels) · [fibonacci_bollinger_bands](./fibonacci_bollinger_bands) · [historical_volatility](./historical_volatility) · [keltner_channels](./keltner_channels) · [linear_regression_channel](./linear_regression_channel) · [mass_index](./mass_index) --- # `chande_mo` — Chande MO > Category: **Momentum** · Standard ::: tip Reading the response Use `POST /api/indicators?explain=true` to include interpretation notes at `indicators[responseKey].explain`. Read numeric results from `columns` and `data` in the same object. ::: This is a momentum indicator. ## Parameters | Parameter | Type | Default | |------|------|--------| | `length` | int | `9` | ## Output columns | Column | |------| | `cmo` | ## Native features Set top-level `signals: true` and read `indicators[responseKey].signals`. By default features are evaluated on closed bars: `true` is a positive result, `false` a valid negative result, and `null` unknown. These are not trade instructions. This indicator supports `include_forming: true`: treat the current final OHLCV sample as complete under the same native rules, returning one set of values, features and objects. The signal table appends `bar_status`: `closed` for closed bars, `forming` for a trial with `confirmed_at_ms=null`. A trial may disappear on later updates or at close. For BYO, still set `last_bar_closed: false`. Close requirements below describe the default mode; trials only admit the final sample without shortening structural windows or model confirmation requirements. See [forming trials](/signals#forming). History lengths are minimum evaluation requirements, not convergence guarantees. Comparisons use unrounded values and the exact boundaries below. Do not turn `null` into `false` on gaps, invalid dependencies or forming bars in the default mode. | Feature column | Kind | Rule | Meaning | History / validity | | --- | --- | --- | --- | --- | | `chande_mo.enter_overbought` | `event` | Previous cmo <= 50; current cmo > 50. | Up/down momentum imbalance enters or exits the existing ±50 reference regions. | length + 2 contiguous bars and valid dependencies on both bars. | | `chande_mo.exit_overbought` | `event` | Previous cmo > 50; current cmo <= 50. | Up/down momentum imbalance enters or exits the existing ±50 reference regions. | length + 2 contiguous bars and valid dependencies on both bars. | | `chande_mo.enter_oversold` | `event` | Previous cmo >= -50; current cmo < -50. | Up/down momentum imbalance enters or exits the existing ±50 reference regions. | length + 2 contiguous bars and valid dependencies on both bars. | | `chande_mo.exit_oversold` | `event` | Previous cmo < -50; current cmo >= -50. | Up/down momentum imbalance enters or exits the existing ±50 reference regions. | length + 2 contiguous bars and valid dependencies on both bars. | See [feature requests](/compute#native-features) for the format and examples. `/api/chart` also accepts `signals: true`, marking confirmed events by default. With `include_forming`, trial events also produce markers tagged `bar_status=forming`; states are not drawn on every bar. See [feature charts](/compute#feature-chart). ## Example call ```bash curl -X POST -H "Authorization: Bearer mq_xxx" \ -H "Content-Type: application/json" \ -d '{ "exchange": "binance", "market": "perp", "symbol": "BTCUSDT", "interval": "5m", "limit": 100, "signals": true, "calc": [{"name": "chande_mo", "params": {"length": 9}}] }' \ https://api.mobiusquant.ai/api/indicators ``` ## Full interpretation guide Field meanings, interpretation rules and usage notes are documented in Chinese at: [chande_mo (中文详情)](https://docs.mobiusquant.ai/zh/indicators/chande_mo) ## Related indicators [accelerator_oscillator](./accelerator_oscillator) · [awesome_oscillator](./awesome_oscillator) · [cci](./cci) · [connors_rsi](./connors_rsi) · [coppock_curve](./coppock_curve) · [dpo](./dpo) · [kst](./kst) · [macd](./macd) --- # `choppiness_index` — Choppiness Index > Category: **Trend Strength** · Composite ::: tip Reading the response Use `POST /api/indicators?explain=true` to include interpretation notes at `indicators[responseKey].explain`. Read numeric results from `columns` and `data` in the same object. ::: This is a trend strength indicator. ## Parameters | Parameter | Type | Default | |------|------|--------| | `length` | int | `14` | ## Output columns | Column | |------| | `chop` | ## Native features This indicator has no independent native feature signals. Describes choppiness; 38.2/61.8 are interpretation references, not a confirmed price-direction event. With `signals: true`, this indicator returns `signals: null`. Numeric values and charts remain available; no crossing, divergence or trade rules are added. ## Example call ```bash curl -X POST -H "Authorization: Bearer mq_xxx" \ -H "Content-Type: application/json" \ -d '{ "exchange": "binance", "market": "perp", "symbol": "BTCUSDT", "interval": "5m", "limit": 100, "calc": [{"name": "choppiness_index", "params": {"length": 14}}] }' \ https://api.mobiusquant.ai/api/indicators ``` ## Full interpretation guide Field meanings, interpretation rules and usage notes are documented in Chinese at: [choppiness_index (中文详情)](https://docs.mobiusquant.ai/zh/indicators/choppiness_index) ## Related indicators [adx](./adx) · [aroon_oscillator](./aroon_oscillator) · [vortex](./vortex) --- # `cmf` — CMF > Category: **Volume** · Standard ::: tip Reading the response Use `POST /api/indicators?explain=true` to include interpretation notes at `indicators[responseKey].explain`. Read numeric results from `columns` and `data` in the same object. ::: This is a volume indicator. ## Parameters | Parameter | Type | Default | |------|------|--------| | `length` | int | `20` | ## Output columns | Column | |------| | `cmf` | ## Native features Set top-level `signals: true` and read `indicators[responseKey].signals`. By default features are evaluated on closed bars: `true` is a positive result, `false` a valid negative result, and `null` unknown. These are not trade instructions. This indicator supports `include_forming: true`: treat the current final OHLCV sample as complete under the same native rules, returning one set of values, features and objects. The signal table appends `bar_status`: `closed` for closed bars, `forming` for a trial with `confirmed_at_ms=null`. A trial may disappear on later updates or at close. For BYO, still set `last_bar_closed: false`. Close requirements below describe the default mode; trials only admit the final sample without shortening structural windows or model confirmation requirements. See [forming trials](/signals#forming). History lengths are minimum evaluation requirements, not convergence guarantees. Comparisons use unrounded values and the exact boundaries below. Do not turn `null` into `false` on gaps, invalid dependencies or forming bars in the default mode. | Feature column | Kind | Rule | Meaning | History / validity | | --- | --- | --- | --- | --- | | `cmf.cross_up` | `event` | Previous cmf <= 0; current cmf > 0. | Volume-weighted closing-location pressure changes sign; this is an OHLCV estimate. | length + 1 contiguous bars, valid dependencies and positive volume observed by both comparison bars. | | `cmf.cross_down` | `event` | Previous cmf >= 0; current cmf < 0. | Volume-weighted closing-location pressure changes sign; this is an OHLCV estimate. | length + 1 contiguous bars, valid dependencies and positive volume observed by both comparison bars. | See [feature requests](/compute#native-features) for the format and examples. `/api/chart` also accepts `signals: true`, marking confirmed events by default. With `include_forming`, trial events also produce markers tagged `bar_status=forming`; states are not drawn on every bar. See [feature charts](/compute#feature-chart). ## Example call ```bash curl -X POST -H "Authorization: Bearer mq_xxx" \ -H "Content-Type: application/json" \ -d '{ "exchange": "binance", "market": "perp", "symbol": "BTCUSDT", "interval": "5m", "limit": 100, "signals": true, "calc": [{"name": "cmf", "params": {"length": 20}}] }' \ https://api.mobiusquant.ai/api/indicators ``` ## Full interpretation guide Field meanings, interpretation rules and usage notes are documented in Chinese at: [cmf (中文详情)](https://docs.mobiusquant.ai/zh/indicators/cmf) ## Related indicators [chaikin_oscillator](./chaikin_oscillator) · [cvd](./cvd) · [kvo](./kvo) · [obv](./obv) · [pvo](./pvo) · [vwap](./vwap) --- # `connors_rsi` — Connors RSI > Category: **Momentum** · Composite ::: tip Reading the response Use `POST /api/indicators?explain=true` to include interpretation notes at `indicators[responseKey].explain`. Read numeric results from `columns` and `data` in the same object. ::: This is a momentum indicator. ## Parameters | Parameter | Type | Default | |------|------|--------| | `len_rsi` | int | `3` | | `len_updown` | int | `2` | | `len_roc` | int | `100` | ## Output columns | Column | |------| | `crsi` | | `crsi_pctrank` | | `crsi_rsi` | | `crsi_updown` | ## Native features Set top-level `signals: true` and read `indicators[responseKey].signals`. By default features are evaluated on closed bars: `true` is a positive result, `false` a valid negative result, and `null` unknown. These are not trade instructions. This indicator supports `include_forming: true`: treat the current final OHLCV sample as complete under the same native rules, returning one set of values, features and objects. The signal table appends `bar_status`: `closed` for closed bars, `forming` for a trial with `confirmed_at_ms=null`. A trial may disappear on later updates or at close. For BYO, still set `last_bar_closed: false`. Close requirements below describe the default mode; trials only admit the final sample without shortening structural windows or model confirmation requirements. See [forming trials](/signals#forming). History lengths are minimum evaluation requirements, not convergence guarantees. Comparisons use unrounded values and the exact boundaries below. Do not turn `null` into `false` on gaps, invalid dependencies or forming bars in the default mode. | Feature column | Kind | Rule | Meaning | History / validity | | --- | --- | --- | --- | --- | | `connors_rsi.enter_overbought` | `event` | Previous crsi <= 90; current crsi > 90. | The composite enters or exits its existing 10/90 extremes; individual components are not treated as the composite. | max(len_rsi+1, len_updown+1, len_roc+2) + 1 contiguous bars and valid dependencies on both bars. | | `connors_rsi.exit_overbought` | `event` | Previous crsi > 90; current crsi <= 90. | The composite enters or exits its existing 10/90 extremes; individual components are not treated as the composite. | max(len_rsi+1, len_updown+1, len_roc+2) + 1 contiguous bars and valid dependencies on both bars. | | `connors_rsi.enter_oversold` | `event` | Previous crsi >= 10; current crsi < 10. | The composite enters or exits its existing 10/90 extremes; individual components are not treated as the composite. | max(len_rsi+1, len_updown+1, len_roc+2) + 1 contiguous bars and valid dependencies on both bars. | | `connors_rsi.exit_oversold` | `event` | Previous crsi < 10; current crsi >= 10. | The composite enters or exits its existing 10/90 extremes; individual components are not treated as the composite. | max(len_rsi+1, len_updown+1, len_roc+2) + 1 contiguous bars and valid dependencies on both bars. | See [feature requests](/compute#native-features) for the format and examples. `/api/chart` also accepts `signals: true`, marking confirmed events by default. With `include_forming`, trial events also produce markers tagged `bar_status=forming`; states are not drawn on every bar. See [feature charts](/compute#feature-chart). ## Example call ```bash curl -X POST -H "Authorization: Bearer mq_xxx" \ -H "Content-Type: application/json" \ -d '{ "exchange": "binance", "market": "perp", "symbol": "BTCUSDT", "interval": "5m", "limit": 100, "signals": true, "calc": [{"name": "connors_rsi", "params": {"len_rsi": 3, "len_updown": 2, "len_roc": 100}}] }' \ https://api.mobiusquant.ai/api/indicators ``` ## Full interpretation guide Field meanings, interpretation rules and usage notes are documented in Chinese at: [connors_rsi (中文详情)](https://docs.mobiusquant.ai/zh/indicators/connors_rsi) ## Related indicators [accelerator_oscillator](./accelerator_oscillator) · [awesome_oscillator](./awesome_oscillator) · [cci](./cci) · [chande_mo](./chande_mo) · [coppock_curve](./coppock_curve) · [dpo](./dpo) · [kst](./kst) · [macd](./macd) --- # `coppock_curve` — Coppock Curve > Category: **Momentum** · Composite ::: tip Reading the response Use `POST /api/indicators?explain=true` to include interpretation notes at `indicators[responseKey].explain`. Read numeric results from `columns` and `data` in the same object. ::: This is a momentum indicator. ## Parameters | Parameter | Type | Default | |------|------|--------| | `wma_length` | int | `10` | | `long_roc` | int | `14` | | `short_roc` | int | `11` | ## Output columns | Column | |------| | `coppock` | ## Native features Set top-level `signals: true` and read `indicators[responseKey].signals`. By default features are evaluated on closed bars: `true` is a positive result, `false` a valid negative result, and `null` unknown. These are not trade instructions. This indicator supports `include_forming: true`: treat the current final OHLCV sample as complete under the same native rules, returning one set of values, features and objects. The signal table appends `bar_status`: `closed` for closed bars, `forming` for a trial with `confirmed_at_ms=null`. A trial may disappear on later updates or at close. For BYO, still set `last_bar_closed: false`. Close requirements below describe the default mode; trials only admit the final sample without shortening structural windows or model confirmation requirements. See [forming trials](/signals#forming). History lengths are minimum evaluation requirements, not convergence guarantees. Comparisons use unrounded values and the exact boundaries below. Do not turn `null` into `false` on gaps, invalid dependencies or forming bars in the default mode. | Feature column | Kind | Rule | Meaning | History / validity | | --- | --- | --- | --- | --- | | `coppock_curve.cross_up` | `event` | Previous coppock <= 0; current coppock > 0. | The weighted smoothing of two lookback returns changes sign, not a guaranteed cycle bottom. | max(long_roc, short_roc) + wma_length + 1 contiguous bars and valid dependencies on both bars. | | `coppock_curve.cross_down` | `event` | Previous coppock >= 0; current coppock < 0. | The weighted smoothing of two lookback returns changes sign, not a guaranteed cycle bottom. | max(long_roc, short_roc) + wma_length + 1 contiguous bars and valid dependencies on both bars. | See [feature requests](/compute#native-features) for the format and examples. `/api/chart` also accepts `signals: true`, marking confirmed events by default. With `include_forming`, trial events also produce markers tagged `bar_status=forming`; states are not drawn on every bar. See [feature charts](/compute#feature-chart). ## Example call ```bash curl -X POST -H "Authorization: Bearer mq_xxx" \ -H "Content-Type: application/json" \ -d '{ "exchange": "binance", "market": "perp", "symbol": "BTCUSDT", "interval": "5m", "limit": 100, "signals": true, "calc": [{"name": "coppock_curve", "params": {"wma_length": 10, "long_roc": 14, "short_roc": 11}}] }' \ https://api.mobiusquant.ai/api/indicators ``` ## Full interpretation guide Field meanings, interpretation rules and usage notes are documented in Chinese at: [coppock_curve (中文详情)](https://docs.mobiusquant.ai/zh/indicators/coppock_curve) ## Related indicators [accelerator_oscillator](./accelerator_oscillator) · [awesome_oscillator](./awesome_oscillator) · [cci](./cci) · [chande_mo](./chande_mo) · [connors_rsi](./connors_rsi) · [dpo](./dpo) · [kst](./kst) · [macd](./macd) --- # `cvd` — CVD > Category: **Volume** · Composite ::: tip Reading the response Use `POST /api/indicators?explain=true` to include interpretation notes at `indicators[responseKey].explain`. Read numeric results from `columns` and `data` in the same object. ::: This is a volume indicator. ## Parameters | Parameter | Type | Default | |------|------|--------| | `fractal_periods` | int | `2` | | `cvd_period` | int | `21` | | `ema_trend_period` | int | `50` | | `max_pivot_bars` | int | `30` | ## Output columns | Column | |------| | `bear_div` | | `bear_div_strength` | | `bull_div` | | `bull_div_strength` | | `cvd_delta` | | `cvd_hist` | ## Histogram values and divergence ranges `cvd_hist` is the per-candle histogram height: positive values indicate buying pressure and negative values selling pressure. It is a rolling sum of OHLCV-estimated delta, not trade-level aggressive buy/sell flow. Gold spot without actual trading volume does not support CVD. Indicators, BYO compute and analyze responses include `objects.divergences` to each CVD result. Each confirmed event contains: | Field | Meaning | | --- | --- | | `id` | Stable parameter/direction/endpoint identity; namespace by venue, symbol, interval and indicator instance | | `direction`, `kind` | `bullish` or `bearish`; currently `regular` divergence only | | `start`, `end` | Each has `time_ms`, `price`, `cvd`: a price pivot and CVD on that same candle | | `confirmation_bar_time_ms` | Open time of the confirmation candle, not the second pivot | | `confirmed_at_ms` | Confirmation candle close computed from the interval; null if no interval was supplied | | `status`, `label` | `confirmed`; bullish `+RD`, bearish `-RD` | | `strength` | Consecutive-divergence level 1–3, not a probability or win rate | All event times are **milliseconds**. A range connects two pivots; it is not a holding period or signal expiry. The default pivot needs two bars on its right. Live APIs confirm only after the confirmation candle's interval has elapsed, while the forming histogram bar can still change. Revised source data or different warmup history can change results. BYO compute assumes the caller supplies closed bars. Set top-level `last_bar_closed: false` when the last bar is forming; earlier bars must be closed. Supply `interval` to obtain exact interval-based close times; do not infer durations from gaps in the input. Set `signals: true` and `include_forming: true` on calculation/chart requests to evaluate the final OHLCV sample as complete. Pivot windows, trend filtering and strength rules are unchanged; missing right-hand candles are never invented. In this mode `objects.schema_version=2` and the corresponding chart `indicator_renderers` declaration also uses version 2. The same `divergences` collection may contain `status=forming` objects with `confirmed_at_ms=null`; closed objects remain `confirmed`. Feature IDs are unchanged: the word `confirmed` in an ID does not prove an actual close. A trial may disappear on updates; identical parameters, direction and endpoints retain the object ID. Chart event markers, CVD lines and endpoint markers carry `bar_status` (`forming` or `closed`). Omitting or disabling the option preserves the original object schema and confirmation behavior. Chart responses include both `indicator_objects` and standard `panels.items`: price lines on the main panel, CVD lines on the subpanel, RD endpoint labels and arrows at confirmation bars (replaced by unified event markers with `signals: true`). Chart-item `time` is in **seconds**. The renderer declaration uses `type=cvd-divergence`, `rendered_in_panels=true`: items are already materialized, so clients must not render duplicate overlays. Events are filtered by confirmation candle; original endpoints remain intact while drawing geometry is clipped to the visible window. Multiple CVD instances are isolated by request ID/response key. ## Native features Set top-level `signals: true` and read `indicators[responseKey].signals`. By default features are evaluated on closed bars: `true` is a positive result, `false` a valid negative result, and `null` unknown. These are not trade instructions. This indicator supports `include_forming: true`: treat the current final OHLCV sample as complete under the same native rules, returning one set of values, features and objects. The signal table appends `bar_status`: `closed` for closed bars, `forming` for a trial with `confirmed_at_ms=null`. A trial may disappear on later updates or at close. For BYO, still set `last_bar_closed: false`. Close requirements below describe the default mode; trials only admit the final sample without shortening structural windows or model confirmation requirements. See [forming trials](/signals#forming). History lengths are minimum evaluation requirements, not convergence guarantees. Comparisons use unrounded values and the exact boundaries below. Do not turn `null` into `false` on gaps, invalid dependencies or forming bars in the default mode. | Feature column | Kind | Rule | Meaning | History / validity | | --- | --- | --- | --- | --- | | `cvd.bullish_divergence_confirmed` | `event` | A regular bullish divergence is confirmed on this bar; endpoints and strength are in objects.divergences. | Price and estimated OHLCV delta diverge between consecutive eligible pivots; not trade-level flow or a guaranteed reversal. | max(cvd_period, ema_trend_period, 2 * fractal_periods + 1) contiguous bars with some positive volume. | | `cvd.bearish_divergence_confirmed` | `event` | A regular bearish divergence is confirmed on this bar; endpoints and strength are in objects.divergences. | Price and estimated OHLCV delta diverge between consecutive eligible pivots; not trade-level flow or a guaranteed reversal. | max(cvd_period, ema_trend_period, 2 * fractal_periods + 1) contiguous bars with some positive volume. | ### `cvd.bullish_divergence_confirmed` - A lower price low with a higher cvd_hist low; both cvd_hist values < 0 and pivot closes < EMA(ema_trend_period). - Both pivots must pass the EMA trend filter; their distance is strictly less than max_pivot_bars. - A high pivot is strictly above neighboring highs; a low pivot is strictly below neighboring lows over fractal_periods bars on each side. Confirm on the rightmost bar's close, never backfill to the pivot. ### `cvd.bearish_divergence_confirmed` - A higher price high with a lower cvd_hist high; both cvd_hist values > 0 and pivot closes > EMA(ema_trend_period). - Both pivots must pass the EMA trend filter; their distance is strictly less than max_pivot_bars. - A high pivot is strictly above neighboring highs; a low pivot is strictly below neighboring lows over fractal_periods bars on each side. Confirm on the rightmost bar's close, never backfill to the pivot. See [feature requests](/compute#native-features) for the format and examples. `/api/chart` also accepts `signals: true`, marking confirmed events by default. With `include_forming`, trial events also produce markers tagged `bar_status=forming`; states are not drawn on every bar. See [feature charts](/compute#feature-chart). ## Example call ```bash curl -X POST -H "Authorization: Bearer mq_xxx" \ -H "Content-Type: application/json" \ -d '{ "exchange": "binance", "market": "perp", "symbol": "BTCUSDT", "interval": "5m", "limit": 100, "signals": true, "calc": [{"name": "cvd", "params": {"fractal_periods": 2, "cvd_period": 21, "ema_trend_period": 50, "max_pivot_bars": 30}}] }' \ https://api.mobiusquant.ai/api/indicators ``` ## Full interpretation guide Field meanings, interpretation rules and usage notes are documented in Chinese at: [cvd (中文详情)](https://docs.mobiusquant.ai/zh/indicators/cvd) ## Related indicators [chaikin_oscillator](./chaikin_oscillator) · [cmf](./cmf) · [kvo](./kvo) · [obv](./obv) · [pvo](./pvo) · [vwap](./vwap) --- # `donchian_channels` — Donchian Channels > Category: **Volatility** · Standard ::: tip Reading the response Use `POST /api/indicators?explain=true` to include interpretation notes at `indicators[responseKey].explain`. Read numeric results from `columns` and `data` in the same object. ::: This is a volatility indicator. ## Parameters | Parameter | Type | Default | |------|------|--------| | `length` | int | `20` | ## Output columns | Column | |------| | `dc_basis` | | `dc_lower` | | `dc_upper` | ## Native features Set top-level `signals: true` and read `indicators[responseKey].signals`. By default features are evaluated on closed bars: `true` is a positive result, `false` a valid negative result, and `null` unknown. These are not trade instructions. This indicator supports `include_forming: true`: treat the current final OHLCV sample as complete under the same native rules, returning one set of values, features and objects. The signal table appends `bar_status`: `closed` for closed bars, `forming` for a trial with `confirmed_at_ms=null`. A trial may disappear on later updates or at close. For BYO, still set `last_bar_closed: false`. Close requirements below describe the default mode; trials only admit the final sample without shortening structural windows or model confirmation requirements. See [forming trials](/signals#forming). History lengths are minimum evaluation requirements, not convergence guarantees. Comparisons use unrounded values and the exact boundaries below. Do not turn `null` into `false` on gaps, invalid dependencies or forming bars in the default mode. | Feature column | Kind | Rule | Meaning | History / validity | | --- | --- | --- | --- | --- | | `donchian_channels.breakout_up` | `event` | Current close > previous dc_upper. | The close breaks the preceding completed window, excluding the current bar. Consecutive new extremes may trigger on consecutive bars. | length + 1 contiguous bars and a valid preceding channel. | | `donchian_channels.breakout_down` | `event` | Current close < previous dc_lower. | The close breaks the preceding completed window, excluding the current bar. Consecutive new extremes may trigger on consecutive bars. | length + 1 contiguous bars and a valid preceding channel. | See [feature requests](/compute#native-features) for the format and examples. `/api/chart` also accepts `signals: true`, marking confirmed events by default. With `include_forming`, trial events also produce markers tagged `bar_status=forming`; states are not drawn on every bar. See [feature charts](/compute#feature-chart). ## Example call ```bash curl -X POST -H "Authorization: Bearer mq_xxx" \ -H "Content-Type: application/json" \ -d '{ "exchange": "binance", "market": "perp", "symbol": "BTCUSDT", "interval": "5m", "limit": 100, "signals": true, "calc": [{"name": "donchian_channels", "params": {"length": 20}}] }' \ https://api.mobiusquant.ai/api/indicators ``` ## Full interpretation guide Field meanings, interpretation rules and usage notes are documented in Chinese at: [donchian_channels (中文详情)](https://docs.mobiusquant.ai/zh/indicators/donchian_channels) ## Related indicators [atr](./atr) · [bollinger](./bollinger) · [chande_kroll_stop](./chande_kroll_stop) · [fibonacci_bollinger_bands](./fibonacci_bollinger_bands) · [historical_volatility](./historical_volatility) · [keltner_channels](./keltner_channels) · [linear_regression_channel](./linear_regression_channel) · [mass_index](./mass_index) --- # `dpo` — DPO > Category: **Momentum** · Standard ::: tip Reading the response Use `POST /api/indicators?explain=true` to include interpretation notes at `indicators[responseKey].explain`. Read numeric results from `columns` and `data` in the same object. ::: This is a momentum indicator. ## Parameters | Parameter | Type | Default | |------|------|--------| | `length` | int | `21` | ## Output columns | Column | |------| | `dpo` | ## Native features Set top-level `signals: true` and read `indicators[responseKey].signals`. By default features are evaluated on closed bars: `true` is a positive result, `false` a valid negative result, and `null` unknown. These are not trade instructions. This indicator supports `include_forming: true`: treat the current final OHLCV sample as complete under the same native rules, returning one set of values, features and objects. The signal table appends `bar_status`: `closed` for closed bars, `forming` for a trial with `confirmed_at_ms=null`. A trial may disappear on later updates or at close. For BYO, still set `last_bar_closed: false`. Close requirements below describe the default mode; trials only admit the final sample without shortening structural windows or model confirmation requirements. See [forming trials](/signals#forming). History lengths are minimum evaluation requirements, not convergence guarantees. Comparisons use unrounded values and the exact boundaries below. Do not turn `null` into `false` on gaps, invalid dependencies or forming bars in the default mode. | Feature column | Kind | Rule | Meaning | History / validity | | --- | --- | --- | --- | --- | | `dpo.cross_up` | `event` | Previous dpo <= 0; current dpo > 0. | The close's deviation from the SMA delayed by floor(length/2)+1 bars changes sign; no price top/bottom is identified. | length + floor(length/2) + 2 contiguous valid bars. | | `dpo.cross_down` | `event` | Previous dpo >= 0; current dpo < 0. | The close's deviation from the SMA delayed by floor(length/2)+1 bars changes sign; no price top/bottom is identified. | length + floor(length/2) + 2 contiguous valid bars. | See [feature requests](/compute#native-features) for the format and examples. `/api/chart` also accepts `signals: true`, marking confirmed events by default. With `include_forming`, trial events also produce markers tagged `bar_status=forming`; states are not drawn on every bar. See [feature charts](/compute#feature-chart). ## Example call ```bash curl -X POST -H "Authorization: Bearer mq_xxx" \ -H "Content-Type: application/json" \ -d '{ "exchange": "binance", "market": "perp", "symbol": "BTCUSDT", "interval": "5m", "limit": 100, "signals": true, "calc": [{"name": "dpo", "params": {"length": 21}}] }' \ https://api.mobiusquant.ai/api/indicators ``` ## Full interpretation guide Field meanings, interpretation rules and usage notes are documented in Chinese at: [dpo (中文详情)](https://docs.mobiusquant.ai/zh/indicators/dpo) ## Related indicators [accelerator_oscillator](./accelerator_oscillator) · [awesome_oscillator](./awesome_oscillator) · [cci](./cci) · [chande_mo](./chande_mo) · [connors_rsi](./connors_rsi) · [coppock_curve](./coppock_curve) · [kst](./kst) · [macd](./macd) --- # `ema` — EMA > Category: **Trend** · Standard ::: tip Reading the response Use `POST /api/indicators?explain=true` to include interpretation notes at `indicators[responseKey].explain`. Read numeric results from `columns` and `data` in the same object. ::: This is a trend indicator. ## Parameters | Parameter | Type | Default | |------|------|--------| | `period` | int | `20` | ## Output columns | Column | |------| | `ema_20` | ## Native features This indicator has no independent native feature signals. Outputs one average; a second average or a price-cross rule is not part of this indicator. With `signals: true`, this indicator returns `signals: null`. Numeric values and charts remain available; no crossing, divergence or trade rules are added. ## Example call ```bash curl -X POST -H "Authorization: Bearer mq_xxx" \ -H "Content-Type: application/json" \ -d '{ "exchange": "binance", "market": "perp", "symbol": "BTCUSDT", "interval": "5m", "limit": 100, "calc": [{"name": "ema", "params": {"period": 20}}] }' \ https://api.mobiusquant.ai/api/indicators ``` ## Full interpretation guide Field meanings, interpretation rules and usage notes are documented in Chinese at: [ema (中文详情)](https://docs.mobiusquant.ai/zh/indicators/ema) ## Related indicators [alligator](./alligator) · [alma](./alma) · [hma](./hma) · [hmm_regime](./hmm_regime) · [lsma](./lsma) · [mcginley_dynamic](./mcginley_dynamic) · [mobius_trend](./mobius_trend) · [parabolic_sar](./parabolic_sar) --- # `fibonacci_bollinger_bands` — Fibonacci Bollinger Bands > Category: **Volatility** · Composite ::: tip Reading the response Use `POST /api/indicators?explain=true` to include interpretation notes at `indicators[responseKey].explain`. Read numeric results from `columns` and `data` in the same object. ::: This is a volatility indicator. ## Parameters | Parameter | Type | Default | |------|------|--------| | `length` | int | `200` | | `mult` | float | `3` | ## Output columns | Column | |------| | `fbb_basis` | | `fbb_lower_1000` | | `fbb_lower_236` | | `fbb_lower_382` | | `fbb_lower_500` | | `fbb_lower_618` | | `fbb_lower_764` | | `fbb_upper_1000` | | `fbb_upper_236` | | `fbb_upper_382` | | `fbb_upper_500` | | `fbb_upper_618` | | `fbb_upper_764` | ## Native features This indicator has no independent native feature signals. Provides multiple volume-weighted bands without a selected trigger level or reversal-confirmation rule. With `signals: true`, this indicator returns `signals: null`. Numeric values and charts remain available; no crossing, divergence or trade rules are added. ## Example call ```bash curl -X POST -H "Authorization: Bearer mq_xxx" \ -H "Content-Type: application/json" \ -d '{ "exchange": "binance", "market": "perp", "symbol": "BTCUSDT", "interval": "5m", "limit": 100, "calc": [{"name": "fibonacci_bollinger_bands", "params": {"length": 200, "mult": 3}}] }' \ https://api.mobiusquant.ai/api/indicators ``` ## Full interpretation guide Field meanings, interpretation rules and usage notes are documented in Chinese at: [fibonacci_bollinger_bands (中文详情)](https://docs.mobiusquant.ai/zh/indicators/fibonacci_bollinger_bands) ## Related indicators [atr](./atr) · [bollinger](./bollinger) · [chande_kroll_stop](./chande_kroll_stop) · [donchian_channels](./donchian_channels) · [historical_volatility](./historical_volatility) · [keltner_channels](./keltner_channels) · [linear_regression_channel](./linear_regression_channel) · [mass_index](./mass_index) --- # `fisher_transform` — Fisher Transform > Category: **Oscillator** · Composite ::: tip Reading the response Use `POST /api/indicators?explain=true` to include interpretation notes at `indicators[responseKey].explain`. Read numeric results from `columns` and `data` in the same object. ::: This is a oscillator indicator. ## Parameters | Parameter | Type | Default | |------|------|--------| | `length` | int | `9` | ## Output columns | Column | |------| | `fisher` | | `fisher_trigger` | ## Native features Set top-level `signals: true` and read `indicators[responseKey].signals`. By default features are evaluated on closed bars: `true` is a positive result, `false` a valid negative result, and `null` unknown. These are not trade instructions. This indicator supports `include_forming: true`: treat the current final OHLCV sample as complete under the same native rules, returning one set of values, features and objects. The signal table appends `bar_status`: `closed` for closed bars, `forming` for a trial with `confirmed_at_ms=null`. A trial may disappear on later updates or at close. For BYO, still set `last_bar_closed: false`. Close requirements below describe the default mode; trials only admit the final sample without shortening structural windows or model confirmation requirements. See [forming trials](/signals#forming). History lengths are minimum evaluation requirements, not convergence guarantees. Comparisons use unrounded values and the exact boundaries below. Do not turn `null` into `false` on gaps, invalid dependencies or forming bars in the default mode. | Feature column | Kind | Rule | Meaning | History / validity | | --- | --- | --- | --- | --- | | `fisher_transform.cross_up` | `event` | Previous fisher <= fisher_trigger; current fisher > fisher_trigger. | Fisher crosses its one-bar lag, identifying a change in its movement; the trigger is not an independent forecast. | length + 2 contiguous bars; both bars have valid dependencies and nonzero rolling hl2 ranges. | | `fisher_transform.cross_down` | `event` | Previous fisher >= fisher_trigger; current fisher < fisher_trigger. | Fisher crosses its one-bar lag, identifying a change in its movement; the trigger is not an independent forecast. | length + 2 contiguous bars; both bars have valid dependencies and nonzero rolling hl2 ranges. | See [feature requests](/compute#native-features) for the format and examples. `/api/chart` also accepts `signals: true`, marking confirmed events by default. With `include_forming`, trial events also produce markers tagged `bar_status=forming`; states are not drawn on every bar. See [feature charts](/compute#feature-chart). ## Example call ```bash curl -X POST -H "Authorization: Bearer mq_xxx" \ -H "Content-Type: application/json" \ -d '{ "exchange": "binance", "market": "perp", "symbol": "BTCUSDT", "interval": "5m", "limit": 100, "signals": true, "calc": [{"name": "fisher_transform", "params": {"length": 9}}] }' \ https://api.mobiusquant.ai/api/indicators ``` ## Full interpretation guide Field meanings, interpretation rules and usage notes are documented in Chinese at: [fisher_transform (中文详情)](https://docs.mobiusquant.ai/zh/indicators/fisher_transform) ## Related indicators [rci_ribbon](./rci_ribbon) · [rsi](./rsi) · [rvi](./rvi) --- # `historical_volatility` — Historical Volatility > Category: **Volatility** · Standard ::: tip Reading the response Use `POST /api/indicators?explain=true` to include interpretation notes at `indicators[responseKey].explain`. Read numeric results from `columns` and `data` in the same object. ::: This is a volatility indicator. ## Parameters | Parameter | Type | Default | |------|------|--------| | `length` | int | `10` | ## Output columns | Column | |------| | `hv` | ## Native features This indicator has no independent native feature signals. Outputs annualized volatility without a direction or a defined anomaly level. With `signals: true`, this indicator returns `signals: null`. Numeric values and charts remain available; no crossing, divergence or trade rules are added. ## Example call ```bash curl -X POST -H "Authorization: Bearer mq_xxx" \ -H "Content-Type: application/json" \ -d '{ "exchange": "binance", "market": "perp", "symbol": "BTCUSDT", "interval": "5m", "limit": 100, "calc": [{"name": "historical_volatility", "params": {"length": 10}}] }' \ https://api.mobiusquant.ai/api/indicators ``` ## Full interpretation guide Field meanings, interpretation rules and usage notes are documented in Chinese at: [historical_volatility (中文详情)](https://docs.mobiusquant.ai/zh/indicators/historical_volatility) ## Related indicators [atr](./atr) · [bollinger](./bollinger) · [chande_kroll_stop](./chande_kroll_stop) · [donchian_channels](./donchian_channels) · [fibonacci_bollinger_bands](./fibonacci_bollinger_bands) · [keltner_channels](./keltner_channels) · [linear_regression_channel](./linear_regression_channel) · [mass_index](./mass_index) --- # `hma` — HMA > Category: **Trend** · Standard ::: tip Reading the response Use `POST /api/indicators?explain=true` to include interpretation notes at `indicators[responseKey].explain`. Read numeric results from `columns` and `data` in the same object. ::: This is a trend indicator. ## Parameters | Parameter | Type | Default | |------|------|--------| | `length` | int | `9` | ## Output columns | Column | |------| | `hma` | ## Native features This indicator has no independent native feature signals. A single Hull average with no independent event rule. With `signals: true`, this indicator returns `signals: null`. Numeric values and charts remain available; no crossing, divergence or trade rules are added. ## Example call ```bash curl -X POST -H "Authorization: Bearer mq_xxx" \ -H "Content-Type: application/json" \ -d '{ "exchange": "binance", "market": "perp", "symbol": "BTCUSDT", "interval": "5m", "limit": 100, "calc": [{"name": "hma", "params": {"length": 9}}] }' \ https://api.mobiusquant.ai/api/indicators ``` ## Full interpretation guide Field meanings, interpretation rules and usage notes are documented in Chinese at: [hma (中文详情)](https://docs.mobiusquant.ai/zh/indicators/hma) ## Related indicators [alligator](./alligator) · [alma](./alma) · [ema](./ema) · [hmm_regime](./hmm_regime) · [lsma](./lsma) · [mcginley_dynamic](./mcginley_dynamic) · [mobius_trend](./mobius_trend) · [parabolic_sar](./parabolic_sar) --- # HMM Dual-scale Direction ## Example request Use `POST /api/indicators` to calculate HMM from market data. Set `id: "hmm"` to read the result at `indicators.hmm`. ```bash curl -X POST 'https://api.mobiusquant.ai/api/indicators?explain=false' \ -H 'Content-Type: application/json' \ -d '{ "exchange": "binance", "market": "perp", "symbol": "BTCUSDT", "interval": "1h", "limit": 100, "calc": [{"name": "hmm_regime", "id": "hmm"}] }' ``` Live support covers connected Binance, Bybit, OKX and Hyperliquid feeds at `5m / 15m / 1h / 4h / 1d`, including [Binance stock perpetuals](/markets#binance-stock-perp), but not stock spot venues. See [integration basics](../agents) for authentication and common request fields. ## Parameters All parameters are optional and belong in `calc[].params`. Omitted parameters use their defaults. | Parameter | Type | Default | Values / range | Description | | --- | --- | --- | --- | --- | | `horizon` | integer | `20` | 5–100 | Local scale; the context scale is three times this value. | | `fast_weight` | number | `0.35` | 0–1 | Weight assigned to fast-changing evidence. | | `stick` | number | `0.97` | 0.80–0.999 | Persistence parameter; higher values favor retaining the current direction. | | `confirm` | integer | `3` | 1–10 | Consecutive qualifying closed bars needed to establish or switch direction. | | `dominance` | number | `0.55` | 0.34–0.95 | Minimum model weight for a candidate direction. | | `margin` | number | `0.15` | 0–0.9 | Minimum weight advantage over the runner-up. | | `normalization` | string | `auto` | auto, d1, legacy | Calculation mode: select automatically by interval, or specify d1 or legacy. | `normalization: "auto"` selects d1 for 5m/15m/1h and legacy for 4h/12h/1d. To specify a mode: `{"name":"hmm_regime","id":"hmm","params":{"normalization":"legacy"}}`. ## Response Only `indicators.hmm` is shown below. Values illustrate the structure; they are not live market data. Each row in `data` corresponds to one candle, with values ordered as listed in `columns`. ```json { "columns": [ "open_time", "hmm_state", "hmm_status", "hmm_p_up", "hmm_p_range", "hmm_p_down", "hmm_context_state", "hmm_context_status", "hmm_supported" ], "data": [ [1735689600000, 1, "confirmed", 0.7, 0.2, 0.1, 1, "confirmed", true] ], "meta": { "schema_version": 3, "model_version": "mobius-direction-v2", "effective_normalization": "d1", "history_start_ms": 1717693200000, "history_status": "ready", "history_bars": 5000, "last_bar_closed": true, "last_confirmed_time_ms": 1735689600000 } } ``` | Field | Type | Description | | --- | --- | --- | | `open_time` | integer | Candle open time in Unix milliseconds. | | `hmm_state` | integer | Retained local direction. | | `hmm_status` | string | Local status: unavailable, uncertain or confirmed. | | `hmm_p_up` | number | Local up model weight, 0–1. | | `hmm_p_range` | number | Local range model weight, 0–1. | | `hmm_p_down` | number | Local down model weight, 0–1. | | `hmm_context_state` | integer | Context direction at horizon×3 on the same candle interval. | | `hmm_context_status` | string | Context status; uses the same values as hmm_status. | | `hmm_supported` | boolean / null | Whether closed-bar evidence supports the retained local direction; see below. | Both direction fields use: `-1` no valid direction yet, `0` range, `1` up, `2` down. Context is a slower scale on the same candle interval, not data from another timeframe. The three weights sum to approximately 1. They express relative model support for the current categories, not future-return probabilities or win rates. When status is unavailable, the initial 1/3 weights do not provide a valid assessment. If complete history is required, check `meta.history_status === "ready"`; otherwise, results may change. `ready` does not mean a confirmed direction. Read `hmm_status` and `hmm_context_status` for direction status.
meta fields | Field | Description | | --- | --- | | `history_status` | History availability: warming (preparing), ready (complete), or partial (incomplete). Market-data requests only. | | `history_bars` | Actual calculation input count, including history before the output window; live requests only. | | `schema_version` | Response schema version; currently 3. | | `model_version` | Calculation model identifier; currently mobius-direction-v2. | | `effective_normalization` | Effective mode: d1 or legacy. | | `history_start_ms` | Open time of the first calculation input, in milliseconds. | | `last_bar_closed` | Whether the last returned bar is closed; null for an empty window. | | `last_confirmed_time_ms` | Open time, in milliseconds, of the last closed input bar up to the returned window end; null if none. Not a direction-switch time. |
## Read the result Use column names instead of hard-coded array positions. This converts the latest row to an object, or returns null if there are no rows. ```js const result = response.indicators.hmm; const row = result.data.at(-1); const latest = row ? Object.fromEntries(result.columns.map((field, i) => [field, row[i]])) : null; // latest?.hmm_state // latest?.hmm_supported ``` | Status | Meaning | | --- | --- | | `unavailable` | Insufficient history or gap recovery; do not infer a direction. | | `uncertain` | The first direction is pending, or current evidence does not support the retained direction. | | `confirmed` | Direction is confirmed and supported by current evidence. | | hmm_supported | Meaning | | --- | --- | | `true` | Current evidence supports the retained local direction. | | `false` | A direction is retained, but current evidence does not support it; this does not confirm a reversal. | | `null` | No valid direction yet. | For example, `hmm_state=1` with `hmm_supported=false` retains up, but lacks current supporting evidence. By default results update only on closed bars. A forming final candle carries the latest committed direction, weights and support. With `signals: true` and `include_forming: true`, the current final OHLCV sample participates once as complete. Direction, weights, support and features all come from that trial and can change or disappear on updates. Model requirements such as `confirm` are unchanged; repeated requests do not increase the confirmation count. In this mode `hmm_status=confirmed` means the model conditions hold, not that the candle actually closed: its signals have `bar_status=forming` and `confirmed_at_ms=null`. `meta.last_bar_closed` and `meta.last_confirmed_time_ms` still describe actual input closure; `meta.include_forming=true` identifies the trial mode. ## Bring your own candles Use `POST /api/indicators/compute`. See [BYO computation](../compute) for the candle format. - Supply `interval`: 5m/15m/1h/4h/12h/1d. The 12h interval is available only for BYO computation. - Input is assumed closed. Set top-level `last_bar_closed: false` if only the final candle is forming. - HMM-only requests accept up to 5000 candles; mixed requests accept 2000. At most eight HMM instances per request. - Timestamps must be strictly increasing milliseconds, and OHLC values must be positive. Do not fill gaps with duplicates. At the default horizon=20, d1 needs 20/60 input bars for local/context readiness; legacy needs 153/461. Consecutive direction confirmation is additional. Changing horizon changes history requirements; check status for availability. To compare results, use identical data, history start, interval, parameters and closed-bar flags. ## Chart Change the example endpoint to `POST /api/chart` and keep the same request body. The HMM subpanel in `panels[]` uses the request ID (hmm in this example). Its `items` contain Up / Range / Down lines, using the three model weights on a 0–1 scale. Chart points use `time` in Unix **seconds**; calculation rows use `open_time` in **milliseconds**. History readiness and input count are available at `indicator_meta.hmm` (keyed by request ID). ## Native features Set top-level `signals: true` and read `indicators[responseKey].signals`. By default features are evaluated on closed bars: `true` is a positive result, `false` a valid negative result, and `null` unknown. These are not trade instructions. This indicator supports `include_forming: true`: treat the current final OHLCV sample as complete under the same native rules, returning one set of values, features and objects. The signal table appends `bar_status`: `closed` for closed bars, `forming` for a trial with `confirmed_at_ms=null`. A trial may disappear on later updates or at close. For BYO, still set `last_bar_closed: false`. Close requirements below describe the default mode; trials only admit the final sample without shortening structural windows or model confirmation requirements. See [forming trials](/signals#forming). History lengths are minimum evaluation requirements, not convergence guarantees. Comparisons use unrounded values and the exact boundaries below. Do not turn `null` into `false` on gaps, invalid dependencies or forming bars in the default mode. | Feature column | Kind | Rule | Meaning | History / validity | | --- | --- | --- | --- | --- | | `hmm_regime.direction_established` | `event` | hmm_state changes from -1 to 0/1/2 with local inputs available. | A qualifying candidate establishes a retained direction after confirm bars; this is not a reversal. | Uses readiness of the relevant scale; events need consecutive closed bars. Support changes require the same valid direction on both bars. | | `hmm_regime.direction_changed` | `event` | Both hmm_state values are 0/1/2 and they differ. | The retained local direction switches; read hmm_state for the new direction. | Uses readiness of the relevant scale; events need consecutive closed bars. Support changes require the same valid direction on both bars. | | `hmm_regime.context_established` | `event` | hmm_context_state changes from -1 to 0/1/2 with context inputs available. | First confirmation at the longer scale of the same candle interval, not a higher-timeframe confirmation. | Uses readiness of the relevant scale; events need consecutive closed bars. Support changes require the same valid direction on both bars. | | `hmm_regime.context_changed` | `event` | Both hmm_context_state values are 0/1/2 and they differ. | The retained longer-scale direction changes; read hmm_context_state. | Uses readiness of the relevant scale; events need consecutive closed bars. Support changes require the same valid direction on both bars. | | `hmm_regime.support_lost` | `event` | Retained local direction is unchanged and hmm_supported changes from true to false. | Evidence no longer supports the retained direction, which has not switched. | Uses readiness of the relevant scale; events need consecutive closed bars. Support changes require the same valid direction on both bars. | | `hmm_regime.support_restored` | `event` | Retained local direction is unchanged and hmm_supported changes from false to true. | Evidence supports the same direction again, without a new confirm streak or direction switch. | Uses readiness of the relevant scale; events need consecutive closed bars. Support changes require the same valid direction on both bars. | | `hmm_regime.evidence_supported` | `state` | Uses hmm_supported; null without a valid retained direction or on a forming bar. | True means supported, false means unsupported; neither is a calibrated price forecast. | Uses readiness of the relevant scale; events need consecutive closed bars. Support changes require the same valid direction on both bars. | See [feature requests](/compute#native-features) for the format and examples. `/api/chart` also accepts `signals: true`, marking confirmed events by default. With `include_forming`, trial events also produce markers tagged `bar_status=forming`; states are not drawn on every bar. See [feature charts](/compute#feature-chart). --- # Indicator Catalog There are **59** indicators. Use the [registry](https://api.mobiusquant.ai/api/indicators/registry) for parameter and output definitions and the [catalog](https://api.mobiusquant.ai/api/indicators/catalog) for chart support. ## Request and response Call `POST /api/indicators`. Each `calc[]` item has a `name`, optional `params`, and optional `id`: ```json {"exchange":"binance","market":"perp","symbol":"BTCUSDT","interval":"5m","limit":100,"calc":[{"name":"rsi","id":"rsi","params":{"period":14}}]} ``` This partial response illustrates the structure. Read `indicators[responseKey]`; `columns` defines the order of values in each `data` row. Candle `open_time` is in milliseconds. ```json { "indicators": { "rsi": { "columns": ["open_time", "rsi"], "data": [[1735689600000, 55.0]], "explain": { "name": "RSI", "summary_focus": ["当前 RSI 数值及近期变化"] } } } } ``` Use `?explain=true` to include interpretation notes under each indicator's `explain`; use `?explain=false` for numeric results only. Interpretation notes are returned in Chinese. | Field | Use | | --- | --- | | `columns` / `data` | Field names and per-candle values | | `objects` | Events or ranges returned by some indicators; see their reference pages | | `meta` | Result status returned by some indicators; see their reference pages | | `explain.summary_focus` | Interpretation notes | | `explain.outputs` / `signals` / `caveats` | Indicator-specific field meanings, signal rules and limitations; not present for every indicator | ## Category breakdown | Category | Count | Examples | | --- | --- | --- | | `base` | 1 | `price` | | `momentum` | 18 | MACD, RSI family, TSI, ... | | `oscillator` | 4 | RSI, Fisher Transform, RVI | | `trend` | 15 | EMA, SuperTrend, PSAR, [HMM](./hmm_regime) | | `trend_strength` | 4 | ADX, Aroon, Vortex | | `volatility` | 10 | ATR, Bollinger, Keltner, ... | | `volume` | 7 | OBV, CMF, CVD, KVO, VWAP | ::: tip Registry vs catalog - `/api/indicators/registry` → full self-description (params, output cols, types) — consumed by programs - `/api/indicators/catalog` → chartable subset + drawing metadata — consumed by chart clients - `/api/indicators` → POST compute endpoint, returns klines + indicator values ::: --- ## Möbius Lab (proprietary) | ID | Category | | --- | --- | | [`mobius_trend`](./mobius_trend) | trend | | [`smc`](./smc) | trend | These are MobiusQuant in-house indicators, not classic public ones. --- ## All indicators ### base (1) | ID | | --- | | [`price`](./price) | ### momentum (18) | ID | | --- | | [`accelerator_oscillator`](./accelerator_oscillator) | | [`awesome_oscillator`](./awesome_oscillator) | | [`cci`](./cci) | | [`chande_mo`](./chande_mo) | | [`connors_rsi`](./connors_rsi) | | [`coppock_curve`](./coppock_curve) | | [`dpo`](./dpo) | | [`kst`](./kst) | | [`macd`](./macd) | | [`momentum`](./momentum) | | [`ppo`](./ppo) | | [`roc`](./roc) | | [`smi_ergodic`](./smi_ergodic) | | [`stoch_rsi`](./stoch_rsi) | | [`trix`](./trix) | | [`tsi`](./tsi) | | [`ultimate_oscillator`](./ultimate_oscillator) | | [`williams_r`](./williams_r) | ### oscillator (4) | ID | | --- | | [`fisher_transform`](./fisher_transform) | | [`rci_ribbon`](./rci_ribbon) | | [`rsi`](./rsi) | | [`rvi`](./rvi) | ### trend (15) | ID | | --- | | [`alligator`](./alligator) | | [`alma`](./alma) | | [`ema`](./ema) | | [`hma`](./hma) | | [`hmm_regime`](./hmm_regime) | | [`lsma`](./lsma) | | [`mcginley_dynamic`](./mcginley_dynamic) | | [`mobius_trend`](./mobius_trend) | | [`parabolic_sar`](./parabolic_sar) | | [`pi_cycle_bottom`](./pi_cycle_bottom) | | [`smc`](./smc) | | [`supertrend`](./supertrend) | | [`tema`](./tema) | | [`vwma`](./vwma) | | [`williams_stops`](./williams_stops) | ### trend_strength (4) | ID | | --- | | [`adx`](./adx) | | [`aroon_oscillator`](./aroon_oscillator) | | [`choppiness_index`](./choppiness_index) | | [`vortex`](./vortex) | ### volatility (10) | ID | | --- | | [`atr`](./atr) | | [`bollinger`](./bollinger) | | [`chande_kroll_stop`](./chande_kroll_stop) | | [`donchian_channels`](./donchian_channels) | | [`fibonacci_bollinger_bands`](./fibonacci_bollinger_bands) | | [`historical_volatility`](./historical_volatility) | | [`keltner_channels`](./keltner_channels) | | [`linear_regression_channel`](./linear_regression_channel) | | [`mass_index`](./mass_index) | | [`stdev`](./stdev) | ### volume (7) | ID | | --- | | [`chaikin_oscillator`](./chaikin_oscillator) | | [`cmf`](./cmf) | | [`cvd`](./cvd) | | [`kvo`](./kvo) | | [`obv`](./obv) | | [`pvo`](./pvo) | | [`vwap`](./vwap) | --- ## Usage examples ### Single indicator: EMA(20) on BTC 5-minute ```bash curl -X POST -H "Authorization: Bearer mq_xxx" \ -H "Content-Type: application/json" \ -d '{ "exchange": "binance", "market": "perp", "symbol": "BTCUSDT", "interval": "5m", "limit": 100, "calc": [{"name": "ema", "params": {"period": 20}}] }' \ https://api.mobiusquant.ai/api/indicators ``` ### Multiple indicators: RSI + MACD + Bollinger ```bash curl -X POST -H "Authorization: Bearer mq_xxx" \ -H "Content-Type: application/json" \ -d '{ "exchange": "binance", "market": "perp", "symbol": "BTCUSDT", "interval": "1h", "limit": 200, "calc": [ {"name": "rsi", "params": {"period": 14}}, {"name": "macd", "params": {"fast": 12, "slow": 26, "signal": 9}}, {"name": "bollinger", "params": {"period": 20, "stdev": 2}} ] }' \ https://api.mobiusquant.ai/api/indicators ``` ### Same indicator with different params (use `id` to disambiguate) ```json { "calc": [ {"id": "ema_fast", "name": "ema", "params": {"period": 12}}, {"id": "ema_slow", "name": "ema", "params": {"period": 26}} ] } ``` --- ## Full interpretation guide The detailed signal interpretation, analysis focus points, and caveats for each indicator are documented in Chinese. Each English detail page links to its Chinese counterpart at the bottom. For the rich Chinese version of this catalog: [Chinese version](/zh/indicators/). ## Companion endpoints | Method | Path | Purpose | | --- | --- | --- | | GET | `/api/indicators/registry` | All indicators — param signatures + output columns | | GET | `/api/indicators/catalog` | Chartable subset + drawing protocol | | POST | `/api/indicators` | Compute endpoint — returns klines + indicator values | | POST | `/api/chart` | Same + drawing protocol for chart-rendering clients | --- # `keltner_channels` — Keltner Channels > Category: **Volatility** · Standard ::: tip Reading the response Use `POST /api/indicators?explain=true` to include interpretation notes at `indicators[responseKey].explain`. Read numeric results from `columns` and `data` in the same object. ::: This is a volatility indicator. ## Parameters | Parameter | Type | Default | |------|------|--------| | `length` | int | `20` | | `mult` | float | `2` | | `atr_length` | int | `10` | ## Output columns | Column | |------| | `kc_lower` | | `kc_mid` | | `kc_upper` | ## Native features This indicator has no independent native feature signals. Provides EMA/ATR bands without breakout confirmation or cross-indicator combinations. With `signals: true`, this indicator returns `signals: null`. Numeric values and charts remain available; no crossing, divergence or trade rules are added. ## Example call ```bash curl -X POST -H "Authorization: Bearer mq_xxx" \ -H "Content-Type: application/json" \ -d '{ "exchange": "binance", "market": "perp", "symbol": "BTCUSDT", "interval": "5m", "limit": 100, "calc": [{"name": "keltner_channels", "params": {"length": 20, "mult": 2, "atr_length": 10}}] }' \ https://api.mobiusquant.ai/api/indicators ``` ## Full interpretation guide Field meanings, interpretation rules and usage notes are documented in Chinese at: [keltner_channels (中文详情)](https://docs.mobiusquant.ai/zh/indicators/keltner_channels) ## Related indicators [atr](./atr) · [bollinger](./bollinger) · [chande_kroll_stop](./chande_kroll_stop) · [donchian_channels](./donchian_channels) · [fibonacci_bollinger_bands](./fibonacci_bollinger_bands) · [historical_volatility](./historical_volatility) · [linear_regression_channel](./linear_regression_channel) · [mass_index](./mass_index) --- # `kst` — KST > Category: **Momentum** · Composite ::: tip Reading the response Use `POST /api/indicators?explain=true` to include interpretation notes at `indicators[responseKey].explain`. Read numeric results from `columns` and `data` in the same object. ::: This is a momentum indicator. ## Parameters | Parameter | Type | Default | |------|------|--------| | `roclen1` | int | `10` | | `smalen1` | int | `10` | | `roclen2` | int | `15` | | `smalen2` | int | `10` | | `roclen3` | int | `20` | | `smalen3` | int | `10` | | `roclen4` | int | `30` | | `smalen4` | int | `15` | | `siglen` | int | `9` | ## Output columns | Column | |------| | `kst` | | `kst_signal` | ## Native features Set top-level `signals: true` and read `indicators[responseKey].signals`. By default features are evaluated on closed bars: `true` is a positive result, `false` a valid negative result, and `null` unknown. These are not trade instructions. This indicator supports `include_forming: true`: treat the current final OHLCV sample as complete under the same native rules, returning one set of values, features and objects. The signal table appends `bar_status`: `closed` for closed bars, `forming` for a trial with `confirmed_at_ms=null`. A trial may disappear on later updates or at close. For BYO, still set `last_bar_closed: false`. Close requirements below describe the default mode; trials only admit the final sample without shortening structural windows or model confirmation requirements. See [forming trials](/signals#forming). History lengths are minimum evaluation requirements, not convergence guarantees. Comparisons use unrounded values and the exact boundaries below. Do not turn `null` into `false` on gaps, invalid dependencies or forming bars in the default mode. | Feature column | Kind | Rule | Meaning | History / validity | | --- | --- | --- | --- | --- | | `kst.cross_up` | `event` | Previous kst <= kst_signal; current kst > kst_signal. | Multi-horizon weighted momentum crosses its mean. | max(roclen1+smalen1, roclen2+smalen2, roclen3+smalen3, roclen4+smalen4) + siglen contiguous bars and valid dependencies on both bars. | | `kst.cross_down` | `event` | Previous kst >= kst_signal; current kst < kst_signal. | Multi-horizon weighted momentum crosses its mean. | max(roclen1+smalen1, roclen2+smalen2, roclen3+smalen3, roclen4+smalen4) + siglen contiguous bars and valid dependencies on both bars. | See [feature requests](/compute#native-features) for the format and examples. `/api/chart` also accepts `signals: true`, marking confirmed events by default. With `include_forming`, trial events also produce markers tagged `bar_status=forming`; states are not drawn on every bar. See [feature charts](/compute#feature-chart). ## Example call ```bash curl -X POST -H "Authorization: Bearer mq_xxx" \ -H "Content-Type: application/json" \ -d '{ "exchange": "binance", "market": "perp", "symbol": "BTCUSDT", "interval": "5m", "limit": 100, "signals": true, "calc": [{"name": "kst", "params": {"roclen1": 10, "smalen1": 10, "roclen2": 15, "smalen2": 10, "roclen3": 20, "smalen3": 10, "roclen4": 30, "smalen4": 15, "siglen": 9}}] }' \ https://api.mobiusquant.ai/api/indicators ``` ## Full interpretation guide Field meanings, interpretation rules and usage notes are documented in Chinese at: [kst (中文详情)](https://docs.mobiusquant.ai/zh/indicators/kst) ## Related indicators [accelerator_oscillator](./accelerator_oscillator) · [awesome_oscillator](./awesome_oscillator) · [cci](./cci) · [chande_mo](./chande_mo) · [connors_rsi](./connors_rsi) · [coppock_curve](./coppock_curve) · [dpo](./dpo) · [macd](./macd) --- # `kvo` — KVO > Category: **Volume** · Composite ::: tip Reading the response Use `POST /api/indicators?explain=true` to include interpretation notes at `indicators[responseKey].explain`. Read numeric results from `columns` and `data` in the same object. ::: This is a volume indicator. ## Parameters | Parameter | Type | Default | |------|------|--------| | `fast_len` | int | `14` | | `slow_len` | int | `45` | | `kvo_stdev_window` | int | `70` | ## Output columns | Column | |------| | `kvo` | | `kvo_std` | ## Native features Set top-level `signals: true` and read `indicators[responseKey].signals`. By default features are evaluated on closed bars: `true` is a positive result, `false` a valid negative result, and `null` unknown. These are not trade instructions. This indicator supports `include_forming: true`: treat the current final OHLCV sample as complete under the same native rules, returning one set of values, features and objects. The signal table appends `bar_status`: `closed` for closed bars, `forming` for a trial with `confirmed_at_ms=null`. A trial may disappear on later updates or at close. For BYO, still set `last_bar_closed: false`. Close requirements below describe the default mode; trials only admit the final sample without shortening structural windows or model confirmation requirements. See [forming trials](/signals#forming). History lengths are minimum evaluation requirements, not convergence guarantees. Comparisons use unrounded values and the exact boundaries below. Do not turn `null` into `false` on gaps, invalid dependencies or forming bars in the default mode. | Feature column | Kind | Rule | Meaning | History / validity | | --- | --- | --- | --- | --- | | `kvo.cross_up` | `event` | Previous kvo <= 0; current kvo > 0. | The fast-minus-slow EMA of signed volume changes sign; kvo_std is not used to invent strength thresholds. | max(fast_len, slow_len) + 2 contiguous bars, valid dependencies and positive volume observed by both comparison bars. | | `kvo.cross_down` | `event` | Previous kvo >= 0; current kvo < 0. | The fast-minus-slow EMA of signed volume changes sign; kvo_std is not used to invent strength thresholds. | max(fast_len, slow_len) + 2 contiguous bars, valid dependencies and positive volume observed by both comparison bars. | See [feature requests](/compute#native-features) for the format and examples. `/api/chart` also accepts `signals: true`, marking confirmed events by default. With `include_forming`, trial events also produce markers tagged `bar_status=forming`; states are not drawn on every bar. See [feature charts](/compute#feature-chart). ## Example call ```bash curl -X POST -H "Authorization: Bearer mq_xxx" \ -H "Content-Type: application/json" \ -d '{ "exchange": "binance", "market": "perp", "symbol": "BTCUSDT", "interval": "5m", "limit": 100, "signals": true, "calc": [{"name": "kvo", "params": {"fast_len": 14, "slow_len": 45, "kvo_stdev_window": 70}}] }' \ https://api.mobiusquant.ai/api/indicators ``` ## Full interpretation guide Field meanings, interpretation rules and usage notes are documented in Chinese at: [kvo (中文详情)](https://docs.mobiusquant.ai/zh/indicators/kvo) ## Related indicators [chaikin_oscillator](./chaikin_oscillator) · [cmf](./cmf) · [cvd](./cvd) · [obv](./obv) · [pvo](./pvo) · [vwap](./vwap) --- # `linear_regression_channel` — Linear Regression Channel > Category: **Volatility** · Composite ::: tip Reading the response Use `POST /api/indicators?explain=true` to include interpretation notes at `indicators[responseKey].explain`. Read numeric results from `columns` and `data` in the same object. ::: This is a volatility indicator. ## Parameters | Parameter | Type | Default | |------|------|--------| | `length` | int | `100` | | `devlen` | float | `2` | ## Output columns | Column | |------| | `lr_lower` | | `lr_mid` | | `lr_slope` | | `lr_upper` | ## Native features This indicator has no independent native feature signals. Outputs regression position, bands and slope, without a confirmed breakout or trend event. With `signals: true`, this indicator returns `signals: null`. Numeric values and charts remain available; no crossing, divergence or trade rules are added. ## Example call ```bash curl -X POST -H "Authorization: Bearer mq_xxx" \ -H "Content-Type: application/json" \ -d '{ "exchange": "binance", "market": "perp", "symbol": "BTCUSDT", "interval": "5m", "limit": 100, "calc": [{"name": "linear_regression_channel", "params": {"length": 100, "devlen": 2}}] }' \ https://api.mobiusquant.ai/api/indicators ``` ## Full interpretation guide Field meanings, interpretation rules and usage notes are documented in Chinese at: [linear_regression_channel (中文详情)](https://docs.mobiusquant.ai/zh/indicators/linear_regression_channel) ## Related indicators [atr](./atr) · [bollinger](./bollinger) · [chande_kroll_stop](./chande_kroll_stop) · [donchian_channels](./donchian_channels) · [fibonacci_bollinger_bands](./fibonacci_bollinger_bands) · [historical_volatility](./historical_volatility) · [keltner_channels](./keltner_channels) · [mass_index](./mass_index) --- # `lsma` — LSMA > Category: **Trend** · Standard ::: tip Reading the response Use `POST /api/indicators?explain=true` to include interpretation notes at `indicators[responseKey].explain`. Read numeric results from `columns` and `data` in the same object. ::: This is a trend indicator. ## Parameters | Parameter | Type | Default | |------|------|--------| | `length` | int | `25` | | `offset` | int | `0` | ## Output columns | Column | |------| | `lsma` | ## Native features This indicator has no independent native feature signals. A fitted regression average, not a confirmed trend-switch event. With `signals: true`, this indicator returns `signals: null`. Numeric values and charts remain available; no crossing, divergence or trade rules are added. ## Example call ```bash curl -X POST -H "Authorization: Bearer mq_xxx" \ -H "Content-Type: application/json" \ -d '{ "exchange": "binance", "market": "perp", "symbol": "BTCUSDT", "interval": "5m", "limit": 100, "calc": [{"name": "lsma", "params": {"length": 25, "offset": 0}}] }' \ https://api.mobiusquant.ai/api/indicators ``` ## Full interpretation guide Field meanings, interpretation rules and usage notes are documented in Chinese at: [lsma (中文详情)](https://docs.mobiusquant.ai/zh/indicators/lsma) ## Related indicators [alligator](./alligator) · [alma](./alma) · [ema](./ema) · [hma](./hma) · [hmm_regime](./hmm_regime) · [mcginley_dynamic](./mcginley_dynamic) · [mobius_trend](./mobius_trend) · [parabolic_sar](./parabolic_sar) --- # `macd` — MACD > Category: **Momentum** · Standard ::: tip Reading the response Use `POST /api/indicators?explain=true` to include interpretation notes at `indicators[responseKey].explain`. Read numeric results from `columns` and `data` in the same object. ::: This is a momentum indicator. ## Parameters | Parameter | Type | Default | |------|------|--------| | `fast` | int | `12` | | `slow` | int | `26` | | `signal` | int | `9` | ## Output columns | Column | |------| | `hist` | | `macd` | | `signal` | ## Native features Set top-level `signals: true` and read `indicators[responseKey].signals`. By default features are evaluated on closed bars: `true` is a positive result, `false` a valid negative result, and `null` unknown. These are not trade instructions. This indicator supports `include_forming: true`: treat the current final OHLCV sample as complete under the same native rules, returning one set of values, features and objects. The signal table appends `bar_status`: `closed` for closed bars, `forming` for a trial with `confirmed_at_ms=null`. A trial may disappear on later updates or at close. For BYO, still set `last_bar_closed: false`. Close requirements below describe the default mode; trials only admit the final sample without shortening structural windows or model confirmation requirements. See [forming trials](/signals#forming). History lengths are minimum evaluation requirements, not convergence guarantees. Comparisons use unrounded values and the exact boundaries below. Do not turn `null` into `false` on gaps, invalid dependencies or forming bars in the default mode. | Feature column | Kind | Rule | Meaning | History / validity | | --- | --- | --- | --- | --- | | `macd.cross_up` | `event` | Previous MACD <= Signal; current MACD > Signal. | MACD's momentum relationship to its signal line or zero; crossings are events, relative positions are states, not trade instructions. | max(fast, slow) + signal contiguous bars with valid dependencies. | | `macd.cross_down` | `event` | Previous MACD >= Signal; current MACD < Signal. | MACD's momentum relationship to its signal line or zero; crossings are events, relative positions are states, not trade instructions. | max(fast, slow) + signal contiguous bars with valid dependencies. | | `macd.zero_cross_up` | `event` | Previous MACD <= 0; current MACD > 0. | MACD's momentum relationship to its signal line or zero; crossings are events, relative positions are states, not trade instructions. | max(fast, slow) + signal contiguous bars with valid dependencies. | | `macd.zero_cross_down` | `event` | Previous MACD >= 0; current MACD < 0. | MACD's momentum relationship to its signal line or zero; crossings are events, relative positions are states, not trade instructions. | max(fast, slow) + signal contiguous bars with valid dependencies. | | `macd.above_signal` | `state` | Current MACD > Signal. | MACD's momentum relationship to its signal line or zero; crossings are events, relative positions are states, not trade instructions. | max(fast, slow) + signal - 1 contiguous bars with valid dependencies. | | `macd.below_signal` | `state` | Current MACD < Signal. | MACD's momentum relationship to its signal line or zero; crossings are events, relative positions are states, not trade instructions. | max(fast, slow) + signal - 1 contiguous bars with valid dependencies. | ### `macd.zero_cross_up` - Zero crossings refer to the MACD line, not the histogram. ### `macd.zero_cross_down` - Zero crossings refer to the MACD line, not the histogram. See [feature requests](/compute#native-features) for the format and examples. `/api/chart` also accepts `signals: true`, marking confirmed events by default. With `include_forming`, trial events also produce markers tagged `bar_status=forming`; states are not drawn on every bar. See [feature charts](/compute#feature-chart). ## Example call ```bash curl -X POST -H "Authorization: Bearer mq_xxx" \ -H "Content-Type: application/json" \ -d '{ "exchange": "binance", "market": "perp", "symbol": "BTCUSDT", "interval": "5m", "limit": 100, "signals": true, "calc": [{"name": "macd", "params": {"fast": 12, "slow": 26, "signal": 9}}] }' \ https://api.mobiusquant.ai/api/indicators ``` ## Full interpretation guide Field meanings, interpretation rules and usage notes are documented in Chinese at: [macd (中文详情)](https://docs.mobiusquant.ai/zh/indicators/macd) ## Related indicators [accelerator_oscillator](./accelerator_oscillator) · [awesome_oscillator](./awesome_oscillator) · [cci](./cci) · [chande_mo](./chande_mo) · [connors_rsi](./connors_rsi) · [coppock_curve](./coppock_curve) · [dpo](./dpo) · [kst](./kst) --- # `mass_index` — MASS Index > Category: **Volatility** · Composite ::: tip Reading the response Use `POST /api/indicators?explain=true` to include interpretation notes at `indicators[responseKey].explain`. Read numeric results from `columns` and `data` in the same object. ::: This is a volatility indicator. ## Parameters | Parameter | Type | Default | |------|------|--------| | `ema_length` | int | `9` | | `length` | int | `10` | ## Output columns | Column | |------| | `mi` | ## Native features This indicator has no independent native feature signals. Describes accumulated range ratios; no complete expansion/contraction confirmation exists, so reference level 27 is not a reversal event. With `signals: true`, this indicator returns `signals: null`. Numeric values and charts remain available; no crossing, divergence or trade rules are added. ## Example call ```bash curl -X POST -H "Authorization: Bearer mq_xxx" \ -H "Content-Type: application/json" \ -d '{ "exchange": "binance", "market": "perp", "symbol": "BTCUSDT", "interval": "5m", "limit": 100, "calc": [{"name": "mass_index", "params": {"ema_length": 9, "length": 10}}] }' \ https://api.mobiusquant.ai/api/indicators ``` ## Full interpretation guide Field meanings, interpretation rules and usage notes are documented in Chinese at: [mass_index (中文详情)](https://docs.mobiusquant.ai/zh/indicators/mass_index) ## Related indicators [atr](./atr) · [bollinger](./bollinger) · [chande_kroll_stop](./chande_kroll_stop) · [donchian_channels](./donchian_channels) · [fibonacci_bollinger_bands](./fibonacci_bollinger_bands) · [historical_volatility](./historical_volatility) · [keltner_channels](./keltner_channels) · [linear_regression_channel](./linear_regression_channel) --- # `mcginley_dynamic` — Mcginley Dynamic > Category: **Trend** · Standard ::: tip Reading the response Use `POST /api/indicators?explain=true` to include interpretation notes at `indicators[responseKey].explain`. Read numeric results from `columns` and `data` in the same object. ::: This is a trend indicator. ## Parameters | Parameter | Type | Default | |------|------|--------| | `length` | int | `14` | ## Output columns | Column | |------| | `mg` | ## Native features This indicator has no independent native feature signals. An adaptive smoothed price with no defined crossing counterpart or event. With `signals: true`, this indicator returns `signals: null`. Numeric values and charts remain available; no crossing, divergence or trade rules are added. ## Example call ```bash curl -X POST -H "Authorization: Bearer mq_xxx" \ -H "Content-Type: application/json" \ -d '{ "exchange": "binance", "market": "perp", "symbol": "BTCUSDT", "interval": "5m", "limit": 100, "calc": [{"name": "mcginley_dynamic", "params": {"length": 14}}] }' \ https://api.mobiusquant.ai/api/indicators ``` ## Full interpretation guide Field meanings, interpretation rules and usage notes are documented in Chinese at: [mcginley_dynamic (中文详情)](https://docs.mobiusquant.ai/zh/indicators/mcginley_dynamic) ## Related indicators [alligator](./alligator) · [alma](./alma) · [ema](./ema) · [hma](./hma) · [hmm_regime](./hmm_regime) · [lsma](./lsma) · [mobius_trend](./mobius_trend) · [parabolic_sar](./parabolic_sar) --- # `mobius_trend` — Mobius Trend > Category: **Trend** · Composite · 🧪 Möbius Lab ::: tip Reading the response Use `POST /api/indicators?explain=true` to include interpretation notes at `indicators[responseKey].explain`. Read numeric results from `columns` and `data` in the same object. ::: This is a trend indicator. ## Parameters | Parameter | Type | Default | |------|------|--------| | `left_bars` | int | `15` | | `right_bars` | int | `14` | | `offset` | float | `1.75` | | `atr_period` | int | `200` | ## Output columns | Column | |------| | `trend` | | `trend_value` | ## Native features Set top-level `signals: true` and read `indicators[responseKey].signals`. By default features are evaluated on closed bars: `true` is a positive result, `false` a valid negative result, and `null` unknown. These are not trade instructions. This indicator supports `include_forming: true`: treat the current final OHLCV sample as complete under the same native rules, returning one set of values, features and objects. The signal table appends `bar_status`: `closed` for closed bars, `forming` for a trial with `confirmed_at_ms=null`. A trial may disappear on later updates or at close. For BYO, still set `last_bar_closed: false`. Close requirements below describe the default mode; trials only admit the final sample without shortening structural windows or model confirmation requirements. See [forming trials](/signals#forming). History lengths are minimum evaluation requirements, not convergence guarantees. Comparisons use unrounded values and the exact boundaries below. Do not turn `null` into `false` on gaps, invalid dependencies or forming bars in the default mode. | Feature column | Kind | Rule | Meaning | History / validity | | --- | --- | --- | --- | --- | | `mobius_trend.reversal_up` | `event` | Previous trend=-1; current trend=1. Initialization is not a reversal. | Reuses the ATR-offset pivot state machine; a close crossing the relevant confirmed pivot changes direction. No pivot-time backfill. | atr_period + left_bars + right_bars + 2 contiguous bars with valid direction and active reference on both bars. | | `mobius_trend.reversal_down` | `event` | Previous trend=1; current trend=-1. Initialization is not a reversal. | Reuses the ATR-offset pivot state machine; a close crossing the relevant confirmed pivot changes direction. No pivot-time backfill. | atr_period + left_bars + right_bars + 2 contiguous bars with valid direction and active reference on both bars. | See [feature requests](/compute#native-features) for the format and examples. `/api/chart` also accepts `signals: true`, marking confirmed events by default. With `include_forming`, trial events also produce markers tagged `bar_status=forming`; states are not drawn on every bar. See [feature charts](/compute#feature-chart). ## Example call ```bash curl -X POST -H "Authorization: Bearer mq_xxx" \ -H "Content-Type: application/json" \ -d '{ "exchange": "binance", "market": "perp", "symbol": "BTCUSDT", "interval": "5m", "limit": 100, "signals": true, "calc": [{"name": "mobius_trend", "params": {"left_bars": 15, "right_bars": 14, "offset": 1.75, "atr_period": 200}}] }' \ https://api.mobiusquant.ai/api/indicators ``` ## Full interpretation guide Field meanings, interpretation rules and usage notes are documented in Chinese at: [mobius_trend (中文详情)](https://docs.mobiusquant.ai/zh/indicators/mobius_trend) ## Related indicators [alligator](./alligator) · [alma](./alma) · [ema](./ema) · [hma](./hma) · [hmm_regime](./hmm_regime) · [lsma](./lsma) · [mcginley_dynamic](./mcginley_dynamic) · [parabolic_sar](./parabolic_sar) --- # `momentum` — Momentum > Category: **Momentum** · Standard ::: tip Reading the response Use `POST /api/indicators?explain=true` to include interpretation notes at `indicators[responseKey].explain`. Read numeric results from `columns` and `data` in the same object. ::: This is a momentum indicator. ## Parameters | Parameter | Type | Default | |------|------|--------| | `length` | int | `10` | ## Output columns | Column | |------| | `mom` | ## Native features Set top-level `signals: true` and read `indicators[responseKey].signals`. By default features are evaluated on closed bars: `true` is a positive result, `false` a valid negative result, and `null` unknown. These are not trade instructions. This indicator supports `include_forming: true`: treat the current final OHLCV sample as complete under the same native rules, returning one set of values, features and objects. The signal table appends `bar_status`: `closed` for closed bars, `forming` for a trial with `confirmed_at_ms=null`. A trial may disappear on later updates or at close. For BYO, still set `last_bar_closed: false`. Close requirements below describe the default mode; trials only admit the final sample without shortening structural windows or model confirmation requirements. See [forming trials](/signals#forming). History lengths are minimum evaluation requirements, not convergence guarantees. Comparisons use unrounded values and the exact boundaries below. Do not turn `null` into `false` on gaps, invalid dependencies or forming bars in the default mode. | Feature column | Kind | Rule | Meaning | History / validity | | --- | --- | --- | --- | --- | | `momentum.cross_up` | `event` | Previous mom <= 0; current mom > 0. | The price difference versus length bars ago changes sign; no confirmed trend is implied. | length + 2 contiguous bars and valid dependencies on both bars. | | `momentum.cross_down` | `event` | Previous mom >= 0; current mom < 0. | The price difference versus length bars ago changes sign; no confirmed trend is implied. | length + 2 contiguous bars and valid dependencies on both bars. | See [feature requests](/compute#native-features) for the format and examples. `/api/chart` also accepts `signals: true`, marking confirmed events by default. With `include_forming`, trial events also produce markers tagged `bar_status=forming`; states are not drawn on every bar. See [feature charts](/compute#feature-chart). ## Example call ```bash curl -X POST -H "Authorization: Bearer mq_xxx" \ -H "Content-Type: application/json" \ -d '{ "exchange": "binance", "market": "perp", "symbol": "BTCUSDT", "interval": "5m", "limit": 100, "signals": true, "calc": [{"name": "momentum", "params": {"length": 10}}] }' \ https://api.mobiusquant.ai/api/indicators ``` ## Full interpretation guide Field meanings, interpretation rules and usage notes are documented in Chinese at: [momentum (中文详情)](https://docs.mobiusquant.ai/zh/indicators/momentum) ## Related indicators [accelerator_oscillator](./accelerator_oscillator) · [awesome_oscillator](./awesome_oscillator) · [cci](./cci) · [chande_mo](./chande_mo) · [connors_rsi](./connors_rsi) · [coppock_curve](./coppock_curve) · [dpo](./dpo) · [kst](./kst) --- # `obv` — OBV > Category: **Volume** · Standard ::: tip Reading the response Use `POST /api/indicators?explain=true` to include interpretation notes at `indicators[responseKey].explain`. Read numeric results from `columns` and `data` in the same object. ::: This is a volume indicator. ## Parameters _No configurable parameters._ ## Output columns | Column | |------| | `obv` | ## Native features This indicator has no independent native feature signals. Cumulative signed volume depends on the input origin; no pivot-divergence detector exists, so zero-cross or divergence signals would be unfounded. With `signals: true`, this indicator returns `signals: null`. Numeric values and charts remain available; no crossing, divergence or trade rules are added. ## Example call ```bash curl -X POST -H "Authorization: Bearer mq_xxx" \ -H "Content-Type: application/json" \ -d '{ "exchange": "binance", "market": "perp", "symbol": "BTCUSDT", "interval": "5m", "limit": 100, "calc": [{"name": "obv"}] }' \ https://api.mobiusquant.ai/api/indicators ``` ## Full interpretation guide Field meanings, interpretation rules and usage notes are documented in Chinese at: [obv (中文详情)](https://docs.mobiusquant.ai/zh/indicators/obv) ## Related indicators [chaikin_oscillator](./chaikin_oscillator) · [cmf](./cmf) · [cvd](./cvd) · [kvo](./kvo) · [pvo](./pvo) · [vwap](./vwap) --- # `parabolic_sar` — Parabolic SAR > Category: **Trend** · Standard ::: tip Reading the response Use `POST /api/indicators?explain=true` to include interpretation notes at `indicators[responseKey].explain`. Read numeric results from `columns` and `data` in the same object. ::: This is a trend indicator. ## Parameters | Parameter | Type | Default | |------|------|--------| | `start` | float | `0.02` | | `increment` | float | `0.02` | | `maximum` | float | `0.2` | ## Output columns | Column | |------| | `sar` | | `sar_trend` | ## Native features Set top-level `signals: true` and read `indicators[responseKey].signals`. By default features are evaluated on closed bars: `true` is a positive result, `false` a valid negative result, and `null` unknown. These are not trade instructions. This indicator supports `include_forming: true`: treat the current final OHLCV sample as complete under the same native rules, returning one set of values, features and objects. The signal table appends `bar_status`: `closed` for closed bars, `forming` for a trial with `confirmed_at_ms=null`. A trial may disappear on later updates or at close. For BYO, still set `last_bar_closed: false`. Close requirements below describe the default mode; trials only admit the final sample without shortening structural windows or model confirmation requirements. See [forming trials](/signals#forming). History lengths are minimum evaluation requirements, not convergence guarantees. Comparisons use unrounded values and the exact boundaries below. Do not turn `null` into `false` on gaps, invalid dependencies or forming bars in the default mode. | Feature column | Kind | Rule | Meaning | History / validity | | --- | --- | --- | --- | --- | | `parabolic_sar.reversal_up` | `event` | Previous sar_trend=-1; current sar_trend=1. Initialization is not a reversal. | Reuses SAR's state machine: low breaches the candidate SAR in an up direction, or high breaches it in a down direction; not a close/SAR crossover. | 3 contiguous bars with valid direction and active reference on both bars. | | `parabolic_sar.reversal_down` | `event` | Previous sar_trend=1; current sar_trend=-1. Initialization is not a reversal. | Reuses SAR's state machine: low breaches the candidate SAR in an up direction, or high breaches it in a down direction; not a close/SAR crossover. | 3 contiguous bars with valid direction and active reference on both bars. | See [feature requests](/compute#native-features) for the format and examples. `/api/chart` also accepts `signals: true`, marking confirmed events by default. With `include_forming`, trial events also produce markers tagged `bar_status=forming`; states are not drawn on every bar. See [feature charts](/compute#feature-chart). ## Example call ```bash curl -X POST -H "Authorization: Bearer mq_xxx" \ -H "Content-Type: application/json" \ -d '{ "exchange": "binance", "market": "perp", "symbol": "BTCUSDT", "interval": "5m", "limit": 100, "signals": true, "calc": [{"name": "parabolic_sar", "params": {"start": 0.02, "increment": 0.02, "maximum": 0.2}}] }' \ https://api.mobiusquant.ai/api/indicators ``` ## Full interpretation guide Field meanings, interpretation rules and usage notes are documented in Chinese at: [parabolic_sar (中文详情)](https://docs.mobiusquant.ai/zh/indicators/parabolic_sar) ## Related indicators [alligator](./alligator) · [alma](./alma) · [ema](./ema) · [hma](./hma) · [hmm_regime](./hmm_regime) · [lsma](./lsma) · [mcginley_dynamic](./mcginley_dynamic) · [mobius_trend](./mobius_trend) --- # `pi_cycle_bottom` — PI Cycle Bottom > Category: **Trend** · Composite ::: tip Reading the response Use `POST /api/indicators?explain=true` to include interpretation notes at `indicators[responseKey].explain`. Read numeric results from `columns` and `data` in the same object. ::: This is a trend indicator. ## Parameters | Parameter | Type | Default | |------|------|--------| | `long_sma` | int | `471` | | `short_ema` | int | `150` | | `long_multiple` | float | `0.745` | | `short_multiple` | float | `1` | ## Output columns | Column | |------| | `pi_cycle_bottom_diff` | | `pi_cycle_bottom_long_ma` | | `pi_cycle_bottom_marker` | | `pi_cycle_bottom_short_ma` | | `pi_cycle_bottom_signal` | ## Native features Set top-level `signals: true` and read `indicators[responseKey].signals`. By default features are evaluated on closed bars: `true` is a positive result, `false` a valid negative result, and `null` unknown. These are not trade instructions. This indicator supports `include_forming: true`: treat the current final OHLCV sample as complete under the same native rules, returning one set of values, features and objects. The signal table appends `bar_status`: `closed` for closed bars, `forming` for a trial with `confirmed_at_ms=null`. A trial may disappear on later updates or at close. For BYO, still set `last_bar_closed: false`. Close requirements below describe the default mode; trials only admit the final sample without shortening structural windows or model confirmation requirements. See [forming trials](/signals#forming). History lengths are minimum evaluation requirements, not convergence guarantees. Comparisons use unrounded values and the exact boundaries below. Do not turn `null` into `false` on gaps, invalid dependencies or forming bars in the default mode. | Feature column | Kind | Rule | Meaning | History / validity | | --- | --- | --- | --- | --- | | `pi_cycle_bottom.cross_down` | `event` | Previous short_ma >= long_ma; current short_ma < long_ma, using pi_cycle_bottom_signal. | The scaled short EMA crosses below the scaled long SMA; this does not guarantee a cycle bottom. | max(long_sma, short_ema) + 1 contiguous bars with both averages valid. | ### `pi_cycle_bottom.cross_down` - Uses the requested interval. Use interval=1d for daily-cycle interpretation; no automatic timeframe conversion. See [feature requests](/compute#native-features) for the format and examples. `/api/chart` also accepts `signals: true`, marking confirmed events by default. With `include_forming`, trial events also produce markers tagged `bar_status=forming`; states are not drawn on every bar. See [feature charts](/compute#feature-chart). ## Example call ```bash curl -X POST -H "Authorization: Bearer mq_xxx" \ -H "Content-Type: application/json" \ -d '{ "exchange": "binance", "market": "perp", "symbol": "BTCUSDT", "interval": "1d", "limit": 500, "signals": true, "calc": [{"name": "pi_cycle_bottom", "params": {"long_sma": 471, "short_ema": 150, "long_multiple": 0.745, "short_multiple": 1}}] }' \ https://api.mobiusquant.ai/api/indicators ``` ## Full interpretation guide Field meanings, interpretation rules and usage notes are documented in Chinese at: [pi_cycle_bottom (中文详情)](https://docs.mobiusquant.ai/zh/indicators/pi_cycle_bottom) ## Related indicators [alligator](./alligator) · [alma](./alma) · [ema](./ema) · [hma](./hma) · [hmm_regime](./hmm_regime) · [lsma](./lsma) · [mcginley_dynamic](./mcginley_dynamic) · [mobius_trend](./mobius_trend) --- # `ppo` — PPO > Category: **Momentum** · Standard ::: tip Reading the response Use `POST /api/indicators?explain=true` to include interpretation notes at `indicators[responseKey].explain`. Read numeric results from `columns` and `data` in the same object. ::: This is a momentum indicator. ## Parameters | Parameter | Type | Default | |------|------|--------| | `fast_len` | int | `12` | | `slow_len` | int | `26` | | `sig_len` | int | `9` | ## Output columns | Column | |------| | `ppo` | | `ppo_hist` | | `ppo_signal` | ## Native features Set top-level `signals: true` and read `indicators[responseKey].signals`. By default features are evaluated on closed bars: `true` is a positive result, `false` a valid negative result, and `null` unknown. These are not trade instructions. This indicator supports `include_forming: true`: treat the current final OHLCV sample as complete under the same native rules, returning one set of values, features and objects. The signal table appends `bar_status`: `closed` for closed bars, `forming` for a trial with `confirmed_at_ms=null`. A trial may disappear on later updates or at close. For BYO, still set `last_bar_closed: false`. Close requirements below describe the default mode; trials only admit the final sample without shortening structural windows or model confirmation requirements. See [forming trials](/signals#forming). History lengths are minimum evaluation requirements, not convergence guarantees. Comparisons use unrounded values and the exact boundaries below. Do not turn `null` into `false` on gaps, invalid dependencies or forming bars in the default mode. | Feature column | Kind | Rule | Meaning | History / validity | | --- | --- | --- | --- | --- | | `ppo.cross_up` | `event` | Previous ppo <= ppo_signal; current ppo > ppo_signal. | The percentage price oscillator crosses its own signal line, indicating a relative momentum change. | max(fast_len, slow_len) + sig_len contiguous bars and valid dependencies on both bars. | | `ppo.cross_down` | `event` | Previous ppo >= ppo_signal; current ppo < ppo_signal. | The percentage price oscillator crosses its own signal line, indicating a relative momentum change. | max(fast_len, slow_len) + sig_len contiguous bars and valid dependencies on both bars. | See [feature requests](/compute#native-features) for the format and examples. `/api/chart` also accepts `signals: true`, marking confirmed events by default. With `include_forming`, trial events also produce markers tagged `bar_status=forming`; states are not drawn on every bar. See [feature charts](/compute#feature-chart). ## Example call ```bash curl -X POST -H "Authorization: Bearer mq_xxx" \ -H "Content-Type: application/json" \ -d '{ "exchange": "binance", "market": "perp", "symbol": "BTCUSDT", "interval": "5m", "limit": 100, "signals": true, "calc": [{"name": "ppo", "params": {"fast_len": 12, "slow_len": 26, "sig_len": 9}}] }' \ https://api.mobiusquant.ai/api/indicators ``` ## Full interpretation guide Field meanings, interpretation rules and usage notes are documented in Chinese at: [ppo (中文详情)](https://docs.mobiusquant.ai/zh/indicators/ppo) ## Related indicators [accelerator_oscillator](./accelerator_oscillator) · [awesome_oscillator](./awesome_oscillator) · [cci](./cci) · [chande_mo](./chande_mo) · [connors_rsi](./connors_rsi) · [coppock_curve](./coppock_curve) · [dpo](./dpo) · [kst](./kst) --- # `price` — Price > Category: **Base** · Standard ::: tip Reading the response Use `POST /api/indicators?explain=true` to include interpretation notes at `indicators[responseKey].explain`. Read numeric results from `columns` and `data` in the same object. ::: This is a base indicator. ## Parameters _No configurable parameters._ ## Output columns _Output columns are returned in the `/api/indicators` response — see the call example below._ ## Native features This indicator has no independent native feature signals. A semantic entry for raw OHLCV, with no calculation or predefined price trigger. With `signals: true`, this indicator returns `signals: null`. Numeric values and charts remain available; no crossing, divergence or trade rules are added. ## Example call ```bash curl -X POST -H "Authorization: Bearer mq_xxx" \ -H "Content-Type: application/json" \ -d '{ "exchange": "binance", "market": "perp", "symbol": "BTCUSDT", "interval": "5m", "limit": 100, "calc": [{"name": "price"}] }' \ https://api.mobiusquant.ai/api/indicators ``` ## Full interpretation guide Field meanings, interpretation rules and usage notes are documented in Chinese at: [price (中文详情)](https://docs.mobiusquant.ai/zh/indicators/price) ## Related indicators _None._ --- # `pvo` — PVO > Category: **Volume** · Standard ::: tip Reading the response Use `POST /api/indicators?explain=true` to include interpretation notes at `indicators[responseKey].explain`. Read numeric results from `columns` and `data` in the same object. ::: This is a volume indicator. ## Parameters | Parameter | Type | Default | |------|------|--------| | `fast_len` | int | `12` | | `slow_len` | int | `26` | | `sig_len` | int | `9` | ## Output columns | Column | |------| | `pvo` | | `pvo_hist` | | `pvo_signal` | ## Native features Set top-level `signals: true` and read `indicators[responseKey].signals`. By default features are evaluated on closed bars: `true` is a positive result, `false` a valid negative result, and `null` unknown. These are not trade instructions. This indicator supports `include_forming: true`: treat the current final OHLCV sample as complete under the same native rules, returning one set of values, features and objects. The signal table appends `bar_status`: `closed` for closed bars, `forming` for a trial with `confirmed_at_ms=null`. A trial may disappear on later updates or at close. For BYO, still set `last_bar_closed: false`. Close requirements below describe the default mode; trials only admit the final sample without shortening structural windows or model confirmation requirements. See [forming trials](/signals#forming). History lengths are minimum evaluation requirements, not convergence guarantees. Comparisons use unrounded values and the exact boundaries below. Do not turn `null` into `false` on gaps, invalid dependencies or forming bars in the default mode. | Feature column | Kind | Rule | Meaning | History / validity | | --- | --- | --- | --- | --- | | `pvo.cross_up` | `event` | Previous pvo <= pvo_signal; current pvo > pvo_signal. | The volume oscillator crosses its signal line: a volume change, not a price-direction signal. | max(fast_len, slow_len) + sig_len contiguous bars, valid dependencies and positive volume observed by both comparison bars. | | `pvo.cross_down` | `event` | Previous pvo >= pvo_signal; current pvo < pvo_signal. | The volume oscillator crosses its signal line: a volume change, not a price-direction signal. | max(fast_len, slow_len) + sig_len contiguous bars, valid dependencies and positive volume observed by both comparison bars. | See [feature requests](/compute#native-features) for the format and examples. `/api/chart` also accepts `signals: true`, marking confirmed events by default. With `include_forming`, trial events also produce markers tagged `bar_status=forming`; states are not drawn on every bar. See [feature charts](/compute#feature-chart). ## Example call ```bash curl -X POST -H "Authorization: Bearer mq_xxx" \ -H "Content-Type: application/json" \ -d '{ "exchange": "binance", "market": "perp", "symbol": "BTCUSDT", "interval": "5m", "limit": 100, "signals": true, "calc": [{"name": "pvo", "params": {"fast_len": 12, "slow_len": 26, "sig_len": 9}}] }' \ https://api.mobiusquant.ai/api/indicators ``` ## Full interpretation guide Field meanings, interpretation rules and usage notes are documented in Chinese at: [pvo (中文详情)](https://docs.mobiusquant.ai/zh/indicators/pvo) ## Related indicators [chaikin_oscillator](./chaikin_oscillator) · [cmf](./cmf) · [cvd](./cvd) · [kvo](./kvo) · [obv](./obv) · [vwap](./vwap) --- # `rci_ribbon` — RCI Ribbon > Category: **Oscillator** · Composite ::: tip Reading the response Use `POST /api/indicators?explain=true` to include interpretation notes at `indicators[responseKey].explain`. Read numeric results from `columns` and `data` in the same object. ::: This is a oscillator indicator. ## Parameters | Parameter | Type | Default | |------|------|--------| | `short_length` | int | `10` | | `middle_length` | int | `30` | | `long_length` | int | `50` | ## Output columns | Column | |------| | `rci_long` | | `rci_middle` | | `rci_short` | ## Native features This indicator has no independent native feature signals. Describes rank correlation at three windows, without multi-scale combination or reversal-confirmation rules. With `signals: true`, this indicator returns `signals: null`. Numeric values and charts remain available; no crossing, divergence or trade rules are added. ## Example call ```bash curl -X POST -H "Authorization: Bearer mq_xxx" \ -H "Content-Type: application/json" \ -d '{ "exchange": "binance", "market": "perp", "symbol": "BTCUSDT", "interval": "5m", "limit": 100, "calc": [{"name": "rci_ribbon", "params": {"short_length": 10, "middle_length": 30, "long_length": 50}}] }' \ https://api.mobiusquant.ai/api/indicators ``` ## Full interpretation guide Field meanings, interpretation rules and usage notes are documented in Chinese at: [rci_ribbon (中文详情)](https://docs.mobiusquant.ai/zh/indicators/rci_ribbon) ## Related indicators [fisher_transform](./fisher_transform) · [rsi](./rsi) · [rvi](./rvi) --- # `roc` — ROC > Category: **Momentum** · Standard ::: tip Reading the response Use `POST /api/indicators?explain=true` to include interpretation notes at `indicators[responseKey].explain`. Read numeric results from `columns` and `data` in the same object. ::: This is a momentum indicator. ## Parameters | Parameter | Type | Default | |------|------|--------| | `length` | int | `9` | ## Output columns | Column | |------| | `roc` | ## Native features Set top-level `signals: true` and read `indicators[responseKey].signals`. By default features are evaluated on closed bars: `true` is a positive result, `false` a valid negative result, and `null` unknown. These are not trade instructions. This indicator supports `include_forming: true`: treat the current final OHLCV sample as complete under the same native rules, returning one set of values, features and objects. The signal table appends `bar_status`: `closed` for closed bars, `forming` for a trial with `confirmed_at_ms=null`. A trial may disappear on later updates or at close. For BYO, still set `last_bar_closed: false`. Close requirements below describe the default mode; trials only admit the final sample without shortening structural windows or model confirmation requirements. See [forming trials](/signals#forming). History lengths are minimum evaluation requirements, not convergence guarantees. Comparisons use unrounded values and the exact boundaries below. Do not turn `null` into `false` on gaps, invalid dependencies or forming bars in the default mode. | Feature column | Kind | Rule | Meaning | History / validity | | --- | --- | --- | --- | --- | | `roc.cross_up` | `event` | Previous roc <= 0; current roc > 0. | Lookback return changes sign relative to its reference price. | length + 2 contiguous bars and valid dependencies on both bars. | | `roc.cross_down` | `event` | Previous roc >= 0; current roc < 0. | Lookback return changes sign relative to its reference price. | length + 2 contiguous bars and valid dependencies on both bars. | See [feature requests](/compute#native-features) for the format and examples. `/api/chart` also accepts `signals: true`, marking confirmed events by default. With `include_forming`, trial events also produce markers tagged `bar_status=forming`; states are not drawn on every bar. See [feature charts](/compute#feature-chart). ## Example call ```bash curl -X POST -H "Authorization: Bearer mq_xxx" \ -H "Content-Type: application/json" \ -d '{ "exchange": "binance", "market": "perp", "symbol": "BTCUSDT", "interval": "5m", "limit": 100, "signals": true, "calc": [{"name": "roc", "params": {"length": 9}}] }' \ https://api.mobiusquant.ai/api/indicators ``` ## Full interpretation guide Field meanings, interpretation rules and usage notes are documented in Chinese at: [roc (中文详情)](https://docs.mobiusquant.ai/zh/indicators/roc) ## Related indicators [accelerator_oscillator](./accelerator_oscillator) · [awesome_oscillator](./awesome_oscillator) · [cci](./cci) · [chande_mo](./chande_mo) · [connors_rsi](./connors_rsi) · [coppock_curve](./coppock_curve) · [dpo](./dpo) · [kst](./kst) --- # `rsi` — RSI > Category: **Oscillator** · Standard ::: tip Reading the response Use `POST /api/indicators?explain=true` to include interpretation notes at `indicators[responseKey].explain`. Read numeric results from `columns` and `data` in the same object. ::: This is a oscillator indicator. ## Parameters | Parameter | Type | Default | |------|------|--------| | `period` | int | `14` | ## Output columns | Column | |------| | `rsi` | ## Native features Set top-level `signals: true` and read `indicators[responseKey].signals`. By default features are evaluated on closed bars: `true` is a positive result, `false` a valid negative result, and `null` unknown. These are not trade instructions. This indicator supports `include_forming: true`: treat the current final OHLCV sample as complete under the same native rules, returning one set of values, features and objects. The signal table appends `bar_status`: `closed` for closed bars, `forming` for a trial with `confirmed_at_ms=null`. A trial may disappear on later updates or at close. For BYO, still set `last_bar_closed: false`. Close requirements below describe the default mode; trials only admit the final sample without shortening structural windows or model confirmation requirements. See [forming trials](/signals#forming). History lengths are minimum evaluation requirements, not convergence guarantees. Comparisons use unrounded values and the exact boundaries below. Do not turn `null` into `false` on gaps, invalid dependencies or forming bars in the default mode. | Feature column | Kind | Rule | Meaning | History / validity | | --- | --- | --- | --- | --- | | `rsi.enter_overbought` | `event` | Previous RSI <= 70; current RSI > 70. | Relative strength enters/exits or occupies the fixed 70/30 regions; price reversal is not guaranteed. | period + 2 contiguous bars and valid RSI dependencies. | | `rsi.exit_overbought` | `event` | Previous RSI > 70; current RSI <= 70. | Relative strength enters/exits or occupies the fixed 70/30 regions; price reversal is not guaranteed. | period + 2 contiguous bars and valid RSI dependencies. | | `rsi.enter_oversold` | `event` | Previous RSI >= 30; current RSI < 30. | Relative strength enters/exits or occupies the fixed 70/30 regions; price reversal is not guaranteed. | period + 2 contiguous bars and valid RSI dependencies. | | `rsi.exit_oversold` | `event` | Previous RSI < 30; current RSI >= 30. | Relative strength enters/exits or occupies the fixed 70/30 regions; price reversal is not guaranteed. | period + 2 contiguous bars and valid RSI dependencies. | | `rsi.overbought` | `state` | Current RSI > 70. | Relative strength enters/exits or occupies the fixed 70/30 regions; price reversal is not guaranteed. | period + 1 contiguous bars and valid RSI dependencies. | | `rsi.oversold` | `state` | Current RSI < 30. | Relative strength enters/exits or occupies the fixed 70/30 regions; price reversal is not guaranteed. | period + 1 contiguous bars and valid RSI dependencies. | ### `rsi.enter_overbought` - RSI may be null when average loss is zero. Dependent features stay null; no alternative RSI formula is substituted. ### `rsi.exit_overbought` - RSI may be null when average loss is zero. Dependent features stay null; no alternative RSI formula is substituted. ### `rsi.enter_oversold` - RSI may be null when average loss is zero. Dependent features stay null; no alternative RSI formula is substituted. ### `rsi.exit_oversold` - RSI may be null when average loss is zero. Dependent features stay null; no alternative RSI formula is substituted. ### `rsi.overbought` - RSI may be null when average loss is zero. Dependent features stay null; no alternative RSI formula is substituted. ### `rsi.oversold` - RSI may be null when average loss is zero. Dependent features stay null; no alternative RSI formula is substituted. See [feature requests](/compute#native-features) for the format and examples. `/api/chart` also accepts `signals: true`, marking confirmed events by default. With `include_forming`, trial events also produce markers tagged `bar_status=forming`; states are not drawn on every bar. See [feature charts](/compute#feature-chart). ## Example call ```bash curl -X POST -H "Authorization: Bearer mq_xxx" \ -H "Content-Type: application/json" \ -d '{ "exchange": "binance", "market": "perp", "symbol": "BTCUSDT", "interval": "5m", "limit": 100, "signals": true, "calc": [{"name": "rsi", "params": {"period": 14}}] }' \ https://api.mobiusquant.ai/api/indicators ``` ## Full interpretation guide Field meanings, interpretation rules and usage notes are documented in Chinese at: [rsi (中文详情)](https://docs.mobiusquant.ai/zh/indicators/rsi) ## Related indicators [fisher_transform](./fisher_transform) · [rci_ribbon](./rci_ribbon) · [rvi](./rvi) --- # `rvi` — RVI > Category: **Oscillator** · Composite ::: tip Reading the response Use `POST /api/indicators?explain=true` to include interpretation notes at `indicators[responseKey].explain`. Read numeric results from `columns` and `data` in the same object. ::: This is a oscillator indicator. ## Parameters | Parameter | Type | Default | |------|------|--------| | `length` | int | `10` | | `ema_len` | int | `14` | ## Output columns | Column | |------| | `rvi` | | `rvi_ma` | ## Native features This indicator has no independent native feature signals. Describes directional volatility share and its average, not a native confirmed price-reversal event. With `signals: true`, this indicator returns `signals: null`. Numeric values and charts remain available; no crossing, divergence or trade rules are added. ## Example call ```bash curl -X POST -H "Authorization: Bearer mq_xxx" \ -H "Content-Type: application/json" \ -d '{ "exchange": "binance", "market": "perp", "symbol": "BTCUSDT", "interval": "5m", "limit": 100, "calc": [{"name": "rvi", "params": {"length": 10, "ema_len": 14}}] }' \ https://api.mobiusquant.ai/api/indicators ``` ## Full interpretation guide Field meanings, interpretation rules and usage notes are documented in Chinese at: [rvi (中文详情)](https://docs.mobiusquant.ai/zh/indicators/rvi) ## Related indicators [fisher_transform](./fisher_transform) · [rci_ribbon](./rci_ribbon) · [rsi](./rsi) --- # `smc` — SMC > Category: **Trend** · Composite · 🧪 Möbius Lab ::: tip Reading the response Use `POST /api/indicators?explain=true` to include interpretation notes at `indicators[responseKey].explain`. Read numeric results from `columns` and `data` in the same object. ::: This is a trend indicator. ## Parameters | Parameter | Type | Default | |------|------|--------| | `mode` | string | `historical` | | `internal_size` | int | `5` | | `internal_filter_confluence` | bool | `false` | | `internal_show_bull` | string | `all` | | `internal_show_bear` | string | `all` | | `swing_size` | int | `50` | | `swing_show_bull` | string | `all` | | `swing_show_bear` | string | `all` | | `show_swing_points` | bool | `false` | | `show_strong_weak_hl` | bool | `true` | | `internal_ob_max` | int | `5` | | `swing_ob_max` | int | `5` | | `ob_filter` | string | `atr` | | `ob_mitigation` | string | `highlow` | | `eq_size` | int | `3` | | `eq_threshold` | float | `0.1` | | `fvg_auto_threshold` | bool | `true` | | `fvg_timeframe` | string | `` | | `fvg_extend` | int | `1` | | `show_daily_levels` | bool | `false` | | `show_weekly_levels` | bool | `false` | | `show_monthly_levels` | bool | `false` | | `show_premium_discount_zones` | bool | `false` | | `show_color_candles` | bool | `false` | ## Output columns | Column | |------| | `smc_atr200` | | `smc_parsed_low` | | `smc_volatility` | | `smc_parsed_high` | | `smc_swing_trend` | | `smc_candle_color` | | `smc_high_vol_bar` | | `smc_trailing_top` | | `smc_internal_trend` | | `smc_trailing_bottom` | | `smc_swing_low_active` | | `smc_swing_high_active` | | `smc_internal_low_active` | | `smc_internal_high_active` | SMC also returns `objects` for structure events, order blocks, gaps and zones. Here `internal` means shorter-scale market structure. ## Native features Set top-level `signals: true` and read `indicators[responseKey].signals`. By default features are evaluated on closed bars: `true` is a positive result, `false` a valid negative result, and `null` unknown. These are not trade instructions. This indicator supports `include_forming: true`: treat the current final OHLCV sample as complete under the same native rules, returning one set of values, features and objects. The signal table appends `bar_status`: `closed` for closed bars, `forming` for a trial with `confirmed_at_ms=null`. A trial may disappear on later updates or at close. For BYO, still set `last_bar_closed: false`. Close requirements below describe the default mode; trials only admit the final sample without shortening structural windows or model confirmation requirements. See [forming trials](/signals#forming). History lengths are minimum evaluation requirements, not convergence guarantees. Comparisons use unrounded values and the exact boundaries below. Do not turn `null` into `false` on gaps, invalid dependencies or forming bars in the default mode. | Feature column | Kind | Rule | Meaning | History / validity | | --- | --- | --- | --- | --- | | `smc.internal_bullish_bos` | `event` | Close strictly breaks an unconsumed internal high pivot. Prior bias is not opposite (including initial unknown) for BOS. | Native structure break/change of character. Each pivot is consumed once; internal events also use swing-pivot exclusion and the optional wick filter. | Contiguous bars: scope size + 1 for structures/order blocks, eq_size + 1 for equal levels, 3 for FVG. | | `smc.internal_bearish_bos` | `event` | Close strictly breaks an unconsumed internal low pivot. Prior bias is not opposite (including initial unknown) for BOS. | Native structure break/change of character. Each pivot is consumed once; internal events also use swing-pivot exclusion and the optional wick filter. | Contiguous bars: scope size + 1 for structures/order blocks, eq_size + 1 for equal levels, 3 for FVG. | | `smc.internal_bullish_choch` | `event` | Close strictly breaks an unconsumed internal high pivot. Prior bias is opposite for CHOCH. | Native structure break/change of character. Each pivot is consumed once; internal events also use swing-pivot exclusion and the optional wick filter. | Contiguous bars: scope size + 1 for structures/order blocks, eq_size + 1 for equal levels, 3 for FVG. | | `smc.internal_bearish_choch` | `event` | Close strictly breaks an unconsumed internal low pivot. Prior bias is opposite for CHOCH. | Native structure break/change of character. Each pivot is consumed once; internal events also use swing-pivot exclusion and the optional wick filter. | Contiguous bars: scope size + 1 for structures/order blocks, eq_size + 1 for equal levels, 3 for FVG. | | `smc.swing_bullish_bos` | `event` | Close strictly breaks an unconsumed swing high pivot. Prior bias is not opposite (including initial unknown) for BOS. | Native structure break/change of character. Each pivot is consumed once; internal events also use swing-pivot exclusion and the optional wick filter. | Contiguous bars: scope size + 1 for structures/order blocks, eq_size + 1 for equal levels, 3 for FVG. | | `smc.swing_bearish_bos` | `event` | Close strictly breaks an unconsumed swing low pivot. Prior bias is not opposite (including initial unknown) for BOS. | Native structure break/change of character. Each pivot is consumed once; internal events also use swing-pivot exclusion and the optional wick filter. | Contiguous bars: scope size + 1 for structures/order blocks, eq_size + 1 for equal levels, 3 for FVG. | | `smc.swing_bullish_choch` | `event` | Close strictly breaks an unconsumed swing high pivot. Prior bias is opposite for CHOCH. | Native structure break/change of character. Each pivot is consumed once; internal events also use swing-pivot exclusion and the optional wick filter. | Contiguous bars: scope size + 1 for structures/order blocks, eq_size + 1 for equal levels, 3 for FVG. | | `smc.swing_bearish_choch` | `event` | Close strictly breaks an unconsumed swing low pivot. Prior bias is opposite for CHOCH. | Native structure break/change of character. Each pivot is consumed once; internal events also use swing-pivot exclusion and the optional wick filter. | Contiguous bars: scope size + 1 for structures/order blocks, eq_size + 1 for equal levels, 3 for FVG. | | `smc.internal_bullish_order_block_mitigated` | `event` | An active internal bullish order block is first breached: low or close < bottom, using ob_mitigation. | Order-block invalidation, not creation or an executed order. | Contiguous bars: scope size + 1 for structures/order blocks, eq_size + 1 for equal levels, 3 for FVG. | | `smc.internal_bearish_order_block_mitigated` | `event` | An active internal bearish order block is first breached: high or close > top, using ob_mitigation. | Order-block invalidation, not creation or an executed order. | Contiguous bars: scope size + 1 for structures/order blocks, eq_size + 1 for equal levels, 3 for FVG. | | `smc.swing_bullish_order_block_mitigated` | `event` | An active swing bullish order block is first breached: low or close < bottom, using ob_mitigation. | Order-block invalidation, not creation or an executed order. | Contiguous bars: scope size + 1 for structures/order blocks, eq_size + 1 for equal levels, 3 for FVG. | | `smc.swing_bearish_order_block_mitigated` | `event` | An active swing bearish order block is first breached: high or close > top, using ob_mitigation. | Order-block invalidation, not creation or an executed order. | Contiguous bars: scope size + 1 for structures/order blocks, eq_size + 1 for equal levels, 3 for FVG. | | `smc.equal_highs` | `event` | The absolute difference between consecutive confirmed same-kind pivots is < eq_threshold * current smc_atr200. | Two same-kind pivots are close within the ATR tolerance, not necessarily equal or reversal points. | Contiguous bars: scope size + 1 for structures/order blocks, eq_size + 1 for equal levels, 3 for FVG. | | `smc.equal_lows` | `event` | The absolute difference between consecutive confirmed same-kind pivots is < eq_threshold * current smc_atr200. | Two same-kind pivots are close within the ATR tolerance, not necessarily equal or reversal points. | Contiguous bars: scope size + 1 for structures/order blocks, eq_size + 1 for equal levels, 3 for FVG. | | `smc.bullish_fair_value_gap` | `event` | low[t] > high[t-2] and close[t-1] > high[t-2] and delta > threshold. | A native three-bar gap forms; the event belongs to the third bar's close, never the object's middle-bar timestamp. | Contiguous bars: scope size + 1 for structures/order blocks, eq_size + 1 for equal levels, 3 for FVG. | | `smc.bearish_fair_value_gap` | `event` | high[t] < low[t-2] and close[t-1] < low[t-2] and -delta > threshold. | A native three-bar gap forms; the event belongs to the third bar's close, never the object's middle-bar timestamp. | Contiguous bars: scope size + 1 for structures/order blocks, eq_size + 1 for equal levels, 3 for FVG. | ### `smc.internal_bullish_bos` - With internal_filter_confluence=true, bullish requires upper wick > lower wick; bearish requires upper wick < lower wick, matching the calculation. - Events are independent of mode=present, structure display filters and candle coloring; emitted only after this bar closes. ### `smc.internal_bearish_bos` - With internal_filter_confluence=true, bullish requires upper wick > lower wick; bearish requires upper wick < lower wick, matching the calculation. - Events are independent of mode=present, structure display filters and candle coloring; emitted only after this bar closes. ### `smc.internal_bullish_choch` - With internal_filter_confluence=true, bullish requires upper wick > lower wick; bearish requires upper wick < lower wick, matching the calculation. - Events are independent of mode=present, structure display filters and candle coloring; emitted only after this bar closes. ### `smc.internal_bearish_choch` - With internal_filter_confluence=true, bullish requires upper wick > lower wick; bearish requires upper wick < lower wick, matching the calculation. - Events are independent of mode=present, structure display filters and candle coloring; emitted only after this bar closes. ### `smc.swing_bullish_bos` - With internal_filter_confluence=true, bullish requires upper wick > lower wick; bearish requires upper wick < lower wick, matching the calculation. - Events are independent of mode=present, structure display filters and candle coloring; emitted only after this bar closes. ### `smc.swing_bearish_bos` - With internal_filter_confluence=true, bullish requires upper wick > lower wick; bearish requires upper wick < lower wick, matching the calculation. - Events are independent of mode=present, structure display filters and candle coloring; emitted only after this bar closes. ### `smc.swing_bullish_choch` - With internal_filter_confluence=true, bullish requires upper wick > lower wick; bearish requires upper wick < lower wick, matching the calculation. - Events are independent of mode=present, structure display filters and candle coloring; emitted only after this bar closes. ### `smc.swing_bearish_choch` - With internal_filter_confluence=true, bullish requires upper wick > lower wick; bearish requires upper wick < lower wick, matching the calculation. - Events are independent of mode=present, structure display filters and candle coloring; emitted only after this bar closes. ### `smc.internal_bullish_order_block_mitigated` - Multiple matching invalidations on one bar produce one true value; an already invalidated block does not trigger again. - Events are independent of mode=present, structure display filters and candle coloring; emitted only after this bar closes. ### `smc.internal_bearish_order_block_mitigated` - Multiple matching invalidations on one bar produce one true value; an already invalidated block does not trigger again. - Events are independent of mode=present, structure display filters and candle coloring; emitted only after this bar closes. ### `smc.swing_bullish_order_block_mitigated` - Multiple matching invalidations on one bar produce one true value; an already invalidated block does not trigger again. - Events are independent of mode=present, structure display filters and candle coloring; emitted only after this bar closes. ### `smc.swing_bearish_order_block_mitigated` - Multiple matching invalidations on one bar produce one true value; an already invalidated block does not trigger again. - Events are independent of mode=present, structure display filters and candle coloring; emitted only after this bar closes. ### `smc.equal_highs` - Events are independent of mode=present, structure display filters and candle coloring; emitted only after this bar closes. ### `smc.equal_lows` - Events are independent of mode=present, structure display filters and candle coloring; emitted only after this bar closes. ### `smc.bullish_fair_value_gap` - delta=(close[t-1]-open[t-1])/(open[t-1]*100). Auto threshold is cumulative mean(abs(delta))*2 (initial invalid delta is zero); otherwise 0. - Events are independent of mode=present, structure display filters and candle coloring; emitted only after this bar closes. ### `smc.bearish_fair_value_gap` - delta=(close[t-1]-open[t-1])/(open[t-1]*100). Auto threshold is cumulative mean(abs(delta))*2 (initial invalid delta is zero); otherwise 0. - Events are independent of mode=present, structure display filters and candle coloring; emitted only after this bar closes. See [feature requests](/compute#native-features) for the format and examples. `/api/chart` also accepts `signals: true`, marking confirmed events by default. With `include_forming`, trial events also produce markers tagged `bar_status=forming`; states are not drawn on every bar. See [feature charts](/compute#feature-chart). ## Example call ```bash curl -X POST -H "Authorization: Bearer mq_xxx" \ -H "Content-Type: application/json" \ -d '{ "exchange": "binance", "market": "perp", "symbol": "BTCUSDT", "interval": "5m", "limit": 100, "signals": true, "calc": [{"name": "smc", "params": {"mode": "historical", "internal_size": 5, "internal_filter_confluence": false, "internal_show_bull": "all", "internal_show_bear": "all", "swing_size": 50, "swing_show_bull": "all", "swing_show_bear": "all", "show_swing_points": false, "show_strong_weak_hl": true, "internal_ob_max": 5, "swing_ob_max": 5, "ob_filter": "atr", "ob_mitigation": "highlow", "eq_size": 3, "eq_threshold": 0.1, "fvg_auto_threshold": true, "fvg_timeframe": "", "fvg_extend": 1, "show_daily_levels": false, "show_weekly_levels": false, "show_monthly_levels": false, "show_premium_discount_zones": false, "show_color_candles": false}}] }' \ https://api.mobiusquant.ai/api/indicators ``` ## Full interpretation guide Field meanings, interpretation rules and usage notes are documented in Chinese at: [smc (中文详情)](https://docs.mobiusquant.ai/zh/indicators/smc) ## Related indicators [alligator](./alligator) · [alma](./alma) · [ema](./ema) · [hma](./hma) · [hmm_regime](./hmm_regime) · [lsma](./lsma) · [mcginley_dynamic](./mcginley_dynamic) · [mobius_trend](./mobius_trend) --- # `smi_ergodic` — SMI Ergodic > Category: **Momentum** · Composite ::: tip Reading the response Use `POST /api/indicators?explain=true` to include interpretation notes at `indicators[responseKey].explain`. Read numeric results from `columns` and `data` in the same object. ::: This is a momentum indicator. ## Parameters | Parameter | Type | Default | |------|------|--------| | `long_len` | int | `20` | | `short_len` | int | `5` | | `sig_len` | int | `5` | ## Output columns | Column | |------| | `erg` | | `erg_signal` | ## Native features Set top-level `signals: true` and read `indicators[responseKey].signals`. By default features are evaluated on closed bars: `true` is a positive result, `false` a valid negative result, and `null` unknown. These are not trade instructions. This indicator supports `include_forming: true`: treat the current final OHLCV sample as complete under the same native rules, returning one set of values, features and objects. The signal table appends `bar_status`: `closed` for closed bars, `forming` for a trial with `confirmed_at_ms=null`. A trial may disappear on later updates or at close. For BYO, still set `last_bar_closed: false`. Close requirements below describe the default mode; trials only admit the final sample without shortening structural windows or model confirmation requirements. See [forming trials](/signals#forming). History lengths are minimum evaluation requirements, not convergence guarantees. Comparisons use unrounded values and the exact boundaries below. Do not turn `null` into `false` on gaps, invalid dependencies or forming bars in the default mode. | Feature column | Kind | Rule | Meaning | History / validity | | --- | --- | --- | --- | --- | | `smi_ergodic.cross_up` | `event` | Previous erg <= erg_signal; current erg > erg_signal. | Normalized smoothed momentum crosses its own signal line. | long_len + short_len + sig_len contiguous bars and valid dependencies on both bars. | | `smi_ergodic.cross_down` | `event` | Previous erg >= erg_signal; current erg < erg_signal. | Normalized smoothed momentum crosses its own signal line. | long_len + short_len + sig_len contiguous bars and valid dependencies on both bars. | See [feature requests](/compute#native-features) for the format and examples. `/api/chart` also accepts `signals: true`, marking confirmed events by default. With `include_forming`, trial events also produce markers tagged `bar_status=forming`; states are not drawn on every bar. See [feature charts](/compute#feature-chart). ## Example call ```bash curl -X POST -H "Authorization: Bearer mq_xxx" \ -H "Content-Type: application/json" \ -d '{ "exchange": "binance", "market": "perp", "symbol": "BTCUSDT", "interval": "5m", "limit": 100, "signals": true, "calc": [{"name": "smi_ergodic", "params": {"long_len": 20, "short_len": 5, "sig_len": 5}}] }' \ https://api.mobiusquant.ai/api/indicators ``` ## Full interpretation guide Field meanings, interpretation rules and usage notes are documented in Chinese at: [smi_ergodic (中文详情)](https://docs.mobiusquant.ai/zh/indicators/smi_ergodic) ## Related indicators [accelerator_oscillator](./accelerator_oscillator) · [awesome_oscillator](./awesome_oscillator) · [cci](./cci) · [chande_mo](./chande_mo) · [connors_rsi](./connors_rsi) · [coppock_curve](./coppock_curve) · [dpo](./dpo) · [kst](./kst) --- # `stdev` — Stdev > Category: **Volatility** · Standard ::: tip Reading the response Use `POST /api/indicators?explain=true` to include interpretation notes at `indicators[responseKey].explain`. Read numeric results from `columns` and `data` in the same object. ::: This is a volatility indicator. ## Parameters | Parameter | Type | Default | |------|------|--------| | `length` | int | `20` | ## Output columns | Column | |------| | `stdev` | ## Native features This indicator has no independent native feature signals. Measures price dispersion without direction, events or a defined anomaly threshold. With `signals: true`, this indicator returns `signals: null`. Numeric values and charts remain available; no crossing, divergence or trade rules are added. ## Example call ```bash curl -X POST -H "Authorization: Bearer mq_xxx" \ -H "Content-Type: application/json" \ -d '{ "exchange": "binance", "market": "perp", "symbol": "BTCUSDT", "interval": "5m", "limit": 100, "calc": [{"name": "stdev", "params": {"length": 20}}] }' \ https://api.mobiusquant.ai/api/indicators ``` ## Full interpretation guide Field meanings, interpretation rules and usage notes are documented in Chinese at: [stdev (中文详情)](https://docs.mobiusquant.ai/zh/indicators/stdev) ## Related indicators [atr](./atr) · [bollinger](./bollinger) · [chande_kroll_stop](./chande_kroll_stop) · [donchian_channels](./donchian_channels) · [fibonacci_bollinger_bands](./fibonacci_bollinger_bands) · [historical_volatility](./historical_volatility) · [keltner_channels](./keltner_channels) · [linear_regression_channel](./linear_regression_channel) --- # `stoch_rsi` — Stoch RSI > Category: **Momentum** · Standard ::: tip Reading the response Use `POST /api/indicators?explain=true` to include interpretation notes at `indicators[responseKey].explain`. Read numeric results from `columns` and `data` in the same object. ::: This is a momentum indicator. ## Parameters | Parameter | Type | Default | |------|------|--------| | `length_rsi` | int | `14` | | `length_stoch` | int | `14` | | `smooth_k` | int | `3` | | `smooth_d` | int | `3` | ## Output columns | Column | |------| | `stoch_rsi_d` | | `stoch_rsi_k` | ## Native features Set top-level `signals: true` and read `indicators[responseKey].signals`. By default features are evaluated on closed bars: `true` is a positive result, `false` a valid negative result, and `null` unknown. These are not trade instructions. This indicator supports `include_forming: true`: treat the current final OHLCV sample as complete under the same native rules, returning one set of values, features and objects. The signal table appends `bar_status`: `closed` for closed bars, `forming` for a trial with `confirmed_at_ms=null`. A trial may disappear on later updates or at close. For BYO, still set `last_bar_closed: false`. Close requirements below describe the default mode; trials only admit the final sample without shortening structural windows or model confirmation requirements. See [forming trials](/signals#forming). History lengths are minimum evaluation requirements, not convergence guarantees. Comparisons use unrounded values and the exact boundaries below. Do not turn `null` into `false` on gaps, invalid dependencies or forming bars in the default mode. | Feature column | Kind | Rule | Meaning | History / validity | | --- | --- | --- | --- | --- | | `stoch_rsi.cross_up` | `event` | Previous stoch_rsi_k <= stoch_rsi_d; current stoch_rsi_k > stoch_rsi_d. | Stochastic RSI K crosses D, without added overbought/oversold filters or divergence conditions. | length_rsi + length_stoch + smooth_k + smooth_d - 1 contiguous bars and valid dependencies on both bars. | | `stoch_rsi.cross_down` | `event` | Previous stoch_rsi_k >= stoch_rsi_d; current stoch_rsi_k < stoch_rsi_d. | Stochastic RSI K crosses D, without added overbought/oversold filters or divergence conditions. | length_rsi + length_stoch + smooth_k + smooth_d - 1 contiguous bars and valid dependencies on both bars. | See [feature requests](/compute#native-features) for the format and examples. `/api/chart` also accepts `signals: true`, marking confirmed events by default. With `include_forming`, trial events also produce markers tagged `bar_status=forming`; states are not drawn on every bar. See [feature charts](/compute#feature-chart). ## Example call ```bash curl -X POST -H "Authorization: Bearer mq_xxx" \ -H "Content-Type: application/json" \ -d '{ "exchange": "binance", "market": "perp", "symbol": "BTCUSDT", "interval": "5m", "limit": 100, "signals": true, "calc": [{"name": "stoch_rsi", "params": {"length_rsi": 14, "length_stoch": 14, "smooth_k": 3, "smooth_d": 3}}] }' \ https://api.mobiusquant.ai/api/indicators ``` ## Full interpretation guide Field meanings, interpretation rules and usage notes are documented in Chinese at: [stoch_rsi (中文详情)](https://docs.mobiusquant.ai/zh/indicators/stoch_rsi) ## Related indicators [accelerator_oscillator](./accelerator_oscillator) · [awesome_oscillator](./awesome_oscillator) · [cci](./cci) · [chande_mo](./chande_mo) · [connors_rsi](./connors_rsi) · [coppock_curve](./coppock_curve) · [dpo](./dpo) · [kst](./kst) --- # `supertrend` — Supertrend > Category: **Trend** · Standard ::: tip Reading the response Use `POST /api/indicators?explain=true` to include interpretation notes at `indicators[responseKey].explain`. Read numeric results from `columns` and `data` in the same object. ::: This is a trend indicator. ## Parameters | Parameter | Type | Default | |------|------|--------| | `period` | int | `10` | | `multiplier` | float | `3` | ## Output columns | Column | |------| | `supertrend` | | `supertrend_dir` | ## Native features Set top-level `signals: true` and read `indicators[responseKey].signals`. By default features are evaluated on closed bars: `true` is a positive result, `false` a valid negative result, and `null` unknown. These are not trade instructions. This indicator supports `include_forming: true`: treat the current final OHLCV sample as complete under the same native rules, returning one set of values, features and objects. The signal table appends `bar_status`: `closed` for closed bars, `forming` for a trial with `confirmed_at_ms=null`. A trial may disappear on later updates or at close. For BYO, still set `last_bar_closed: false`. Close requirements below describe the default mode; trials only admit the final sample without shortening structural windows or model confirmation requirements. See [forming trials](/signals#forming). History lengths are minimum evaluation requirements, not convergence guarantees. Comparisons use unrounded values and the exact boundaries below. Do not turn `null` into `false` on gaps, invalid dependencies or forming bars in the default mode. | Feature column | Kind | Rule | Meaning | History / validity | | --- | --- | --- | --- | --- | | `supertrend.reversal_up` | `event` | Previous supertrend_dir=-1; current supertrend_dir=1. Initialization is not a reversal. | Reuses the ATR-channel state machine: a close below the final lower band reverses an up direction; a close above the final upper band reverses a down direction. | period + 2 contiguous bars with valid direction and active reference on both bars. | | `supertrend.reversal_down` | `event` | Previous supertrend_dir=1; current supertrend_dir=-1. Initialization is not a reversal. | Reuses the ATR-channel state machine: a close below the final lower band reverses an up direction; a close above the final upper band reverses a down direction. | period + 2 contiguous bars with valid direction and active reference on both bars. | See [feature requests](/compute#native-features) for the format and examples. `/api/chart` also accepts `signals: true`, marking confirmed events by default. With `include_forming`, trial events also produce markers tagged `bar_status=forming`; states are not drawn on every bar. See [feature charts](/compute#feature-chart). ## Example call ```bash curl -X POST -H "Authorization: Bearer mq_xxx" \ -H "Content-Type: application/json" \ -d '{ "exchange": "binance", "market": "perp", "symbol": "BTCUSDT", "interval": "5m", "limit": 100, "signals": true, "calc": [{"name": "supertrend", "params": {"period": 10, "multiplier": 3}}] }' \ https://api.mobiusquant.ai/api/indicators ``` ## Full interpretation guide Field meanings, interpretation rules and usage notes are documented in Chinese at: [supertrend (中文详情)](https://docs.mobiusquant.ai/zh/indicators/supertrend) ## Related indicators [alligator](./alligator) · [alma](./alma) · [ema](./ema) · [hma](./hma) · [hmm_regime](./hmm_regime) · [lsma](./lsma) · [mcginley_dynamic](./mcginley_dynamic) · [mobius_trend](./mobius_trend) --- # `tema` — TEMA > Category: **Trend** · Standard ::: tip Reading the response Use `POST /api/indicators?explain=true` to include interpretation notes at `indicators[responseKey].explain`. Read numeric results from `columns` and `data` in the same object. ::: This is a trend indicator. ## Parameters | Parameter | Type | Default | |------|------|--------| | `length` | int | `9` | ## Output columns | Column | |------| | `tema` | ## Native features This indicator has no independent native feature signals. A single triple-exponential average with no separate crossing or reversal rule. With `signals: true`, this indicator returns `signals: null`. Numeric values and charts remain available; no crossing, divergence or trade rules are added. ## Example call ```bash curl -X POST -H "Authorization: Bearer mq_xxx" \ -H "Content-Type: application/json" \ -d '{ "exchange": "binance", "market": "perp", "symbol": "BTCUSDT", "interval": "5m", "limit": 100, "calc": [{"name": "tema", "params": {"length": 9}}] }' \ https://api.mobiusquant.ai/api/indicators ``` ## Full interpretation guide Field meanings, interpretation rules and usage notes are documented in Chinese at: [tema (中文详情)](https://docs.mobiusquant.ai/zh/indicators/tema) ## Related indicators [alligator](./alligator) · [alma](./alma) · [ema](./ema) · [hma](./hma) · [hmm_regime](./hmm_regime) · [lsma](./lsma) · [mcginley_dynamic](./mcginley_dynamic) · [mobius_trend](./mobius_trend) --- # `trix` — TRIX > Category: **Momentum** · Standard ::: tip Reading the response Use `POST /api/indicators?explain=true` to include interpretation notes at `indicators[responseKey].explain`. Read numeric results from `columns` and `data` in the same object. ::: This is a momentum indicator. ## Parameters | Parameter | Type | Default | |------|------|--------| | `length` | int | `18` | ## Output columns | Column | |------| | `trix` | ## Native features Set top-level `signals: true` and read `indicators[responseKey].signals`. By default features are evaluated on closed bars: `true` is a positive result, `false` a valid negative result, and `null` unknown. These are not trade instructions. This indicator supports `include_forming: true`: treat the current final OHLCV sample as complete under the same native rules, returning one set of values, features and objects. The signal table appends `bar_status`: `closed` for closed bars, `forming` for a trial with `confirmed_at_ms=null`. A trial may disappear on later updates or at close. For BYO, still set `last_bar_closed: false`. Close requirements below describe the default mode; trials only admit the final sample without shortening structural windows or model confirmation requirements. See [forming trials](/signals#forming). History lengths are minimum evaluation requirements, not convergence guarantees. Comparisons use unrounded values and the exact boundaries below. Do not turn `null` into `false` on gaps, invalid dependencies or forming bars in the default mode. | Feature column | Kind | Rule | Meaning | History / validity | | --- | --- | --- | --- | --- | | `trix.cross_up` | `event` | Previous trix <= 0; current trix > 0. | The first difference of triple-smoothed log price changes sign; no extra signal line is introduced. | 3 * length contiguous bars and valid dependencies on both bars. | | `trix.cross_down` | `event` | Previous trix >= 0; current trix < 0. | The first difference of triple-smoothed log price changes sign; no extra signal line is introduced. | 3 * length contiguous bars and valid dependencies on both bars. | See [feature requests](/compute#native-features) for the format and examples. `/api/chart` also accepts `signals: true`, marking confirmed events by default. With `include_forming`, trial events also produce markers tagged `bar_status=forming`; states are not drawn on every bar. See [feature charts](/compute#feature-chart). ## Example call ```bash curl -X POST -H "Authorization: Bearer mq_xxx" \ -H "Content-Type: application/json" \ -d '{ "exchange": "binance", "market": "perp", "symbol": "BTCUSDT", "interval": "5m", "limit": 100, "signals": true, "calc": [{"name": "trix", "params": {"length": 18}}] }' \ https://api.mobiusquant.ai/api/indicators ``` ## Full interpretation guide Field meanings, interpretation rules and usage notes are documented in Chinese at: [trix (中文详情)](https://docs.mobiusquant.ai/zh/indicators/trix) ## Related indicators [accelerator_oscillator](./accelerator_oscillator) · [awesome_oscillator](./awesome_oscillator) · [cci](./cci) · [chande_mo](./chande_mo) · [connors_rsi](./connors_rsi) · [coppock_curve](./coppock_curve) · [dpo](./dpo) · [kst](./kst) --- # `tsi` — TSI > Category: **Momentum** · Standard ::: tip Reading the response Use `POST /api/indicators?explain=true` to include interpretation notes at `indicators[responseKey].explain`. Read numeric results from `columns` and `data` in the same object. ::: This is a momentum indicator. ## Parameters | Parameter | Type | Default | |------|------|--------| | `long_length` | int | `25` | | `short_length` | int | `13` | | `signal_length` | int | `13` | ## Output columns | Column | |------| | `tsi` | | `tsi_signal` | ## Native features Set top-level `signals: true` and read `indicators[responseKey].signals`. By default features are evaluated on closed bars: `true` is a positive result, `false` a valid negative result, and `null` unknown. These are not trade instructions. This indicator supports `include_forming: true`: treat the current final OHLCV sample as complete under the same native rules, returning one set of values, features and objects. The signal table appends `bar_status`: `closed` for closed bars, `forming` for a trial with `confirmed_at_ms=null`. A trial may disappear on later updates or at close. For BYO, still set `last_bar_closed: false`. Close requirements below describe the default mode; trials only admit the final sample without shortening structural windows or model confirmation requirements. See [forming trials](/signals#forming). History lengths are minimum evaluation requirements, not convergence guarantees. Comparisons use unrounded values and the exact boundaries below. Do not turn `null` into `false` on gaps, invalid dependencies or forming bars in the default mode. | Feature column | Kind | Rule | Meaning | History / validity | | --- | --- | --- | --- | --- | | `tsi.cross_up` | `event` | Previous tsi <= tsi_signal; current tsi > tsi_signal. | Double-smoothed momentum crosses its signal line; future price direction is not guaranteed. | long_length + short_length + signal_length contiguous bars and valid dependencies on both bars. | | `tsi.cross_down` | `event` | Previous tsi >= tsi_signal; current tsi < tsi_signal. | Double-smoothed momentum crosses its signal line; future price direction is not guaranteed. | long_length + short_length + signal_length contiguous bars and valid dependencies on both bars. | See [feature requests](/compute#native-features) for the format and examples. `/api/chart` also accepts `signals: true`, marking confirmed events by default. With `include_forming`, trial events also produce markers tagged `bar_status=forming`; states are not drawn on every bar. See [feature charts](/compute#feature-chart). ## Example call ```bash curl -X POST -H "Authorization: Bearer mq_xxx" \ -H "Content-Type: application/json" \ -d '{ "exchange": "binance", "market": "perp", "symbol": "BTCUSDT", "interval": "5m", "limit": 100, "signals": true, "calc": [{"name": "tsi", "params": {"long_length": 25, "short_length": 13, "signal_length": 13}}] }' \ https://api.mobiusquant.ai/api/indicators ``` ## Full interpretation guide Field meanings, interpretation rules and usage notes are documented in Chinese at: [tsi (中文详情)](https://docs.mobiusquant.ai/zh/indicators/tsi) ## Related indicators [accelerator_oscillator](./accelerator_oscillator) · [awesome_oscillator](./awesome_oscillator) · [cci](./cci) · [chande_mo](./chande_mo) · [connors_rsi](./connors_rsi) · [coppock_curve](./coppock_curve) · [dpo](./dpo) · [kst](./kst) --- # `ultimate_oscillator` — Ultimate Oscillator > Category: **Momentum** · Standard ::: tip Reading the response Use `POST /api/indicators?explain=true` to include interpretation notes at `indicators[responseKey].explain`. Read numeric results from `columns` and `data` in the same object. ::: This is a momentum indicator. ## Parameters | Parameter | Type | Default | |------|------|--------| | `length1` | int | `7` | | `length2` | int | `14` | | `length3` | int | `28` | ## Output columns | Column | |------| | `uo` | ## Native features Set top-level `signals: true` and read `indicators[responseKey].signals`. By default features are evaluated on closed bars: `true` is a positive result, `false` a valid negative result, and `null` unknown. These are not trade instructions. This indicator supports `include_forming: true`: treat the current final OHLCV sample as complete under the same native rules, returning one set of values, features and objects. The signal table appends `bar_status`: `closed` for closed bars, `forming` for a trial with `confirmed_at_ms=null`. A trial may disappear on later updates or at close. For BYO, still set `last_bar_closed: false`. Close requirements below describe the default mode; trials only admit the final sample without shortening structural windows or model confirmation requirements. See [forming trials](/signals#forming). History lengths are minimum evaluation requirements, not convergence guarantees. Comparisons use unrounded values and the exact boundaries below. Do not turn `null` into `false` on gaps, invalid dependencies or forming bars in the default mode. | Feature column | Kind | Rule | Meaning | History / validity | | --- | --- | --- | --- | --- | | `ultimate_oscillator.enter_overbought` | `event` | Previous uo <= 70; current uo > 70. | Multi-horizon buying pressure enters or exits the 30/70 reference regions; no extra divergence or confirmation is assumed. | max(length1, length2, length3) + 1 contiguous bars and valid dependencies on both bars. | | `ultimate_oscillator.exit_overbought` | `event` | Previous uo > 70; current uo <= 70. | Multi-horizon buying pressure enters or exits the 30/70 reference regions; no extra divergence or confirmation is assumed. | max(length1, length2, length3) + 1 contiguous bars and valid dependencies on both bars. | | `ultimate_oscillator.enter_oversold` | `event` | Previous uo >= 30; current uo < 30. | Multi-horizon buying pressure enters or exits the 30/70 reference regions; no extra divergence or confirmation is assumed. | max(length1, length2, length3) + 1 contiguous bars and valid dependencies on both bars. | | `ultimate_oscillator.exit_oversold` | `event` | Previous uo < 30; current uo >= 30. | Multi-horizon buying pressure enters or exits the 30/70 reference regions; no extra divergence or confirmation is assumed. | max(length1, length2, length3) + 1 contiguous bars and valid dependencies on both bars. | See [feature requests](/compute#native-features) for the format and examples. `/api/chart` also accepts `signals: true`, marking confirmed events by default. With `include_forming`, trial events also produce markers tagged `bar_status=forming`; states are not drawn on every bar. See [feature charts](/compute#feature-chart). ## Example call ```bash curl -X POST -H "Authorization: Bearer mq_xxx" \ -H "Content-Type: application/json" \ -d '{ "exchange": "binance", "market": "perp", "symbol": "BTCUSDT", "interval": "5m", "limit": 100, "signals": true, "calc": [{"name": "ultimate_oscillator", "params": {"length1": 7, "length2": 14, "length3": 28}}] }' \ https://api.mobiusquant.ai/api/indicators ``` ## Full interpretation guide Field meanings, interpretation rules and usage notes are documented in Chinese at: [ultimate_oscillator (中文详情)](https://docs.mobiusquant.ai/zh/indicators/ultimate_oscillator) ## Related indicators [accelerator_oscillator](./accelerator_oscillator) · [awesome_oscillator](./awesome_oscillator) · [cci](./cci) · [chande_mo](./chande_mo) · [connors_rsi](./connors_rsi) · [coppock_curve](./coppock_curve) · [dpo](./dpo) · [kst](./kst) --- # `vortex` — Vortex > Category: **Trend Strength** · Composite ::: tip Reading the response Use `POST /api/indicators?explain=true` to include interpretation notes at `indicators[responseKey].explain`. Read numeric results from `columns` and `data` in the same object. ::: This is a trend strength indicator. ## Parameters | Parameter | Type | Default | |------|------|--------| | `period` | int | `14` | ## Output columns | Column | |------| | `vim` | | `vip` | ## Native features Set top-level `signals: true` and read `indicators[responseKey].signals`. By default features are evaluated on closed bars: `true` is a positive result, `false` a valid negative result, and `null` unknown. These are not trade instructions. This indicator supports `include_forming: true`: treat the current final OHLCV sample as complete under the same native rules, returning one set of values, features and objects. The signal table appends `bar_status`: `closed` for closed bars, `forming` for a trial with `confirmed_at_ms=null`. A trial may disappear on later updates or at close. For BYO, still set `last_bar_closed: false`. Close requirements below describe the default mode; trials only admit the final sample without shortening structural windows or model confirmation requirements. See [forming trials](/signals#forming). History lengths are minimum evaluation requirements, not convergence guarantees. Comparisons use unrounded values and the exact boundaries below. Do not turn `null` into `false` on gaps, invalid dependencies or forming bars in the default mode. | Feature column | Kind | Rule | Meaning | History / validity | | --- | --- | --- | --- | --- | | `vortex.cross_up` | `event` | Previous vip <= vim; current vip > vim. | Positive and negative vortex movement switch relative dominance. | period + 2 contiguous bars and valid dependencies on both bars. | | `vortex.cross_down` | `event` | Previous vip >= vim; current vip < vim. | Positive and negative vortex movement switch relative dominance. | period + 2 contiguous bars and valid dependencies on both bars. | See [feature requests](/compute#native-features) for the format and examples. `/api/chart` also accepts `signals: true`, marking confirmed events by default. With `include_forming`, trial events also produce markers tagged `bar_status=forming`; states are not drawn on every bar. See [feature charts](/compute#feature-chart). ## Example call ```bash curl -X POST -H "Authorization: Bearer mq_xxx" \ -H "Content-Type: application/json" \ -d '{ "exchange": "binance", "market": "perp", "symbol": "BTCUSDT", "interval": "5m", "limit": 100, "signals": true, "calc": [{"name": "vortex", "params": {"period": 14}}] }' \ https://api.mobiusquant.ai/api/indicators ``` ## Full interpretation guide Field meanings, interpretation rules and usage notes are documented in Chinese at: [vortex (中文详情)](https://docs.mobiusquant.ai/zh/indicators/vortex) ## Related indicators [adx](./adx) · [aroon_oscillator](./aroon_oscillator) · [choppiness_index](./choppiness_index) --- # `vwap` — VWAP > Category: **Volume** · Standard ::: tip Reading the response Use `POST /api/indicators?explain=true` to include interpretation notes at `indicators[responseKey].explain`. Read numeric results from `columns` and `data` in the same object. ::: This is a volume indicator. ## Parameters | Parameter | Type | Default | |------|------|--------| | `anchor` | string | `session` | | `anchor_ms` | int / None | — | | `source` | string | `hlc3` | | `band_mode` | string | `stdev` | | `mult_1` | float | `1` | | `mult_2` | float | `2` | | `mult_3` | float | `3` | ## Output columns _Output columns are returned in the `/api/indicators` response — see the call example below._ ## Native features This indicator has no independent native feature signals. Provides anchored VWAP and bands; resets change the reference and no cross-anchor confirmation rule is defined. With `signals: true`, this indicator returns `signals: null`. Numeric values and charts remain available; no crossing, divergence or trade rules are added. ## Example call ```bash curl -X POST -H "Authorization: Bearer mq_xxx" \ -H "Content-Type: application/json" \ -d '{ "exchange": "binance", "market": "perp", "symbol": "BTCUSDT", "interval": "5m", "limit": 100, "calc": [{"name": "vwap", "params": {"anchor": "session", "anchor_ms": null, "source": "hlc3", "band_mode": "stdev", "mult_1": 1, "mult_2": 2, "mult_3": 3}}] }' \ https://api.mobiusquant.ai/api/indicators ``` ## Full interpretation guide Field meanings, interpretation rules and usage notes are documented in Chinese at: [vwap (中文详情)](https://docs.mobiusquant.ai/zh/indicators/vwap) ## Related indicators [chaikin_oscillator](./chaikin_oscillator) · [cmf](./cmf) · [cvd](./cvd) · [kvo](./kvo) · [obv](./obv) · [pvo](./pvo) --- # `vwma` — VWMA > Category: **Trend** · Standard ::: tip Reading the response Use `POST /api/indicators?explain=true` to include interpretation notes at `indicators[responseKey].explain`. Read numeric results from `columns` and `data` in the same object. ::: This is a trend indicator. ## Parameters | Parameter | Type | Default | |------|------|--------| | `length` | int | `20` | ## Output columns | Column | |------| | `vwma` | ## Native features This indicator has no independent native feature signals. A single volume-weighted average without a native event detector. With `signals: true`, this indicator returns `signals: null`. Numeric values and charts remain available; no crossing, divergence or trade rules are added. ## Example call ```bash curl -X POST -H "Authorization: Bearer mq_xxx" \ -H "Content-Type: application/json" \ -d '{ "exchange": "binance", "market": "perp", "symbol": "BTCUSDT", "interval": "5m", "limit": 100, "calc": [{"name": "vwma", "params": {"length": 20}}] }' \ https://api.mobiusquant.ai/api/indicators ``` ## Full interpretation guide Field meanings, interpretation rules and usage notes are documented in Chinese at: [vwma (中文详情)](https://docs.mobiusquant.ai/zh/indicators/vwma) ## Related indicators [alligator](./alligator) · [alma](./alma) · [ema](./ema) · [hma](./hma) · [hmm_regime](./hmm_regime) · [lsma](./lsma) · [mcginley_dynamic](./mcginley_dynamic) · [mobius_trend](./mobius_trend) --- # `williams_r` — Williams R > Category: **Momentum** · Standard ::: tip Reading the response Use `POST /api/indicators?explain=true` to include interpretation notes at `indicators[responseKey].explain`. Read numeric results from `columns` and `data` in the same object. ::: This is a momentum indicator. ## Parameters | Parameter | Type | Default | |------|------|--------| | `length` | int | `21` | | `ema_period` | int | `13` | ## Output columns | Column | |------| | `wr` | | `wr_ema` | ## Native features Set top-level `signals: true` and read `indicators[responseKey].signals`. By default features are evaluated on closed bars: `true` is a positive result, `false` a valid negative result, and `null` unknown. These are not trade instructions. This indicator supports `include_forming: true`: treat the current final OHLCV sample as complete under the same native rules, returning one set of values, features and objects. The signal table appends `bar_status`: `closed` for closed bars, `forming` for a trial with `confirmed_at_ms=null`. A trial may disappear on later updates or at close. For BYO, still set `last_bar_closed: false`. Close requirements below describe the default mode; trials only admit the final sample without shortening structural windows or model confirmation requirements. See [forming trials](/signals#forming). History lengths are minimum evaluation requirements, not convergence guarantees. Comparisons use unrounded values and the exact boundaries below. Do not turn `null` into `false` on gaps, invalid dependencies or forming bars in the default mode. | Feature column | Kind | Rule | Meaning | History / validity | | --- | --- | --- | --- | --- | | `williams_r.enter_overbought` | `event` | Previous wr <= -20; current wr > -20. | The close's position in the lookback range enters or exits -80/-20 extremes, without predicting reversal. | length + 1 contiguous bars and valid dependencies on both bars. | | `williams_r.exit_overbought` | `event` | Previous wr > -20; current wr <= -20. | The close's position in the lookback range enters or exits -80/-20 extremes, without predicting reversal. | length + 1 contiguous bars and valid dependencies on both bars. | | `williams_r.enter_oversold` | `event` | Previous wr >= -80; current wr < -80. | The close's position in the lookback range enters or exits -80/-20 extremes, without predicting reversal. | length + 1 contiguous bars and valid dependencies on both bars. | | `williams_r.exit_oversold` | `event` | Previous wr < -80; current wr >= -80. | The close's position in the lookback range enters or exits -80/-20 extremes, without predicting reversal. | length + 1 contiguous bars and valid dependencies on both bars. | See [feature requests](/compute#native-features) for the format and examples. `/api/chart` also accepts `signals: true`, marking confirmed events by default. With `include_forming`, trial events also produce markers tagged `bar_status=forming`; states are not drawn on every bar. See [feature charts](/compute#feature-chart). ## Example call ```bash curl -X POST -H "Authorization: Bearer mq_xxx" \ -H "Content-Type: application/json" \ -d '{ "exchange": "binance", "market": "perp", "symbol": "BTCUSDT", "interval": "5m", "limit": 100, "signals": true, "calc": [{"name": "williams_r", "params": {"length": 21, "ema_period": 13}}] }' \ https://api.mobiusquant.ai/api/indicators ``` ## Full interpretation guide Field meanings, interpretation rules and usage notes are documented in Chinese at: [williams_r (中文详情)](https://docs.mobiusquant.ai/zh/indicators/williams_r) ## Related indicators [accelerator_oscillator](./accelerator_oscillator) · [awesome_oscillator](./awesome_oscillator) · [cci](./cci) · [chande_mo](./chande_mo) · [connors_rsi](./connors_rsi) · [coppock_curve](./coppock_curve) · [dpo](./dpo) · [kst](./kst) --- # `williams_stops` — Williams Stops > Category: **Trend** · Composite ::: tip Reading the response Use `POST /api/indicators?explain=true` to include interpretation notes at `indicators[responseKey].explain`. Read numeric results from `columns` and `data` in the same object. ::: This is a trend indicator. ## Parameters | Parameter | Type | Default | |------|------|--------| | `left_range` | int | `2` | | `right_range` | int | `2` | | `buffer_pct` | float | `0` | ## Output columns | Column | |------| | `long_stop` | | `short_stop` | | `trend_state` | ## Native features Set top-level `signals: true` and read `indicators[responseKey].signals`. By default features are evaluated on closed bars: `true` is a positive result, `false` a valid negative result, and `null` unknown. These are not trade instructions. This indicator supports `include_forming: true`: treat the current final OHLCV sample as complete under the same native rules, returning one set of values, features and objects. The signal table appends `bar_status`: `closed` for closed bars, `forming` for a trial with `confirmed_at_ms=null`. A trial may disappear on later updates or at close. For BYO, still set `last_bar_closed: false`. Close requirements below describe the default mode; trials only admit the final sample without shortening structural windows or model confirmation requirements. See [forming trials](/signals#forming). History lengths are minimum evaluation requirements, not convergence guarantees. Comparisons use unrounded values and the exact boundaries below. Do not turn `null` into `false` on gaps, invalid dependencies or forming bars in the default mode. | Feature column | Kind | Rule | Meaning | History / validity | | --- | --- | --- | --- | --- | | `williams_stops.reversal_up` | `event` | Previous trend_state=-1; current trend_state=1. Initialization is not a reversal. | Reuses the fractal trailing-stop close-based reversal; the initial simultaneous long/short state is not a confirmed single direction. | left_range + right_range + 2 contiguous bars with valid direction and active reference on both bars. | | `williams_stops.reversal_down` | `event` | Previous trend_state=1; current trend_state=-1. Initialization is not a reversal. | Reuses the fractal trailing-stop close-based reversal; the initial simultaneous long/short state is not a confirmed single direction. | left_range + right_range + 2 contiguous bars with valid direction and active reference on both bars. | See [feature requests](/compute#native-features) for the format and examples. `/api/chart` also accepts `signals: true`, marking confirmed events by default. With `include_forming`, trial events also produce markers tagged `bar_status=forming`; states are not drawn on every bar. See [feature charts](/compute#feature-chart). ## Example call ```bash curl -X POST -H "Authorization: Bearer mq_xxx" \ -H "Content-Type: application/json" \ -d '{ "exchange": "binance", "market": "perp", "symbol": "BTCUSDT", "interval": "5m", "limit": 100, "signals": true, "calc": [{"name": "williams_stops", "params": {"left_range": 2, "right_range": 2, "buffer_pct": 0}}] }' \ https://api.mobiusquant.ai/api/indicators ``` ## Full interpretation guide Field meanings, interpretation rules and usage notes are documented in Chinese at: [williams_stops (中文详情)](https://docs.mobiusquant.ai/zh/indicators/williams_stops) ## Related indicators [alligator](./alligator) · [alma](./alma) · [ema](./ema) · [hma](./hma) · [hmm_regime](./hmm_regime) · [lsma](./lsma) · [mcginley_dynamic](./mcginley_dynamic) · [mobius_trend](./mobius_trend) --- # Skill Runtime Lookup Guide > Audience: a MobiusQuant **Skill** running inside an AI Agent tool (Claude Code, Codex, OpenClaw, Hermes, or similar). This page tells the Skill **where to fetch what**, in what order, when the end user asks about indicators or market symbols. > > Paste-friendly: drop a link to this page into your `SKILL.md`, or paste the relevant sections inline. --- ## TL;DR | User intent | Best source | Why | | --- | --- | --- | | "What indicators do you have?" | `GET /llms-full.txt` (this site) | Read the complete English reference in one request | | "What params does \`X\` take?" | `GET /indicators/.md` (this site) | Structured English, no narrative noise | | "How do I interpret \`X\` signals?" | `GET /zh/indicators/.md` (this site) | Chinese narrative — interpretation, caveats, focus points | | "What's the canonical symbol for ``?" | `GET /api/symbols/search?q=` (engine) | Live fuzzy lookup, includes Chinese/English aliases | | "Is `` on ``?" | `GET /api/markets///symbols` (engine) | Authoritative live list | | "What's BTC's 5m kline right now?" | `GET /api/klines` or `POST /api/indicators` (engine) | Live data — always use the API, never cite cached docs | | **"How do I interpret these indicator values?"** | **`POST /api/indicators?explain=true`** (engine) | **Response carries `explain.summary_focus` / `signals` / `caveats` — pass these to your LLM verbatim, do NOT have it guess interpretation rules** | **Rule of thumb**: static reference info → fetch from `docs.mobiusquant.ai`. Live data → call `api.mobiusquant.ai`. **Indicator interpretation rubrics → always include `?explain=true` and forward the explain field to your LLM.** --- ## Static reference (docs.mobiusquant.ai) This site is **public**, **CORS-enabled**, **no token required**. Fetch and cache freely. ### Bootstrapping: one-shot full reference ```http GET https://docs.mobiusquant.ai/llms-full.txt ``` Returns structured English covering API token rules, 13 supported venues including gold spot from 5m, all indicators (with default params + output columns), Skill integration, and AI agent guidance. **Recommended**: fetch once at Skill startup (or first time the user mentions data/indicators). Cache for the session. ### Per-indicator detail ```http GET https://docs.mobiusquant.ai/indicators/.md # English (structured) GET https://docs.mobiusquant.ai/zh/indicators/.md # Chinese (with interpretation) ``` Where `` is the canonical lowercase ID. Indicator IDs: ``` accelerator_oscillator awesome_oscillator cci chande_mo connors_rsi coppock_curve dpo kst macd momentum ppo roc smi_ergodic stoch_rsi trix tsi ultimate_oscillator williams_r # momentum (18) fisher_transform rci_ribbon rsi rvi # oscillator (4) alligator alma ema hma hmm_regime lsma mcginley_dynamic mobius_trend parabolic_sar supertrend tema pi_cycle_bottom smc vwma williams_stops # trend (15) adx aroon_oscillator choppiness_index vortex # trend_strength (4) atr bollinger chande_kroll_stop donchian_channels fibonacci_bollinger_bands historical_volatility keltner_channels linear_regression_channel mass_index stdev # volatility (10) chaikin_oscillator cmf cvd kvo obv pvo vwap # volume (7) price # base (1) ``` **Möbius Lab (proprietary)**: `mobius_trend`. These are MobiusQuant in-house indicators, not classic public ones. ### Catalog & navigation | URL | Use | | --- | --- | | `/llms.txt` | Site index (English) — overview before deep-diving | | `/llms-full.txt` | Full English reference — recommended first fetch | | `/indicators/index.md` | English catalog overview | | `/zh/indicators/index.md` | Chinese catalog overview | | `/markets.md` | English venue + canonical-symbol rules | | `/zh/markets.md` | Chinese venue + **enumerated symbol lists**, including gold spot from 5m | | `/token.md` | Token application + Bearer auth + rate limits | | `/agents.md` | General AI Agent operating manual | All HTML pages also resolve as `.md` at the same path. CORS `*` on every `.md` and `.txt`. --- ## Live data (api.mobiusquant.ai) **Optional** `Authorization: Bearer mq_<43chars>`. Without a token you still get 10 req/min per IP (good for exploration). Add a token to upgrade to 60 req/min. Get one free at (7-day anonymous) or (logged-in permanent). Rate limit: anonymous 10 req/min per IP · with token 60 req/min. ### Discovery endpoints (live, authoritative) ```bash # All venues + WS health curl -H "Authorization: Bearer mq_xxx" https://api.mobiusquant.ai/api/markets # Symbols on one venue curl -H "Authorization: Bearer mq_xxx" \ https://api.mobiusquant.ai/api/markets/binance/perp/symbols # Live indicator catalog (params + output cols) curl -H "Authorization: Bearer mq_xxx" https://api.mobiusquant.ai/api/indicators/registry # Chartable subset + drawing protocol curl -H "Authorization: Bearer mq_xxx" https://api.mobiusquant.ai/api/indicators/catalog # Interval support matrix curl -H "Authorization: Bearer mq_xxx" https://api.mobiusquant.ai/api/intervals ``` ### Natural-language symbol resolution The user says "BTC", "比特币", "Tencent", "茅台" — let the engine resolve: ```bash curl -H "Authorization: Bearer mq_xxx" \ "https://api.mobiusquant.ai/api/symbols/search?q=比特币" # → [{"canonical": "BTCUSDT", "exchange": "binance", "market": "perp", ...}] ``` Or fetch the full mapping table once: ```bash curl -H "Authorization: Bearer mq_xxx" https://api.mobiusquant.ai/api/symbols/builtin ``` ### Compute / data endpoints ```bash # Raw OHLCV GET https://api.mobiusquant.ai/api/klines?exchange=binance&market=perp&symbol=BTCUSDT&interval=5m&limit=100 # Indicators on klines POST https://api.mobiusquant.ai/api/indicators body: { "exchange":"binance","market":"perp","symbol":"BTCUSDT", "interval":"5m","limit":100, "calc":[{"name":"rsi","params":{"period":14}}] } # Same + chart drawing protocol POST https://api.mobiusquant.ai/api/chart # Compute indicators on caller-supplied OHLCV (backtest / custom feed) POST https://api.mobiusquant.ai/api/indicators/compute body: { "klines": [[1735689600000, 95000, 95500, 94800, 95200, 1234.5], ...], "interval": "1h", "calc": [{"name":"rsi","params":{"period":14}}] } # ≤ 2000 bars; HMM-only requests allow 5000. Supply sufficient history. ``` --- ## Canonical symbol rules (bake in, no fetch needed) | Asset class | Form | Examples | | --- | --- | --- | | Crypto | `{BASE}{QUOTE}` all-upper, no separator | `BTCUSDT`, `BTCUSDC`, `1000PEPEUSDT` | | A-shares (`stock:cn`) | 6-digit bare code (no `sh`/`sz` prefix, no `.SS` suffix) | `600519`, `300750` | | Hong Kong (`stock:hk`) | 5-digit with leading zero | `00700`, `09988` | | US (`stock:us`) | Bare ticker | `AAPL`, `NVDA` | | Forex (`forex:spot`) | 6-letter `{BASE}{QUOTE}` | `EURUSD`, `USDJPY` | Always send canonical symbols, such as `BTCUSDT`. Do not send native symbols such as `BTC-USDT-SWAP`; use the discovery endpoints to confirm symbol availability. --- ## Decision flow When the user asks something data-related: ``` ┌─ Is the user asking about LIVE data (current price, current indicator value)? │ └─ YES → call api.mobiusquant.ai with Bearer token │ - /api/klines for raw OHLCV │ - /api/indicators for computed values │ - /api/chart for klines + drawing protocol │ ├─ Is the user asking what's AVAILABLE (which indicators, which venues)? │ └─ Have you fetched /llms-full.txt this session? │ ├─ YES → answer from cache │ └─ NO → fetch /llms-full.txt once, then answer + cache │ ├─ Is the user asking HOW TO INTERPRET an indicator? │ └─ Fetch /zh/indicators/.md (Chinese — has signal interpretation + caveats) │ ├─ Is the user asking about a SPECIFIC SYMBOL's existence / canonical form? │ └─ Call /api/symbols/search?q= (engine resolves Chinese/English aliases) │ └─ Is the user asking about PARAMETERS or OUTPUT COLUMNS of an indicator? └─ Fetch /indicators/.md (English structured) OR /api/indicators/registry (live) ``` --- ## Caching guidance - `/llms-full.txt`, `/indicators/.md`, `/markets.md` — content updates **infrequently** (when new indicators are added or venue list adjusts). Cache for the entire Skill session. Refresh on next session start. - `/api/markets`, `/api/indicators/registry` — live data, but content also rarely changes minute-to-minute. Safe to cache for 5-10 minutes. - `/api/klines`, `/api/indicators` (compute) — **always live**, never cache. --- ## Quick example: user asks "show me MACD on BTC 1-hour" 1. Skill identifies intent: compute indicator on live data 2. Resolve symbol: user said "BTC" → from cached `/llms-full.txt` or by calling `/api/symbols/search?q=BTC` → canonical `BTCUSDT` on `binance:perp` 3. Resolve indicator: user said "MACD" → from cache: `macd`, default params `{fast:12, slow:26, signal:9}` 4. Call live: ```bash curl -X POST -H "Authorization: Bearer $MOBIUS_TOKEN" \ -H "Content-Type: application/json" \ -d '{"exchange":"binance","market":"perp","symbol":"BTCUSDT", "interval":"1h","limit":100, "calc":[{"name":"macd","params":{"fast":12,"slow":26,"signal":9}}]}' \ https://api.mobiusquant.ai/api/indicators ``` 5. (Optional) If user asks "what does the histogram mean", fetch `/zh/indicators/macd.md` for interpretation. --- ## Citation hygiene When quoting from this docs site to the end user: - Always include the source URL so the user can dive deeper. - Prefer `.md` URLs over `.html`. - Mention if the source is Chinese-only (so user with English-only context knows). --- _This page is the single source of truth for Skill runtime data lookup. Skill maintainers: link to this page from your `SKILL.md`, do not inline-copy (linking lets you pick up updates automatically)._ --- # Supported Markets The API supports **13 venues**, including gold spot, through a single set of endpoints. Query `/api/markets` for current availability. Canonical symbols are all-uppercase with no separators. ## Overview | Asset class | Venue | Symbols | Supported intervals | | --- | --- | --- | --- | | Crypto | `binance:spot` | 70 | `1m` `5m` `15m` `1h` `4h` `1d` | | Crypto / stock and other perpetuals | `binance:perp` | Query discovery endpoint | `1m` `5m` `15m` `1h` `4h` `1d` | | | `bybit:spot` | 70 | `1m` `5m` `15m` `1h` `4h` `1d` | | | `bybit:perp` | 70 | `1m` `5m` `15m` `1h` `4h` `1d` | | | `okx:spot` | 70 | `1m` `5m` `15m` `1h` `4h` `1d` | | | `okx:perp` | 50 | `1m` `5m` `15m` `1h` `4h` `1d` | | | `hyperliquid:perp` | Query discovery endpoint | `1m` `5m` `15m` `1h` `4h` `1d` | | A-shares | `stock:cn` | 32 | `1m` `5m` `15m` `30m` `1h` `1d` | | Hong Kong | `stock:hk` | 20 | `1h` `1d` | | US stocks | `stock:us` | 37 | `1h` `1d` | | Forex | `forex:spot` | 10 | `1h` `1d` | | Commodity futures | `commodity:futures` | 7 | `1h` `1d` | | Gold spot | `commodity:spot` | 1 | `5m` `15m` `30m` `1h` `4h` `1d` | ::: tip Query the live list Symbol lists may change (we add hot tickers and remove illiquid ones). **Before integrating, query the discovery endpoints**: ```bash # All venues + WS health curl -H "Authorization: Bearer mq_xxx" https://api.mobiusquant.ai/api/markets # All symbols on a single venue curl -H "Authorization: Bearer mq_xxx" \ https://api.mobiusquant.ai/api/markets/binance/perp/symbols ``` ::: ## Historical time windows {#historical-windows} For subscribed Binance, Bybit, OKX and Hyperliquid instruments, including Binance stock perpetuals, `GET /api/klines`, `POST /api/indicators` and `POST /api/chart` automatically retrieve available history when `startTime` or `endTime` is supplied. No new parameter or preliminary Kline request is required. Requests without time bounds retain latest-data behavior. Stock spot, forex, commodity futures and gold spot retain their existing history limitations. Use this body with either POST endpoint, assuming the symbol is subscribed and the history exists: ```json { "exchange": "binance", "market": "perp", "symbol": "SNDKUSDT", "interval": "5m", "startTime": 1791849600000, "endTime": 1791936000000, "limit": 300, "signals": true, "calc": [{"name": "cvd", "id": "cvd"}, {"name": "hmm_regime", "id": "hmm"}] } ``` - Bounds are inclusive candle opening timestamps in milliseconds. Large ranges select the most recent `limit` interval slots at the end of the range. Missing slots are not fabricated, so fewer candles may be returned. - An end-only query selects a window ending at that bound. A start-only query selects the most recent window through the present, not forward pagination from the start. Supply both bounds for historical review. - Warmup does not consume visible `limit`. Existing endpoint output caps still apply; use a common permitted limit when comparing endpoints. Parameter and output-size combinations requiring more than 6,000 history input bars return 400. - The legacy GET `extend_history` flag remains accepted but is unnecessary for time-window queries. **Do not add it to either POST body**; unknown fields return 422. - Chart and numeric results use consistent calculation history for a fixed closed window. Features and objects come from the same calculation. Use `include:["calculation"]` for actual input ranges. Revisions and forming-candle updates can still change results between requests. - Insufficient history retains native null/status semantics. The API does not substitute latest candles or stock-spot history, and cannot reconstruct historical intrabar features that later disappeared. Errors retain the `{"detail":"..."}` body. The `X-Kline-Error-Code` response header distinguishes: | HTTP | Code | Action | | --- | --- | --- | | 404 | `symbol_not_subscribed` | Check the subscribed symbol list | | 404 | `history_not_available` | No candles are available in the selected window | | 503 | `history_preparing` | Retry the same request after `Retry-After` | | 503 | `history_busy` | Respect `Retry-After` and reduce concurrent windows | | 503 | `history_upstream_unavailable` | The data source is temporarily unavailable; respect `Retry-After` | Other service 503 and API 429 responses retain their existing handling. Source-side rate limiting may appear as a historical-source 503. An unavailable window does not prove delisting; do not silently replace the request with latest data. ## Canonical symbol rules | Venue | Form | Examples | | --- | --- | --- | | Crypto | `{BASE}{QUOTE}` | `BTCUSDT`, `BTCUSDC`, `1000PEPEUSDT` | | Binance stock perpetuals | Full contract symbol on `binance:perp` | `TSLAUSDT`, `NVDAUSDT` | | `stock:cn` | 6-digit bare code (no `sh` / `sz` / `.SS` suffix) | `600519`, `000333`, `300750` | | `stock:hk` | 5-digit with leading zero | `00700`, `09988` | | `stock:us` | Bare ticker | `AAPL`, `NVDA`, `TSLA` | | `forex:spot` | 6-letter concatenation | `EURUSD`, `USDJPY`, `GBPUSD` | | `commodity:futures` | Futures canonical code | `XAUF`, `XAGF`, `WTIUSD` | | `commodity:spot` | Gold spot canonical code | `XAUUSD` | Send the **canonical** value in API requests. The native examples below are not valid request symbols: | Native | Canonical | | --- | --- | | `BTC-USDT-SWAP` (OKX perp) | `BTCUSDT` | | `BTCPERP` (Bybit USDC perp) | `BTCUSDC` | | `kPEPE` (Hyperliquid) | `1000PEPEUSDC` | | `1000PEPEUSDT` (Binance memecoin) | `1000PEPEUSDT` (already canonical) | | `00700.HK` | `00700` | | `600519.SS` | `600519` | | `GC=F` (Gold futures) | `XAUF` on `commodity:futures` | **Rule of thumb**: all uppercase, no separators, `perp` vs `spot` is encoded in the **venue** (not in the symbol). ## Binance stock perpetuals {#binance-stock-perp} Use `exchange="binance"`, `market="perp"` and the full contract symbol, for example `TSLAUSDT`. This is not stock spot on `stock:us`; do not send bare `TSLA` or `market="stock"`. This capability covers Binance only, not stock contracts on other exchanges. **Discover before querying.** `/api/markets/binance/perp/symbols` lists only contracts subscribed by this service. An exchange listing does not imply an active service subscription. The default response is unchanged; add `include_meta=true` for instrument classification: ```bash curl 'https://api.mobiusquant.ai/api/markets/binance/perp/symbols?include_meta=true' ``` Example when TSLA is subscribed (one symbol shown): ```json { "exchange": "binance", "market": "perp", "symbols": ["TSLAUSDT"], "count": 1, "symbol_meta": { "TSLAUSDT": {"instrument_type": "equity_perpetual", "underlying_symbol": "TSLA", "quote_asset": "USDT", "status": "trading"} }, "metadata_status": "ready", "metadata_updated_at_ms": 1791936000000 } ``` | Field | Meaning | | --- | --- | | `symbol_meta[symbol].instrument_type` | `equity_perpetual` identifies a verified stock perpetual. Other values: `crypto_perpetual`, `commodity_perpetual`, `forex_perpetual`, `pre_ipo_perpetual`, `unclassified_tradfi_perpetual`, `unknown`. Unreviewed equity-class instruments and ETFs must not be treated as verified stocks | | `underlying_symbol` | Verified stock ticker such as `TSLA`; `null` for other types or unknown identity | | `quote_asset` | Quote asset; supported stock contracts use `USDT`. `null` when unknown | | `status` | `trading`, `pending` (not yet listed), `paused`, `ended`, or `unknown` | | `metadata_status` | `ready`, `stale` (expired or refresh failed), or `unavailable` (no usable directory yet). This is not candle readiness; stale metadata is not a current tradability guarantee | | `metadata_updated_at_ms` | Last successful directory update in milliseconds; `null` when unknown | `include_meta=true` currently supports only `binance:perp`; other venues return `400`. Metadata covers subscribed symbols only and adds no Kline or indicator numeric columns. The existing venue-level `asset_class=crypto` label does not classify each underlying instrument; use `instrument_type` instead. - Intervals: `1m / 5m / 15m / 1h / 4h / 1d`. Query `/api/intervals?exchange=binance&market=perp` for enabled intervals and response caps. - OHLC uses contract trade prices. `volume/quote_volume` use upstream contract volume/notional, not cash-stock volume. These are not index-price or mark-price candles. There is no split/dividend adjustment or stitching with cash-stock history. - Cash-stock trading calendars do not stop the perpetual feed. Weekends and cash-market closures do not by themselves imply a contract trading halt. Distinguish trading status from candle freshness. - `startTime/endTime` still filter candle opening times in milliseconds. All three market-data endpoints automatically retrieve available history; see [historical windows](#historical-windows). They cannot create pre-listing data, fabricate gaps, or raise per-request caps. - Reuse `/api/klines`, `/api/indicators` and `/api/chart` after subscription. Unsubscribed symbols return `404`; preparing data returns `503`. Respect `Retry-After`. - Indicator and feature history, interval and continuity requirements still apply. CVD is an OHLCV-based estimate, not trade-by-trade aggressor volume. HMM supports `5m / 15m / 1h / 4h / 1d`, not `1m`. Newly listed contracts may have insufficient history; `null` is not a negative feature result. - Set `signals:true` for native features; optionally add `include_forming:true` to evaluate the unclosed final candle. Intrabar conditions can disappear. See [feature signals](/signals#forming) for classification and confirmation times. The examples below assume TSLAUSDT is subscribed: ```bash curl 'https://api.mobiusquant.ai/api/klines?exchange=binance&market=perp&symbol=TSLAUSDT&interval=5m&limit=100' # Values and native features. Change the path to /api/chart for plotting. curl -X POST 'https://api.mobiusquant.ai/api/indicators' \ -H 'content-type: application/json' \ -d '{"exchange":"binance","market":"perp","symbol":"TSLAUSDT","interval":"5m","limit":100,"signals":true,"include_forming":true,"calc":[{"name":"macd"},{"name":"rsi"},{"name":"cvd"},{"name":"hmm_regime"}]}' ``` ## Hyperliquid native perpetuals {#hyperliquid-perp} Use `exchange="hyperliquid"`, `market="perp"`. Coverage is limited to the default USDC perpetual market; Hyperliquid spot and HIP-3 contracts are not supported. - Send canonical symbols such as `BTCUSDC`, `ETHUSDC`, or `HYPEUSDC`. `1000PEPEUSDC` maps to native `kPEPE`. Do not send `BTC`, `BTCUSDT`, `kPEPE`, or DEX-prefixed names. - `/api/markets/hyperliquid/perp/symbols` lists contracts subscribed by this service, not every contract listed on the exchange. Unsubscribed contracts are not available for Kline queries or indicator calculations. - Supported intervals are `1m / 5m / 15m / 1h / 4h / 1d`. Query `/api/intervals?exchange=hyperliquid&market=perp` for enabled intervals and request limits. - `volume` is the exchange-provided base-asset volume. `quote_volume` is estimated as `volume × close`, not an exact sum of traded notional. Prices and volumes use the contract's units; a `1000`-prefixed contract must not be treated as a single-token quote. - `startTime/endTime` filter candle opening times in milliseconds, inclusive, without an additional history flag. The source only exposes its most recent 5,000 candles. Arbitrary historical dates are not guaranteed, and history access does not increase the endpoint's request allowance. - Use the same indicator, chart and feature-signal endpoints as for other supported crypto venues. HMM does not support `1m`. CVD remains an OHLCV-based delta estimate, not trade-by-trade aggressor volume. - The forming candle can change. Read `true/false/null` according to the [feature-signal guide](/signals); insufficient history is not equivalent to a feature being absent. ```bash # Discover subscribed symbols and enabled intervals. curl 'https://api.mobiusquant.ai/api/markets/hyperliquid/perp/symbols' curl 'https://api.mobiusquant.ai/api/intervals?exchange=hyperliquid&market=perp' # Latest 100 BTC perpetual 5m candles. curl 'https://api.mobiusquant.ai/api/klines?exchange=hyperliquid&market=perp&symbol=BTCUSDC&interval=5m&limit=100' # MACD, RSI and CVD with native features. Use /api/chart for a chart response. curl -X POST 'https://api.mobiusquant.ai/api/indicators' \ -H 'content-type: application/json' \ -d '{"exchange":"hyperliquid","market":"perp","symbol":"BTCUSDC","interval":"5m","limit":100,"signals":true,"calc":[{"name":"macd"},{"name":"rsi"},{"name":"cvd"}]}' ``` ## Gold spot {#gold-spot} Use `exchange=commodity`, `market=spot`, `symbol=XAUUSD`. This is distinct from gold futures (`commodity:futures / XAUF`). Do not send `XAU/USD`, `GC=F`, or use `forex:spot` for gold spot. - Supported intervals: **`5m`, `15m`, `30m`, `1h`, `4h`, `1d`**. The minimum is **5m**; gold spot `1m` requests return **400**, including Kline, indicator, chart and playbook requests. - Quotes update every **5 minutes**, not tick-by-tick. A current candle can still change before it closes. - Each supported interval returns up to **1000 bars**. Query `/api/intervals?exchange=commodity&market=spot` for the venue-specific limits; the unfiltered endpoint describes crypto. - Reuse `/api/klines`, `/api/indicators` and `/api/chart`. EMA, RSI, MACD and other price-based indicators are supported. A custom price-only playbook can use `/api/analyze`. - Prices are indicative mid-prices, not executable broker quotes. No actual trading volume is available: the two volume fields are `0` placeholders, with `data_meta.volume_type="unavailable"`. Volume-dependent indicators such as CVD, VWAP and OBV return **400**; the existing CVD-based `market-pulse` playbook is not suitable for gold spot. - Inspect `data_meta.ready`, `stale`, `last_sync_ms`, `data_as_of_ms` and `last_bar_complete`. Data not ready returns **503**. Data older than 15 minutes is marked stale; latest-data queries are refused after 1 hour. Bounded historical queries can still return available history. - OHLCV timestamps are Unix **milliseconds**; chart `time` is in **seconds**. Daily candles open at 07:00 Australia/Sydney; 4h boundaries follow that local session clock, including daylight-saving changes. ```bash # Check health before requesting data. curl 'https://api.mobiusquant.ai/api/health' # Latest 100 gold spot 5m candles. curl 'https://api.mobiusquant.ai/api/klines?exchange=commodity&market=spot&symbol=XAUUSD&interval=5m&limit=100' # EMA and RSI on gold spot 5m candles. curl -X POST 'https://api.mobiusquant.ai/api/indicators?explain=false' \ -H 'content-type: application/json' \ -d '{"exchange":"commodity","market":"spot","symbol":"XAUUSD","interval":"5m","limit":100,"calc":[{"name":"ema","params":{"period":20}},{"name":"rsi","params":{"period":14}}]}' ``` ## Natural-name lookup The engine ships with a built-in natural-language → canonical mapping. Users say "Bitcoin" or "Tencent" — the engine resolves to `BTCUSDT` or `00700`: ```bash curl -H "Authorization: Bearer mq_xxx" \ "https://api.mobiusquant.ai/api/symbols/search?q=bitcoin" # → [{ "canonical": "BTCUSDT", "exchange": "binance", "market": "perp", ... }] ``` The search endpoint also has a smartbox fallback — it can discover ANY A-share, HK, or US stock beyond the curated list. When gold spot is enabled, "黄金" resolves to `commodity:spot / XAUUSD`; gold futures remain `commodity:futures / XAUF`. Full mapping: `GET /api/symbols/builtin`. ## Symbol lists per venue For symbol examples including Chinese company names, see the [Chinese reference](/zh/markets). Confirm current availability with `/api/markets/{exchange}/{market}/symbols`. ## Companion endpoints | Method | Path | Purpose | | --- | --- | --- | | GET | `/api/markets` | All venues + WS health | | GET | `/api/markets/{exchange}/{market}/symbols` | Symbols on one venue | | GET | `/api/intervals` | Supported intervals and maximum returned bars | | GET | `/api/klines` | Raw OHLCV | | GET | `/api/symbols/builtin` | Natural-name → canonical mapping table | | GET | `/api/symbols/search?q=` | Fuzzy natural-language search (with smartbox fallback) | | GET | `/api/health` | Per-venue status (`ok` / `degraded` / `dead` / `starting`) | | GET | `/api/derivatives/funding-rates` | Funding rate history (Binance / Bybit / OKX) | | GET | `/api/derivatives/open-interest` | Open interest history (Binance) | | GET | `/api/derivatives/long-short-ratio` | Top trader long/short ratio (Binance) | | GET | `/api/derivatives/taker-ratio` | Taker buy/sell ratio (Binance) | | GET | `/api/sentiment/fear-greed` | Crypto Fear & Greed Index | Full field-level reference: [API Documentation](https://api.mobiusquant.ai/docs). See also [Derivatives & Sentiment](/derivatives) for detailed endpoint documentation. --- # Feature Definition Query `GET /api/indicators/signals` returns feature definitions grouped by indicator: available features, judgment rules, meanings and validity requirements. It does not return current observations for a symbol or trading recommendations. Base URL: `https://api.mobiusquant.ai`. The usual [optional Bearer token and API rate limits](/token) apply. An administrator account is not required. ## Requests ```bash # All indicators, including those without independent features and their reasons curl 'https://api.mobiusquant.ai/api/indicators/signals' # All MACD features curl 'https://api.mobiusquant.ai/api/indicators/signals?indicator=macd' # MACD events, excluding ongoing states curl 'https://api.mobiusquant.ai/api/indicators/signals?indicator=macd&kind=event' # One feature definition curl 'https://api.mobiusquant.ai/api/indicators/signals?id=macd.cross_up' ``` | Parameter | Type | Required | Meaning | | --- | --- | --- | --- | | `indicator` | string | No | Exact indicator name, as in `calc[].name`, e.g. `macd`; omit for all indicators | | `kind` | `event` / `state` | No | Filter by events or states; omit for both | | `id` | string | No | Full feature ID, e.g. `macd.cross_up` | Names and IDs are case-sensitive, with no fuzzy matching. Filters combine with **AND**. When both `indicator` and `id` are supplied, the ID must belong to that indicator. - Without `kind` or `id`, indicators without features remain present with a reason and `signals: []`. - With `kind` or `id`, only groups containing matching features are returned. - A valid query with no matches returns `200` with `{"count":0,"signal_count":0,"indicators":{}}`, for example `indicator=cvd&kind=state`. - An empty string is not an omitted parameter; empty values return `422`. ## Response For `?id=macd.cross_up`: ```json { "count": 1, "signal_count": 1, "indicators": { "macd": { "has_signals": true, "signal_status": "supported", "signal_reason": "", "signals": [ { "id": "macd.cross_up", "label": "MACD 金叉", "kind": "event", "description": "前根 MACD <= Signal,本根 MACD > Signal。", "meaning": "MACD 相对信号线或零轴的动量关系;事件只在交叉根出现,状态可持续,不是买卖指令。", "required_history": "max(fast, slow) + signal 根连续有效输入", "version": 1, "details": [], "supports_forming": true } ] } } } ``` ### Group fields | Field | Meaning | | --- | --- | | `count` | Number of indicator groups returned after filtering | | `signal_count` | Number of feature definitions returned after filtering | | `indicators` | Object keyed by indicator name; read by key, not position | | `has_signals` | Whether the indicator provides feature output, not whether current data is ready | | `signal_status` | `supported`: features available; `none`: no independent features; `unreviewed`: no feature decision yet | | `signal_reason` | Reason for no feature output; empty string for supported indicators | | `signals` | Matching definitions, not calculated values; empty array when no features exist | Do not equate `none` with `unreviewed`, or interpret an empty type-filtered result as evidence that an indicator has no features of any kind. ### Feature fields | Field | Type | Meaning | | --- | --- | --- | | `id` | string | Stable feature ID; matches calculated column names and chart marker `signal_ids` | | `label` | string | Display name | | `kind` | string | `event`: occurs on one bar; `state`: evaluated per bar and may persist | | `description` | string | Judgment rule using the actual calculation request's parameters | | `meaning` | string | Interpretation of the feature | | `required_history` | string | History and validity requirements; may contain parameter formulas, not a fixed integer | | `version` | integer | Version of this feature definition | | `details` | string[] | Additional boundaries or confirmation requirements; empty when none | | `supports_forming` | boolean | Supports `include_forming: true` final-sample trials; not a data-readiness guarantee | Names and explanatory text are currently Chinese; IDs and enums are language-independent. Get calculation parameters, defaults and indicator interval constraints from [`GET /api/indicators/registry`](https://api.mobiusquant.ai/api/indicators/registry). `GET /api/indicators/registry?include_signals=true` remains available for compact definitions. ## Using definitions with calculation and charts 1. Query this endpoint to select features by `indicator` and `id`. 2. Send a calculation request to `/api/indicators` or `/api/indicators/compute` with top-level `"signals": true`. 3. Locate the definition's `id` in `indicators[response_key].signals.columns` and read that column in `data`. For charts, send `"signals": true` to `/api/chart`. Feature tables are in `indicator_signals[response_key]`. Event markers expose `signal_ids` that join to this directory for names, rules and meanings. States do not generate per-bar event markers. When using multiple parameter sets for the same indicator, identify instances by response key / `indicator_key`; feature IDs do not change with parameters. The directory's query parameter `id` is a feature ID, not the caller-defined calculation `calc[].id`. Definition availability does not imply that data can be evaluated: | Calculated value | Meaning | | --- | --- | | `true` | Event occurred or state holds on a closed candle | | `false` | Valid evaluation, but event did not occur or state does not hold | | `null` | Unknown: forming candle, insufficient history, invalid dependencies or input gaps | Live features support the connected Binance, Bybit, OKX and Hyperliquid feeds, including [Binance stock perpetuals](/markets#binance-stock-perp), but not stock spot venues. BYO requires an explicit `interval` and continuous, fixed-duration candles, subject to each selected indicator's constraints. Set `last_bar_closed: false` for a forming last candle. After an interval gap or invalid OHLCV, subsequent features in that input are `null`. Feature `open_time` and `confirmed_at_ms` use milliseconds; chart marker `time` uses seconds. A confirmation time does not imply that an event occurred. Indicators without feature capability return the entire `signals: null` in calculation results, unlike the directory's `signals: []`. See [native feature calculation](/compute#native-features) and [feature charting](/compute#feature-chart) for examples. ## Forming-candle trials {#forming} Set top-level `signals: true` and `include_forming: true` on `/api/indicators`, `/api/indicators/compute` or `/api/chart`. `include_forming` defaults to `false` and accepts only a JSON boolean. Using it without `signals: true` returns `422`. ```bash curl -X POST 'https://api.mobiusquant.ai/api/indicators?explain=false' \ -H 'Content-Type: application/json' \ -d '{"exchange":"binance","market":"perp","symbol":"BTCUSDT","interval":"5m","limit":2,"signals":true,"include_forming":true,"calc":[{"name":"macd","id":"m"}]}' ``` The engine treats the **current actual OHLCV of the final forming candle as a complete sample** for this calculation. It does not predict the final close or invent future candles. History, continuity, native thresholds, structural windows and model confirmation requirements are unchanged. Crossings compare adjacent candles, not consecutive requests. Repeating a request does not increase confirmation counts or deduplicate features. There is one result: `indicators[key].signals` for calculation and `indicator_signals[key]` for charting. The table appends `bar_status` after the existing feature columns; always read columns by name: | bar_status | Meaning | confirmed_at_ms | | --- | --- | --- | | `closed` | Closed-bar calculation | Existing interval-based close timestamp | | `forming` | Current snapshot trial of the final forming bar | Always `null` | `true` means the condition currently holds and can support an intrabar warning; `false` means it does not hold; `null` still means dependencies are insufficient or invalid. **A trial may disappear on the next update or at close. It is not a confirmed event.** Values, features, reasons and native objects come from the same calculation. For example, `confirmed` in a CVD feature ID is not proof of closure: read `bar_status` and the object's `status`. Trial CVD results use `objects.schema_version=2`, with `status=forming` and `confirmed_at_ms=null` for provisional divergences. BYO callers must still supply `last_bar_closed: false` and `interval`. Historical intrabar snapshots are allowed; all preceding bars must be closed. Fully closed input returns only `closed` rows. Live latest requests without the current forming candle return `503` with `Retry-After`. Explicit historical windows never relabel a previous candle as forming. The option does not provide intrabar snapshot replay or an additional source-finality guarantee; `calculation.as_of_ms` is not the upstream observation time. Chart event markers carry the same `bar_status`, with null confirmation times for trials; no new color rules or special drawing primitives are added. Existing `include` options still work. Trial `calculation` metadata adds `include_forming=true` and `signal_evaluation_version=1`. Data-free definitions expose `limits.live_features.supports_forming`, consistent with the feature directory. Unsupported forming features are null, with `forming_not_supported` when reasons are requested. Indicators without native features still return `signals: null`. Omitting or disabling `include_forming` preserves the original numeric/object/feature/chart behavior and omits the `bar_status` column. Alert storage, intrabar-to-close correlation, notifications, deduplication and cooldown remain consumer responsibilities. ## Optional calculation information {#single-calculation} Calculation and chart requests accept an optional top-level `include` array: ```json { "exchange": "binance", "market": "perp", "symbol": "BTCUSDT", "interval": "5m", "limit": 100, "calc": [{"name": "macd"}, {"name": "cvd"}, {"name": "hmm_regime"}], "signals": true, "include": ["signal_reasons", "signal_details", "calculation", "definition"] } ``` Use this body with `/api/indicators?explain=false` or `/api/chart`. BYO accepts the same options. Omitting `include`, or passing `[]`, preserves the existing response. Unknown or duplicate options return `422`. `signal_reasons` and `signal_details` require `signals: true`; `calculation` and `definition` work independently. Indicators without features still return `signals: null`. | Option | Calculation response | Chart response | | --- | --- | --- | | `signal_reasons` | `indicators[key].signals.invalid_reasons` | `indicator_signals[key].invalid_reasons` | | `signal_details` | `indicators[key].signals.details` | `indicator_signals[key].details` | | `calculation` | `indicators[key].calculation` | `indicator_calculations[key]` | | `definition` | `indicators[key].definition` | `indicator_definitions[key]` | ### Reasons for unknown features `invalid_reasons` uses `{columns, data}`. The first column is `open_time` in milliseconds; the remaining columns are feature IDs. Only rows containing at least one unknown feature are included. Unknown cells contain arrays of reason codes; valid cells contain `null`, meaning no invalidity reason. Read the actual three-state result from `signals.data`, not from this explanation table. When all features are valid, the explanation table has an empty `data` array. | Code | Meaning | | --- | --- | | `bar_not_closed` | A required bar has not closed | | `insufficient_history` | More history or a previous valid observation is required | | `input_gap` | A gap in this calculation's input affects the observation | | `invalid_input` | Invalid OHLCV in this input affects the observation | | `invalid_dependency` | Required values, volume conditions or native objects are unavailable | | `state_unavailable` | No required valid direction or state exists | | `not_applicable` | A native prerequisite is not met, such as testing support restoration across different HMM directions | Reasons are per feature and per bar. Multiple reasons may apply, including problems with the previous bar for crossing events. Existing booleans and nulls do not change. BYO NaN/inf inputs are still rejected; enabling explanations does not relax input validation. ### Native value and object links `details.bindings` is keyed by feature ID: - `values[]`: a `field` and `offset` (`0` for the feature bar, `-1` for the previous input bar). - `objects`: `collection`, `match`, `id_field`, `fields` and response `container`. Charts also supply the actual `object_key`; do not assume it equals the indicator name. - `context`: `{columns, data}`, supplying only necessary native value rows not otherwise available in this response. Timestamps remain milliseconds. Explicit bindings currently cover MACD, RSI, CVD and HMM. Other indicators return empty bindings and context when no property links are declared; this does not change their feature support. CVD matches the same instance's `objects.divergences` by `confirmation_bar_time_ms = feature open_time` and direction. Read the existing object ID, strength, endpoints and confirmation time. Charts use `indicator_objects[object_key].divergences`. Strength is not duplicated. An object ID is a result link, not a notification deduplication guarantee. HMM transitions link previous/current `hmm_state` or `hmm_context_state`; support events also link `hmm_supported`. Raw responses reuse returned rows and add a clipped previous row to `context` when needed. Charts lack a complete numeric table, so context supplies fields needed for true events/states. These values come from the same calculation, not a second request. ### Calculation metadata Each indicator instance returns: - `algorithm_version`: indicator algorithm version, not deployment version. - `effective_params`: supplied parameters plus applied defaults. - `resolved`: effective automatic choices, such as HMM normalization `d1` or `legacy`. - `signal_versions`: feature ID to definition version; empty for indicators without features. - `input` and `output`: actual calculation history and returned window, each with `start_open_time_ms`, `end_open_time_ms` and `bars`. Endpoints are bar open times in milliseconds; empty ranges have null endpoints and zero bars. - `interval_ms`, `as_of_ms`, `last_bar_closed`: input duration, live evaluation cutoff and input last-bar closure. BYO normally has a null cutoff and uses the caller's closure assertion. An input range does not guarantee continuity, sufficient warmup or immutable market data. Parameters, versions and ranges alone cannot guarantee reproducibility after historical revisions. Version storage, change detection and migration belong to the consumer. ## Structured indicator definitions {#indicator-definition} ```http GET /api/indicators/registry?include_schema=true ``` Each indicator gains a `definition` with parameters, output fields, restrictions, algorithm/feature versions, effective defaults, resolved choices and native value bindings. No candles are read. For parameter-dependent fields, use: ```http POST /api/indicators/registry/resolve Content-Type: application/json ``` ```json { "interval": "4h", "calc": [ {"name": "ema", "params": {"period": 50}, "id": "ema50"}, {"name": "hmm_regime", "id": "hmm"} ] } ``` The response is `{count, indicators}`, keyed by calculation instance keys. EMA resolves to `ema_50`; HMM resolves to Legacy normalization. No candles are required. `interval` is optional; omitting it leaves interval-dependent choices unresolved. `calc` supports up to 100 entries. - `parameters`: declared type, default, required/nullable flags and explicit `constraints`. `validation=native` preserves original indicator validation. - `parameter_constraints_complete=false`: constraints are not exhaustive. Empty constraints do not mean arbitrary values are accepted. Successful resolution does not guarantee arbitrary candle inputs can be calculated successfully. - `outputs[]`: resolved `name/type/nullable/unit`, optional bounds, descriptions and enum meanings. Do not hard-code default parameter-dependent column names. - Units: `price` follows input prices, `input_volume` follows input volume, `unix_ms` is milliseconds, `category` is an enum, and `model_weight` is not a calibrated probability. - `limits`: intervals, live intervals, asset classes, volume requirements, unsupported venues and live-feature markets. Null interval/asset lists add no indicator-specific restriction; still check actual venue availability through `/api/markets` and `/api/intervals`. - `signal_value_bindings`: data-free native links. Actual chart object keys are in the current response's `signals.details`. These options do not define monitoring rules, polling progress, notifications or trade recommendations. ## Errors | HTTP status | Cause | Action | | --- | --- | --- | | `400` | Unknown indicator/feature ID, or indicator and ID ownership mismatch | Read `detail` and correct the query | | `422` | Invalid `kind`, empty parameter or excessive length | Maximum lengths: 128 for `indicator`, 200 for `id`; use documented enum values | | `401` | Invalid, expired or revoked supplied token | Correct the token; do not silently retry anonymously | | `429` | API rate limit exceeded | Respect `Retry-After`; do not reload definitions for every candle | | `405` | POST, PUT, PATCH or DELETE | Use GET; this endpoint is read-only | Field types and query parameters are also available through [OpenAPI](https://api.mobiusquant.ai/openapi.json). --- # Skill Integration OpenMobius-skill is an optional client for the MobiusQuant API. Direct HTTP API access does not require installing it. ## Install {#advanced-run-the-commands-yourself} Python 3.10+ is required. Run in your client environment: ```bash git clone https://github.com/MobiusQuant/OpenMobius-skill.git cd OpenMobius-skill python install.py ``` You may also ask your AI client to follow the [installation guide](https://github.com/MobiusQuant/OpenMobius-skill/blob/main/README_AGENT.md). See the [client installation documentation](https://github.com/MobiusQuant/OpenMobius-skill/blob/main/INSTALL.md) for requirements and troubleshooting. ## Select a client ```bash python install.py --platform ``` | Client | name | | --- | --- | | Claude Code (default) | `claude-code` | | Codex | `codex` | | OpenClaw | `openclaw` | | Hermes | `hermes` | | Auto-select | `auto` | | All supported clients | `all` | ## Configure a token Anonymous access allows 10 requests per minute per IP; a valid token allows 60 per minute. See the [token guide](/token) to obtain and manage tokens. From the installation directory, replace `` with your token: ```bash .venv/bin/python scripts/kb_klines.py token set ``` Do not share real tokens in public conversations, documentation or repositories. ## Use Example requests in your client: - “Get RSI(14) and MACD for BTC perpetuals on 1h.” - “Get ETH 4h candles and draw a chart.” - “Calculate indicators using this OHLCV data.” Check that the returned market, interval and timestamps match your request. See [markets](/markets) and [indicators](/indicators/) for supported inputs. ## Update and uninstall ```bash python install.py --update python install.py --uninstall ``` See the [client documentation](https://github.com/MobiusQuant/OpenMobius-skill/blob/main/INSTALL.md) for removal options and their effects. ## If a request fails Check [service health](https://api.mobiusquant.ai/api/health), then use the response status: | Status | Action | | --- | --- | | `401` | Check your token | | `400` / `422` | Correct the parameters identified by `detail` | | `429` | Wait for `Retry-After` | | Temporarily unavailable | Retry later without a tight retry loop | For installation issues, consult the [client project](https://github.com/MobiusQuant/OpenMobius-skill). Use the [lookup guide](/lookup-guide) to select API endpoints. --- # API Token `api.mobiusquant.ai` runs in a **tiered rate-limit model**: - **Anonymous** (no `Authorization` header) — **10 req/min per IP**. Useful for quick exploration without registration. - **With Bearer token** — **60 req/min per token**. Recommended for any non-trivial integration. If you send an `Authorization` header but the token is invalid/expired/revoked, the API returns `401` (it does **not** fall back to anonymous — fix the token first). This page covers **how to get a token**, how to use it, and how to handle errors. ## Two acquisition modes | Mode | URL | TTL | Per-user cap | Use when | |---|---|---|---|---| | **Anonymous trial** | [/apply-token](https://www.mobiusquant.ai/zh/apply-token) | **7 days** | unlimited | Evaluation, prototyping, throwaway | | **Permanent (logged-in)** | [/account](https://www.mobiusquant.ai/zh/account) → "API Tokens" | **never expires** | up to **10 active** per account | Production, long-running integrations | Both token types are functionally identical at call time — same endpoints, same 60 req/min rate limit. ::: warning Plaintext is shown ONLY at creation The plaintext `mq_<43 chars>` is shown only when you create the token. **Copy it immediately** to a password manager or private environment configuration. If you lose it, create a new token. ::: ## Anonymous trial (7 days) For evaluating the API without registering an account. 1. Open 2. (Optional) Give the token a recognizable name for your records 3. Pass the Cloudflare Turnstile human-verification check 4. Click "Apply for Token" 5. **Immediately copy** the `mq_xxx` value shown The token expires automatically 7 days after creation. Calls with an expired token return `401 invalid, expired or revoked token`. Need another one? Just apply again — no per-email or per-IP cap. ## Permanent (logged-in) For production. Tokens never expire, and you can see usage statistics per token. 1. Open 2. Sign in (Telegram or email; email accounts can also bind Telegram) 3. Find the "API Tokens" panel, click "New Token" 4. Pick a recognizable name (required, e.g. `production-2026`) 5. Immediately copy the `mq_xxx` value from the modal, click "I have saved it" ### Managing your tokens | Action | How | |---|---| | List all tokens | Account → "API Tokens" panel. Revoked tokens hidden by default; toggle to show. | | View usage history | Click "📊 Usage" on a token row. Last 50 calls + 7-day daily aggregate. | | Revoke a token | Click "🗑 Revoke" on the row. Propagates to the engine within ~60 seconds. | Each account can hold up to **10 active** (not-revoked, not-expired) tokens. Hitting the cap returns: ```http HTTP/1.1 400 Bad Request {"detail": "未吊销 token 已达上限 10,请先吊销旧的"} ``` ## Using the token Add an `Authorization` header to every request: ```bash curl -H "Authorization: Bearer mq_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \ "https://api.mobiusquant.ai/api/markets" ``` ```python import requests TOKEN = "mq_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" resp = requests.get( "https://api.mobiusquant.ai/api/klines", params={"exchange": "binance", "market": "perp", "symbol": "BTCUSDT", "interval": "5m", "limit": 100}, headers={"Authorization": f"Bearer {TOKEN}"}, ) resp.raise_for_status() print(resp.json()) ``` ```javascript const TOKEN = "mq_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; const r = await fetch( "https://api.mobiusquant.ai/api/indicators", { method: "POST", headers: { "Content-Type": "application/json", "Authorization": `Bearer ${TOKEN}`, }, body: JSON.stringify({ exchange: "binance", market: "perp", symbol: "BTCUSDT", interval: "5m", limit: 100, calc: [{ name: "ema", params: { period: 20 } }], }), }, ); const json = await r.json(); ``` ## Rate limit - **Anonymous: 10 req/min per IP**. - **With Bearer token: 60 req/min per token**. - Space out requests. If you receive `429`, wait for the interval in `Retry-After`. - **Exempt paths** (no token, no quota): `/api/health`, `/agents.md`, `/docs`, `/redoc`, `/openapi.json`. When the request limit is exceeded: ```http HTTP/1.1 429 Too Many Requests Retry-After: 7 X-RateLimit-Limit: 30 X-RateLimit-Remaining: 0 {"detail": "rate limit exceeded (60/min); consider batching requests."} ``` **Honor `Retry-After`.** Do not retry in a tight loop. ## Error codes | HTTP | Meaning | What to do | |---|---|---| | `401` | You sent an `Authorization` header but the token is invalid / expired / revoked | Fix the token (no fallback to anonymous tier — must be correct or omitted entirely) | | `429` | Rate-limit exceeded (10/min anonymous or 60/min with token) | Honor `Retry-After`; batch calls; apply a token to upgrade | | `400` | Business-level parameter error | Read the `detail` field. **Do not blindly retry.** | | `422` | Request structure invalid (missing required field, wrong type, unknown field) | Read the validation array, fix the request shape | | `404` | Symbol unavailable or data not ready | Probe `/api/health` first; check `/api/markets/{exchange}/{market}/symbols` | | `502` | Service temporarily unavailable | Retry in 30 seconds | ## Security recommendations - **Never commit tokens** to public repos. Use environment variables or a secret manager. Add `.env` to `.gitignore`. - If you suspect a leak, **revoke immediately** in the Account page and create a new token. - Use **separate tokens per environment** (dev / staging / prod) to limit the blast radius of a leak. - Front-end / browser code should call your own backend, which forwards to MobiusQuant — never put a token in client-side JavaScript. --- # Authentication, limits, and errors ## Bearer token Every `/api/wgo/v1/` request requires: ```http Authorization: Bearer mq_xxx ``` The token must authorize the `wgo:read` scope. A missing token, an invalid, expired, or revoked token, and a token without that scope all return `401`. Apply for or manage a token through the [MobiusQuant token guide](/token). ## Rate limit The WGO default is 60 requests per minute per token. A token-specific limit can be lower, so clients must treat `429` as authoritative and wait for the number of seconds in `Retry-After`. For daily reporting, prefer one overview call per asset, then request historical or per-fund details only when needed. ## Errors | HTTP | Meaning | Client action | | --- | --- | --- | | `401` | Token missing, invalid, expired, revoked, or lacks `wgo:read` | Fix the token; do not retry unchanged | | `422` | Invalid asset, date, range, or limit | Read `detail` and correct the request | | `429` | Token request limit exceeded | Honor `Retry-After` | | `500`–`503` | Service temporarily unavailable | Retry with bounded exponential backoff | An empty valid query returns `200` with an empty `data` array, or an overview with `observations: 0`; it is not a `404`. ## Date-range validation Dates use `YYYY-MM-DD`. If both `start` and `end` are supplied, `start` must not be after `end`. ```json { "detail": "start must not be after end" } ``` ## Security - Store tokens in environment variables or a secret manager. - Use a separate token for each environment. - Never publish a token in documentation, logs, source control, or client-side JavaScript. - Revoke and replace a token immediately if it may have leaked. ## API contract - [Interactive Swagger](https://api.mobiusquant.ai/api/wgo/docs) - [Live OpenAPI](https://api.mobiusquant.ai/api/wgo/openapi.json) - [Downloadable OpenAPI reference](/wgo/openapi.json) --- # Data semantics and freshness ## Two different daily clocks ETF and on-chain dates are not interchangeable: | Dataset | Date field | Calendar | | --- | --- | --- | | ETF | `trade_date` | US ETF trading day | | On-chain | `metric_date` | UTC calendar day | | Realized liquidation | `bucket_start` | UTC hour or UTC day | | Potential liquidation | `snapshot_at` | UTC snapshot time | An ETF response's latest date can remain Friday during a weekend or US market holiday. Always label reports using response dates, not the caller's local date. ## Settlement - `settled` means the ETF observation is eligible for final daily analysis. - `pending` means the observation can still be revised. - `/etf/{symbol}/overview` uses settled observations only. - `/etf/{symbol}/funds` without `trade_date` selects the latest settled date. - `/etf/{symbol}/daily`, and a funds request with an explicit date, can expose pending data. The ETF collector does not request the still-open New York trading day. Later revisions can nevertheless change a previously collected record. ## On-chain completion state `source_eod_completed_at` is the end-of-day completion time when known. `has_flash_data=true` means at least one daily metric is provisional. Use `synced_at` only as the time the current revision became available through the API; it is not the metric's business date. ## Long-term-capital proxy WGO calculates: ```text latest cumulative net inflow - oldest cumulative net inflow in the window ``` The result is classified as `increased`, `decreased`, or `flat`. This proxy is useful for judging whether net subscribed capital has accumulated over a period. It does **not** identify investor identity or holding duration. In particular: - Market makers also participate in ETF creations and redemptions. - One investor can sell while another buys without changing aggregate shares. - `total_net_assets_change` includes BTC/ETH price changes and cannot independently measure new capital. - Per-fund daily flow does not prove that capital moved directly from one ETF to another. ## Numerical representation Counts are JSON integers. Decimal amounts and ratios are returned as JSON strings to avoid floating-point precision loss. Parse them with a decimal library for financial calculation; do not convert large amounts directly to binary floating point. Null means that no usable value is available for that field and date. It must not be silently converted to zero. ## Liquidation scope Realized liquidation amounts describe completed events. Potential liquidation buckets are estimates from publicly visible positions without account-value or per-position notional filters. They must not be treated as a market-wide order book. The `coverage` object is part of the meaning of every snapshot. ## Data freshness ETF and on-chain data is daily; realized liquidation history is refreshed hourly. Potential liquidation data is returned as dated snapshots. This is a reporting service, not an execution feed. Consumers should determine freshness from `trade_date` or `metric_date`, `settlement_status`, `has_flash_data`, `bucket_start`, or `snapshot_at` instead of assuming a fixed arrival time. WGO data is not a trade recommendation. --- # Liquidation endpoints ## Realized liquidations ```text GET /api/wgo/v1/derivatives/{asset}/liquidations ``` Returns already-realized long and short liquidations, newest bucket first. | Parameter | Required | Values | Default | | --- | --- | --- | --- | | `asset` | yes | `BTC`, `ETH` | — | | `interval` | no | `1h`, `1d` | `1h` | | `limit` | no | `1`–`2000` | `168` | ```bash curl -H "Authorization: Bearer $MOBIUSQUANT_TOKEN" \ "https://api.mobiusquant.ai/api/wgo/v1/derivatives/BTC/liquidations?interval=1h&limit=24" ``` ```json { "asset": "BTC", "interval": "1h", "count": 1, "data": [ { "asset": "BTC", "interval": "1h", "bucket_start": "2026-08-23T16:00:00+00:00", "long_liquidation_usd": "120000.25", "short_liquidation_usd": "80000.50", "total_liquidation_usd": "200000.75" } ] } ``` `bucket_start` is UTC. Amount fields are decimal strings denominated in USD. ## Potential liquidation zones ```text GET /api/wgo/v1/derivatives/{asset}/liquidation-map ``` Returns the latest estimate derived from a sampled set of publicly visible positions. It takes no query parameters. ```json { "asset": "BTC", "snapshot": { "asset": "BTC", "snapshot_at": "2026-08-23T16:00:00+00:00", "mark_price": "117000", "open_interest_native": "12345.67", "coverage": { "account_value_threshold_usd": "0", "position_notional_threshold_usd": "0", "bucket_width_bps": 25, "max_distance_bps": 5000, "leaderboard_accounts": 43525, "selected_accounts": 2500, "scanned_accounts": 2489, "failed_accounts": 11, "positions_seen": 742, "positions_included": 86 }, "long_notional_usd": "154665100", "short_notional_usd": "73527648", "buckets": [ { "side": "long", "price_low": "108225", "price_high": "108517.5", "liquidation_notional_usd": "42000000", "position_count": 3, "distance_bps": "737.18" } ] } } ``` `distance_bps` is the absolute distance from the snapshot mark price. A `long` bucket is below the mark price and a `short` bucket is above it. When no snapshot exists, `snapshot` is `null`. ::: warning Sample estimate, not a full-market map The response covers valid positions found in the current scan population. Fixed account-value and per-position notional filters are disabled; the zero values in `coverage` document that behavior. It is not a complete liquidation order book or a guaranteed liquidation price. Position changes, added collateral, and market moves can change the result. Always report the `coverage` object together with any conclusion. ::: --- # ETF endpoints WGO exposes US spot ETF data at aggregate and fund-ticker granularity. All monetary fields are currently denominated in US dollars unless a field explicitly states otherwise. Decimal values are JSON strings to preserve precision. ## ETF overview ```http GET /api/wgo/v1/etf/{symbol}/overview ``` Use this endpoint for a daily report. It considers only settled ETF observations. | Parameter | Type | Default | Constraint | | --- | --- | --- | --- | | `symbol` | path string | — | `BTC` or `ETH` | | `window` | query integer | `30` | 2–365 latest settled observations | ```bash curl --fail --silent --show-error \ -H "Authorization: Bearer ${MOBIUSQUANT_TOKEN}" \ "https://api.mobiusquant.ai/api/wgo/v1/etf/ETH/overview?window=30" ``` ### Overview fields | Field | Meaning | | --- | --- | | `as_of` | Latest settled US ETF trading date, or `null` when no data exists | | `window_requested` | Requested maximum number of observations | | `observations` | Settled observations actually available | | `latest.net_inflow` | Aggregate net flow on `as_of` | | `latest.direction` | `inflow`, `outflow`, or `flat` | | `flow_streak.direction` | Direction of the latest observation | | `flow_streak.days` | Consecutive observations with that direction; zero when latest is flat | | `period.net_inflow` | Sum of daily net flows across returned observations | | `period.inflow_days` | Number of positive-flow observations | | `period.outflow_days` | Number of negative-flow observations | | `period.flat_days` | Number of zero-flow observations | | `long_term_capital_proxy.direction` | `increased`, `decreased`, or `flat` | | `long_term_capital_proxy.cumulative_net_inflow_change` | Latest cumulative flow minus oldest cumulative flow in the window | | `long_term_capital_proxy.total_net_assets_change` | AUM change over the same observations; includes price effects | If there is no settled data, `latest`, `period`, and `long_term_capital_proxy` are `null`, while `flow_streak.direction` is `none`. ## Daily aggregate history ```http GET /api/wgo/v1/etf/{symbol}/daily ``` | Parameter | Type | Default | Constraint | | --- | --- | --- | --- | | `symbol` | path string | — | `BTC` or `ETH` | | `start` | query date | omitted | Inclusive `YYYY-MM-DD` | | `end` | query date | omitted | Inclusive `YYYY-MM-DD` | | `limit` | query integer | `90` | 1–1000 | Rows are ordered by `trade_date` descending. This endpoint may contain a `pending` row; filter on `settlement_status` when a report requires final data. ```json { "symbol": "BTC", "count": 1, "data": [ { "country_code": "US", "symbol": "BTC", "trade_date": "2026-08-21", "total_net_inflow": "307453306.12", "total_value_traded": "6371116431", "total_net_assets": "96069419933.81248", "cum_net_inflow": "53706123160.808", "settlement_status": "settled", "synced_at": "2026-08-23T14:46:53.392330+00:00" } ] } ``` ## Per-fund breakdown ```http GET /api/wgo/v1/etf/{symbol}/funds ``` | Parameter | Type | Default | Constraint | | --- | --- | --- | --- | | `symbol` | path string | — | `BTC` or `ETH` | | `trade_date` | query date | latest settled date | `YYYY-MM-DD` | Rows are sorted by `net_inflow` descending, with missing values last. Supplying an explicit date can return pending records; omitting it selects the latest date with settled per-fund data. ```json { "symbol": "BTC", "trade_date": "2026-08-21", "count": 1, "data": [ { "country_code": "US", "symbol": "BTC", "ticker": "IBIT", "name": "iShares Bitcoin Trust", "exchange": "NASDAQ", "trade_date": "2026-08-21", "net_inflow": "239278720", "cum_inflow": "62426677463.659996", "net_assets": "59014515840", "currency_share": "43.664", "prem_dsc": "0.0003664345914253797", "value_traded": "5206871551", "settlement_status": "settled", "synced_at": "2026-08-23T14:47:00.581971+00:00" } ] } ``` `prem_dsc` is a ratio: `0.001` means approximately `0.1%`. `currency_share` is a fund-share value; it is not a US-dollar flow field. ## Analytical boundary Per-fund records can show which listed ETF received or lost capital on a trading day. They cannot reveal intraday transfers, individual orders, beneficial owners, or whether the same investor moved capital between two funds. --- # WGO Data API WGO provides daily BTC and ETH data for two focused questions: 1. Is ETF capital flowing in or out now, and has that direction persisted? 2. Is the cumulative long-term-capital proxy increasing or decreasing? It also exposes daily on-chain fundamentals, realized liquidation history, and a sampled estimate of potential liquidation zones. The API is designed for reports and historical comparison, not order execution. ## Coverage | Dataset | Assets | Granularity | | --- | --- | --- | | US spot ETF aggregate | BTC, ETH | Asset × US trading day | | US spot ETF funds | BTC, ETH | Fund ticker × US trading day | | On-chain fundamentals | BTC, ETH | Asset × UTC day | | Realized liquidations | BTC, ETH | Asset × UTC hour or day | | Potential liquidation zones | BTC, ETH | Latest sampled position snapshot | ETF data is not tick-level data. The finest available ETF flow record is one fund ticker for one trading day. ## API base ```text https://api.mobiusquant.ai/api/wgo/v1 ``` All `/v1/` endpoints require a MobiusQuant Bearer token authorized for `wgo:read`. ## Endpoints | Method and path | Purpose | | --- | --- | | `GET /etf/{symbol}/overview` | Latest direction, streak, period flow, and long-term-capital proxy | | `GET /etf/{symbol}/daily` | Historical daily aggregate ETF flow | | `GET /etf/{symbol}/funds` | Per-fund breakdown for one trading day | | `GET /assets/{asset}/onchain` | Historical daily on-chain fundamentals | | `GET /derivatives/{asset}/liquidations` | Realized long/short liquidation history | | `GET /derivatives/{asset}/liquidation-map` | Latest sampled potential liquidation zones | `symbol` and `asset` currently accept only `BTC` or `ETH`. ## Documentation - [Quick start](/wgo/quickstart) - [ETF endpoints](/wgo/etf) - [On-chain endpoint](/wgo/onchain) - [Liquidation endpoints](/wgo/derivatives) - [Data semantics and freshness](/wgo/data-semantics) - [Authentication, limits, and errors](/wgo/authentication) - [Interactive Swagger](https://api.mobiusquant.ai/api/wgo/docs) - [Documentation snapshot of OpenAPI](/wgo/openapi.json) - [Product `llms.txt`](/wgo/llms.txt) ::: warning Research data, not execution data Do not treat the service as an execution feed, order-flow feed, identification of actual investor types, or a complete market-wide liquidation order book. ::: --- # On-chain endpoint ```http GET /api/wgo/v1/assets/{asset}/onchain ``` The endpoint returns daily network activity, supply, fees, and exchange-flow metrics for BTC or ETH. | Parameter | Type | Default | Constraint | | --- | --- | --- | --- | | `asset` | path string | — | `BTC` or `ETH` | | `start` | query date | omitted | Inclusive `YYYY-MM-DD` | | `end` | query date | omitted | Inclusive `YYYY-MM-DD` | | `limit` | query integer | `365` | 1–5000 | Rows are ordered by `metric_date` descending. ```bash curl --fail --silent --show-error \ -H "Authorization: Bearer ${MOBIUSQUANT_TOKEN}" \ "https://api.mobiusquant.ai/api/wgo/v1/assets/BTC/onchain?limit=30" ``` ## Response ```json { "asset": "BTC", "count": 1, "data": [ { "asset": "BTC", "metric_date": "2026-08-22", "active_address_count": 634723, "address_with_balance_count": 56745653, "block_count": 148, "transaction_count": 709046, "transfer_count": 1037706, "fees_native": "3.0372742", "exchange_inflow_native": "19439.57718069", "exchange_outflow_native": "16684.13543387", "exchange_netflow_native": "2755.44174682", "exchange_supply_native": "2714042.92514466", "circulating_supply_native": "20073782.38473258", "issuance_native": "462.5", "hash_rate": "937551968.6517191285701026202708717412007967968", "source_eod_completed_at": "2026-08-23T02:57:28+00:00", "has_flash_data": true, "synced_at": "2026-08-23T14:45:10.215968+00:00" } ] } ``` The values above illustrate the response shape. ## Field groups | Group | Fields | | --- | --- | | Network activity | `active_address_count`, `address_with_balance_count`, `block_count`, `transaction_count`, `transfer_count` | | Native-asset economics | `fees_native`, `issuance_native`, `circulating_supply_native` | | Exchange balance flow | `exchange_inflow_native`, `exchange_outflow_native`, `exchange_netflow_native`, `exchange_supply_native` | | Network security | `hash_rate` when applicable to the asset | | Data state | `source_eod_completed_at`, `has_flash_data`, `synced_at` | Fields ending in `_native` use the base asset, such as BTC or ETH, not US dollars. Metrics unavailable for a network or date are returned as `null`. ::: warning Provisional observations When `has_flash_data` is `true`, at least one daily metric is provisional. Store the date as revisable and allow a later response to replace it. ::: --- # Quick start ## 1. Configure a token Create a MobiusQuant token and keep it in an environment variable: ```bash export MOBIUSQUANT_TOKEN='mq_xxx' ``` Never place a real token in source code or browser JavaScript. ## 2. Read the ETF overview The overview is the shortest path to the latest flow direction, its current streak, and the long-term-capital proxy: ```bash curl --fail --silent --show-error \ -H "Authorization: Bearer ${MOBIUSQUANT_TOKEN}" \ "https://api.mobiusquant.ai/api/wgo/v1/etf/BTC/overview?window=30" ``` Key fields: ```json { "symbol": "BTC", "as_of": "2026-08-21", "observations": 30, "latest": { "net_inflow": "307453306.12", "direction": "inflow", "settlement_status": "settled" }, "flow_streak": { "direction": "inflow", "days": 3 }, "period": { "net_inflow": "1430936317.58", "inflow_days": 18, "outflow_days": 12, "flat_days": 0 }, "long_term_capital_proxy": { "basis": "change_in_cumulative_net_inflow", "direction": "increased", "cumulative_net_inflow_change": "913743812.30", "from": "2026-07-13", "to": "2026-08-21" } } ``` The values above illustrate the response shape. Always use `as_of` from the live response rather than assuming it represents the current calendar date. ## 3. Interpret the result - `latest.direction` answers whether the latest settled ETF day was an inflow or outflow. - `flow_streak` answers whether that direction has persisted over consecutive ETF observations. - `period` describes the requested rolling window. - `long_term_capital_proxy.direction` answers whether cumulative net inflow rose or fell across the window. The proxy measures capital-flow persistence. It does not identify a holder, market maker, institution, or individual investor. ## 4. Drill down only when needed Fetch the daily series: ```bash curl --fail --silent --show-error \ -H "Authorization: Bearer ${MOBIUSQUANT_TOKEN}" \ "https://api.mobiusquant.ai/api/wgo/v1/etf/BTC/daily?limit=30" ``` Fetch the latest settled per-fund breakdown: ```bash curl --fail --silent --show-error \ -H "Authorization: Bearer ${MOBIUSQUANT_TOKEN}" \ "https://api.mobiusquant.ai/api/wgo/v1/etf/BTC/funds" ``` Replace `BTC` with `ETH` for Ethereum ETF data. --- # Gendangzou capability index --- - system.bootstrap: GET /api/gendangzou/bootstrap — Skill 的固定入口;无需鉴权即可判断认证模式并定位能力目录。 --- - system.capabilities: GET /api/gendangzou/capabilities — 按业务域或受控意图查询精简能力索引,再按能力 ID 获取详情。 --- - material.policy.list: GET /api/gendangzou/policy-materials — 查询指定自然日已完成分析的政府和监管机构材料。 --- - material.media.list: GET /api/gendangzou/media-materials — 查询指定自然日已完成分析的国家级通讯社和高置信媒体材料。 --- - sector.list: GET /api/gendangzou/sectors — 按层级、父级、状态或名称查询自有 A 股板块目录。 --- - sector.detail: GET /api/gendangzou/sectors/{sector_id} — 读取板块定义、边界、层级、生命周期和当前三类信号。 --- - sector.graph: GET /api/gendangzou/sectors/{sector_id}/graph — 返回选中板块的一跳层级、产业、演化和市场关联。 --- - sector.heat_series: GET /api/gendangzou/sectors/{sector_id}/heat-series — 按政策、市场关注或资金确认维度查询板块历史轨迹。 --- - signal.realtime.overview: GET /api/gendangzou/realtime — 按独立滚动时间窗口查询政策、权威媒体和即时市场关注事件流,同时返回板块聚合与可溯源材料;日报快照不会重置该窗口。 --- - signal.realtime.sectors: GET /api/gendangzou/realtime/sectors — 按1小时、6小时、24小时或3天滚动窗口分别聚合政策、权威媒体和即时市场关注强度,并与前一个等长窗口比较。 --- - signal.realtime.events: GET /api/gendangzou/realtime/events — 按游标持续读取已完成分析的政策、权威媒体和即时财经材料,支持按板块、信源类型和滚动窗口过滤。 --- - signal.heat.rank: GET /api/gendangzou/sector-heat — 分别查询政策热度、市场关注度或资金确认度,不合并三类口径。 --- - signal.dynamics.list: GET /api/gendangzou/sector-dynamics — 返回板块级横截面异动、内部确认和同日产业关联。 --- - signal.trading_contributors.list: GET /api/gendangzou/sectors/{sector_id}/trading-contributors — 查询用于板块资金确认计算的映射公司和聚合权重。 --- - security.lifecycle.list: GET /api/gendangzou/securities — 按北京时间日期查询待上市、近期上市及退出证券,并返回板块关联和权威来源。 --- - security.lifecycle.changes: GET /api/gendangzou/securities/changes — 查询待上市、正式上市、终止上市和退市的权威状态变化。 --- - company.search: GET /api/gendangzou/companies — 搜索或分页浏览沪深北A股公司,返回证券生命周期、当前板块关系及已发布研究档案摘要。 --- - company.by_sector.list: GET /api/gendangzou/sectors/{sector_id}/companies — 按关系类型、状态和最低关系分查询板块公司映射。 --- - company.research.by_sector.list: GET /api/gendangzou/sectors/{sector_id}/company-research — 公司范围来自所选板块快照;研究覆盖读取各公司的最新可查询研究档案,不随日报日期回退。 --- - company.research.detail: GET /api/gendangzou/companies/{stock_code}/research — 默认读取公司的最新已发布研究版本及五类事实覆盖;研究版本独立于日报快照。 --- - company.research.versions.list: GET /api/gendangzou/companies/{stock_code}/research/versions — 按公司列出已发布研究版本及事实、关系、材料和缺口的变化摘要。 --- - company.state_capital.detail: GET /api/gendangzou/companies/{stock_code}/state-capital — 返回公司当前或指定日期有效的上游持股、控制路径、国资性质及最终控制主体;研究版本与日报快照相互独立。 --- - company.state_capital.events.list: GET /api/gendangzou/companies/{stock_code}/state-capital/events — 列出国资进入、增持、减持、退出及控制关系变化,并区分拟议、批准、完成和终止。 --- - company.research.facts.list: GET /api/gendangzou/companies/{stock_code}/research/facts — 按研究分类或事实域分页读取结构化公司事实,保留日期与置信度。 --- - company.sectors.list: GET /api/gendangzou/companies/{stock_code}/sectors — 按股票代码查询最新有效版本中的多对多板块关系。 --- - company.detail: GET /api/gendangzou/companies/{stock_code} — 返回公司市场标识及其当前有效、观察中和候选板块关系。 --- - etf.list: GET /api/gendangzou/etfs — 按代码、名称、交易所、产品范围或跟踪指数查询 ETF。 --- - etf.detail: GET /api/gendangzou/etfs/{etf_code} — 返回 ETF 产品元数据、跟踪指数及可追溯板块暴露。 --- - etf.sectors.list: GET /api/gendangzou/etfs/{etf_code}/sectors — 依据官方申赎篮子、跟踪指数、公司关系和板块路径,查询 ETF 的直接或扩展板块关系。 --- - etf.by_sector.list: GET /api/gendangzou/sectors/{sector_id}/etfs — 按板块查询直接映射、血缘扩展和上级参考 ETF,各类关系分开标识且不构成产品推荐。 --- - etf.relation.evidence: GET /api/gendangzou/etf-sector-relations/{relation_id}/evidence — 返回官方 PCF、跟踪指数匹配、板块路径、计算公式和主要成分贡献摘要。 --- - etf.relation.contributions: GET /api/gendangzou/etf-sector-relations/{relation_id}/contributions — 分页返回每个篮子成分、公司板块关系及其对调整暴露的完整贡献。 --- - etf.relation.changes: GET /api/gendangzou/etf-sector-relations/{relation_id}/changes — 返回关系创建、状态跨档、显著暴露变化和失效事件,并说明变化来源。 --- - company.state_capital.edge_evidence.list: GET /api/gendangzou/companies/{stock_code}/state-capital/edges/{edge_id}/evidence — 返回构成某条持股或控制边的原始材料、引文、页码和来源链接。 --- - company.state_capital.event_evidence.list: GET /api/gendangzou/companies/{stock_code}/state-capital/events/{event_id}/evidence — 返回某项国资进入、增减持、退出或控制变化事件的可溯源材料。 --- - company.research.fact_evidence.list: GET /api/gendangzou/companies/{stock_code}/research/facts/{fact_id}/evidence — 按原始材料归并返回事实引文、页码、来源和官方链接。 --- - evidence.sector.list: GET /api/gendangzou/sectors/{sector_id}/evidence — 查询板块生成、政策热度、市场关注和资金确认的可溯源依据。 --- - evidence.relation.list: GET /api/gendangzou/company-sector-relations/{relation_id}/evidence — 按关系 ID 查询底层事实证据,用于细粒度审计。 --- - evidence.relation_materials.list: GET /api/gendangzou/company-sector-relations/{relation_id}/evidence-materials — 将同一文档中的公司业务事实归并展示,是 Agent 的推荐映射审计接口。 --- - evidence.company.list: GET /api/gendangzou/companies/{stock_code}/sector-evidence — 按股票代码查询全部关系证据,可进一步限定板块。 --- - snapshot.list: GET /api/gendangzou/snapshots — 按日期区间返回可复现的完整发布快照。 --- - snapshot.latest: GET /api/gendangzou/snapshots/latest — 获取最新快照,或指定日期之前最近的完整快照。