自带数据算指标
POST /api/indicators/compute 使用你提供的 K 线计算指标,不限定 venue / symbol。
适合场景:
- 回测:数据库 / CSV 里的历史 OHLCV 想跑指标
- 自定义数据源:对手交易所、聚合合约、你自己的 tick 重采样
- 离线分析:计算指定历史窗口的指标值
不适合:
- 实时行情:使用
POST /api/indicators查询支持的市场和标的 - 跨周期(MTF)请求(比如 SMC 的
fvg_timeframe):请使用行情指标接口查询支持的跨周期结果
30 秒上手
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}}]
}'返回:
{
"count": 2,
"interval": "1h",
"klines": [[1735689600000, 95000.0, ...], ...], // echo
"indicators": {
"rsi:period=14": {
"columns": ["open_time", "rsi"],
"data": [[1735689600000, null], [1735693200000, null]],
"explain": { /* knowledge: summary_focus / signals / caveats */ }
}
}
}RSI 在前 14 根之前返回 null —— 这是正常的,所有"累积型"指标都需要 warmup。详见下方限制。
Python 集成示例
import requests
import pandas as pd
# 从你自己的数据源拉历史 OHLCV
df = pd.read_csv('btc_1h_history.csv') # 列: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]) # 最新 EMA20 值
print(result['indicators']['rsi:period=14']['data'][-1])SMC 等"复合指标"也支持
像 SMC (Smart Money Concepts) 这种非数值输出指标,返回结果除了 per-bar columns 还会附带 objects sidecar:
curl -X POST 'https://api.mobiusquant.ai/api/indicators/compute?explain=false' \
-H 'content-type: application/json' \
-d '{
"klines": [/* ≥500 根历史 K 线 */],
"calc": [{"id": "smc", "name": "smc",
"params": {"show_swing_points": true, "show_premium_discount_zones": true}}]
}'响应里 indicators.smc.objects 包含 swing_structures / order_blocks_swing / fair_value_gaps / premium_zone 等结构化对象,可以直接喂给 chart 渲染器或 LLM 分析。详见 SMC 指标页。
请求字段
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
klines | array | ✓ | OHLCV 数组,每根 K 线两种格式自动识别(见下) |
calc | array | ✓ | 指标列表,每项 {name, params, id?},跟 /api/indicators 同 |
interval | string | ✗ | K 线周期;HMM 必填,CVD 用于计算确认时间 |
last_bar_closed | bool | ✗ | 默认 true;末根形成中时设为 false,适用于特征输出与 HMM/CVD 确认 |
signals | bool | ✗ | 默认 false;true 返回逐根特征判断,需同时传 interval |
include_forming | bool | ✗ | 默认 false;需 signals=true,将未收盘末根作为完整样本试算,信号行增加 bar_status |
echo_klines | bool | ✗ | 默认 true,响应回 echo;false 时只返指标 |
klines 元素的两种格式:
// 紧凑(Binance 嵌套列表风格):[open_time_ms, open, high, low, close, volume, quote_volume?]
[1735689600000, 95000.0, 95500.0, 94800.0, 95200.0, 1234.5, 117526200.0]
// 对象(更显式)
{
"open_time": 1735689600000,
"open": 95000.0,
"high": 95500.0,
"low": 94800.0,
"close": 95200.0,
"volume": 1234.5,
"quote_volume": 117526200.0 // 可选,部分指标用(VWAP / CVD 等);缺省补 0
}响应字段
| 字段 | 类型 | 说明 |
|---|---|---|
count | int | 处理的 K 线根数 |
interval | string | 回显 request 里的 interval(传了才有) |
klines | array | echo 输入的 K 线(echo_klines=false 时省略) |
indicators | object | key = id 或自动生成的 name:p1=v1,...,value = 单个指标的 columns/data/objects/explain |
每个 indicators.<key> 的结构跟 POST /api/indicators 完全一致:
{
"columns": ["open_time", "rsi"],
"data": [[1735689600000, null], [1735693200000, 67.4], ...],
"objects": { /* 仅 SMC 等非数值指标 */ },
"explain": { /* knowledge: 仅 ?explain=true 时 */ }
}限制
HMM 必须显式提供 5m/15m/1h/4h/12h/1d 之一;12h 仅 BYO,不提供实时行情。 输出 8 个业务字段,包含 hmm_supported(true/false/null),另含 open_time 和结果级 meta。 默认 normalization=auto:5m/15m/1h 用 D1,4h/12h/1d 用 Legacy;支持显式覆盖。 horizon20 局部/背景输入预热:D1 20/60 根、Legacy 153/461 根;horizon100 分别 100/300、769/2309。 输入就绪后仍需连续确认;false 不等于反向已确认,null 包含首次确认等待。每次最多 8 个 HMM 实例。 默认输入全部已收盘,末根仍在形成时,请设置请求顶层 last_bar_closed: false。
| 限制 | 值 | 触发 |
|---|---|---|
| K 线数量 | ≤ 2000 根;仅含 HMM 时 5000 根 | 超业务上限 413;超过 5000 的 schema 硬上限 422 |
open_time | 严格单调递增的毫秒 | 否则 400 |
| OHLCV | 必须 finite(无 NaN / inf) | 否则 400 |
calc 列表 | 非空,且 name 必须在 registry 里 | 否则 400 |
calc 非法参数 | 未知参数或非法参数值 | 400 |
提供足够的历史数据
此接口只使用请求中提供的 K 线。请在需要分析的时间段之前提供足够的历史数据。
所以请确保 history 够长:
| 指标 / 用法 | 最少 K 线 |
|---|---|
| RSI(14) 想稳定 | ≥ 50 |
| EMA(200) / ATR(200) 想稳定 | ≥ 200 |
| Bollinger / Keltner / Donchian 默认参数 | ≥ 30 |
| SMC 内部结构 + FVG | ≥ 50 |
| SMC swing 结构 / OB / Strong-Weak / P/D zones | ≥ 100(默认 swing_size=50,加 buffer) |
| SMC 完整功能 + EQH/EQL 稳定 | ≥ 200(ATR 收敛阈值) |
| 生产分析建议 | 500+ |
前 N 根的指标值返回 null 是正常的,你应该丢掉那段 warmup,只用尾部稳定的结果。
特征信号
POST /api/indicators 和 POST /api/indicators/compute 可在请求顶层添加 "signals": true,返回指标自身的特征判断。59 个指标中,35 个提供特征, 合计 106 个(101 个事件、5 个状态);其余 24 个仅提供数值或状态描述,没有独立特征信号。 每个指标文档都说明判断规则、含义和有效条件,或不提供信号的原因。 这些是指标事件或状态,不是买卖指令。
{
"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
}将上述请求发送到 /api/indicators?explain=false。自带数据时,使用 /api/indicators/compute?explain=false,将市场、标的和 limit 字段替换成 klines, 保留 interval、calc 和 signals。
每个指标新增 signals 对象,使用 columns 与 data,行与该指标的数值输出一一对应。 前两列是 open_time、confirmed_at_ms,均为毫秒;后续为该指标的特征列。 confirmed_at_ms 表示对应已收盘 K 线按周期计算的收盘时刻,不表示每个特征都触发了。
例如 indicators.macd.signals:
{
"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]]
}该示例表示本根金叉,且 MACD 高于 Signal;不表示穿越零轴。
| 返回值 | 含义 |
|---|---|
特征值 true | 本根事件发生,或本根状态成立 |
特征值 false | 数据可判断,但事件未发生或状态不成立 |
特征值 null | 未收盘、预热不足、依赖数值无效或输入存在缺口,不能判断 |
整个 signals: null | 该指标没有已开放的特征输出能力 |
没有 signals 字段 | 请求未开启特征输出 |
事件仅在发生的那根为 true;状态可能连续多根为 true。按列名读取,不依赖固定列序号。
使用 GET /api/indicators/signals 按指标、类型或特征 ID 查询完整定义, 包括展示名称、规则、含义和边界条件;返回始终按指标分组。定义不代表当前行情已触发特征。
也可使用 GET /api/indicators/registry?include_signals=true 查询每个指标的 has_signals 和 signals 定义列表(id、kind=event|state、description、 required_history、version)。未传该查询参数时,注册表响应不附加这些字段。
使用限制:
- 实时特征支持 Binance、Bybit、OKX、Hyperliquid 已接入行情(含币安股票永续,不含股票现货);其他市场开启时返回 400,普通数值查询不受影响。
- BYO 必须提供
interval,输入应为固定时长 K 线;末根形成中设置last_bar_closed: false,之前各根必须已收盘。 - 未收盘行的确认时间与特征值为 null。特征没有独立时间窗口,沿用数值输出的裁剪范围。
- 从输入中的第一个周期缺口开始,本次输入后续特征均为 null;请提供连续且包含充分预热的数据,不要将 null 转成 false。
- 历史输入修订或起点改变可能改变结果;此接口不提供监控进度、补偿或去重保证。
signals必须是 JSON 布尔值;不接受字符串、对象或自定义表达式。省略或 false 时不返回特征。/api/chart也接受signals,格式见下节。
信号绘图
如需盘中预警,可同时传 signals: true、include_forming: true,仍读取同一份信号表。 末根信号 bar_status=forming、confirmed_at_ms=null,可以在收盘时消失。图表事件标记也带同样的 分类;CVD 对象的盘中状态为 forming。默认请求不变。完整说明及实时、BYO 用法见盘中试算。
需要不可判断原因、原生属性关联、实际参数和历史范围时,可使用顶层 include 可选信息。不传此选项时原响应不变。
将上面的同一请求发送到 POST /api/chart,保留 "signals": true。 普通 K 线、指标曲线及结构对象仍然返回,并增加:
indicator_signals[响应key]:与计算接口相同的{columns, data}特征结果;无独立特征的指标为null。- 主图
panels[].items[]中的type: "markers", source: "signals":只包含event=true的确认标记,按indicator_key区分实例。
标记示例:
{
"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 是确认 K 线的开盘时间(秒),confirmed_at_ms 是该 K 线收盘时间(毫秒)。 标记不回填到历史拐点,不标记形成中 K 线或 null/false。 同一指标实例、同一根 K 线上的多个事件合并为一个标记,signal_ids 保留完整列表。 没有事件时不返回空标记项;持续状态仍可读取,但不会逐根绘制,也不会改变 K 线颜色。
CVD 保留背离区间线与端点,开启本选项后由统一标记表示确认,避免重复确认箭头。 SMC 的结构对象仍可用于绘制区间;若客户端还根据对象自行生成确认提示,应与 signal_ids 去重。 省略 signals 或传 false 时,图表保持原响应,不附加 indicator_signals 或统一事件标记。
鉴权与速率限制
跟 /api/indicators 同套:
- 不带
Authorizationheader → 按 IP 使用匿名额度 - 带合法
Bearer mq_xxx→ 使用更高的 Token 额度 - 没 token 的话先 申请一个,免费
错误码
| Code | 含义 | 处理 |
|---|---|---|
400 | 校验失败(非单调递增 / NaN / 未知指标 / 列数不够) | 看 detail,改请求 |
401 | 带了 Authorization 但 token 无效 | 重新申请 |
413 | klines 超相应上限(2000;仅含 HMM 时 5000) | 缩短窗口,同时保留必要预热历史 |
422 | 请求格式错误(缺字段 / 类型错 / 多余 key) | 查看 detail 中标注的字段位置 |
429 | 超 rate limit | 看 Retry-After,带 token 限速更高 |
500 | 指标计算异常(指标自身 bug) | 报 issue,附 detail 里的 indicator name |
相关
POST /api/indicators— 查询支持市场和标的的指标值GET /api/indicators/registry— 可用指标列表及参数- SMC 指标详情页 — sidecar
objects结构说明 - AI Agent 操作手册 — 给 LLM 看的引擎接入文档
- Skill 运行时查询指南 — Skill 集成时的 endpoint 决策树