加密技术指标 API
十九种技术指标按需计算,并以 TradingView 为基准校准:RSI、MACD、移动平均线等。您提交参数,BytNode 返回数值:无需下载 K 线历史,也无需在本地重新计算。
十九种经典指标类型,按需在 OHLCV K 线上计算,其成交量为现货市场所有交易平台的合计。每次调用最多五十个实例,各自带有参数。价格类指标的精度以 TradingView 为基准校准,误差在 0.1% 以内,另有三处有意的约定差异;成交量类指标(OBV、MFI、A/D、Chaikin)使用该聚合成交量,因此其数值与单一平台的图表不同。它们基于成交量已最终确定的最近 K 线计算(最新一根可能仍在等待),当成交量历史过短时返回 422。
#面向 AI 智能体的技术指标:工具调用
“BTC 的 4 小时 RSI 超买了吗?”“ETH 的 MACD 上穿信号线了吗?”“比较 SOL 和 AVAX 的 ADX”:AI 智能体描述计算,由 MCP 工具 get_market_indicators 执行,最多十个交易对。这是最简单的工具调用。
{
"name": "get_market_indicators",
"arguments": {
"symbol": "BTCUSDT",
"timeframe": "4h",
"limit": 1,
"indicators": [
{ "id": "rsi_14", "type": "rsi", "period": 14 },
{ "id": "macd", "type": "macd", "fast": 12, "slow": 26, "signal": 9 }
]
}
}- 给 LLM 的提示:数值从新到旧排列,且只基于已收盘的 K 线计算,正在形成的 K 线不会改变指标。
- 给开发者:
POST /v1/indicators以 JSON 正文接收同样的描述,可直接作为你自己 AI 智能体的工具;十九种类型及其参数列于下文。 - 适用环境:Claude、ChatGPT、Cursor 及任何 MCP 客户端,包括支持 MCP 的 AI 智能体框架,如 LangChain 或 n8n。
通过 MCP 服务器指南接入你的 AI 智能体,或用开源的 Agent Skills 教它使用 BytNode。
#调用
此接口的全部 1 个字段(取自接口契约)
indicators | One result per indicator of the request, keyed by the `id` you gave it. |
唯一接收 JSON 正文的端点:它描述的是计算,而不是读取。结果既不存储也不缓存,每次调用都基于已收盘的 K 线重新计算。
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
symbol | string | 必填 | GET /v1/symbols 中的交易对之一(两个稳定币返回 200 且 unavailable: not_applicable)。最多 32 个字符。 |
timeframe | string | 必填 | 1m、5m、15m、30m、1h、4h、1d、1w。周线从周一 00:00 UTC 开始,与 /v1/klines 相同。 |
limit | integer | 1 | 每个指标返回的行数,1 至 1000,从新到旧。1 返回最近一根已收盘 K 线的值。 |
indicators | array | 必填 | 非空对象列表:{ "id"、"type",然后是平铺的参数,例如 "period": 14 }。最多五十项。 |
curl -X POST "https://api.bytnode.com/v1/indicators" \
-H "X-API-KEY: $BYTNODE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"symbol": "BTCUSDT",
"timeframe": "1h",
"limit": 3,
"indicators": [
{ "id": "rsi_14", "type": "rsi", "period": 14 },
{ "id": "macd", "type": "macd", "fast": 12, "slow": 26, "signal": 9 },
{ "id": "bb_20", "type": "bb", "period": 20 }
]
}'1m5m15m30m1h4h1d1w
#十九种指标
| 类型 | 参数(默认值,最小值) | 输出 |
|---|---|---|
rsi | period (14, ≥ 2) | value |
ema | period (20, ≥ 2) | value |
sma | period (20, ≥ 2) | value |
bb | period (20, ≥ 2), std (2.0, ≥ 0.5) | upper, middle, lower |
atr | period (14, ≥ 2) | value |
stoch | k (14, ≥ 2), d (3, ≥ 2), smooth (3, ≥ 2) | k, d |
macd | fast (12, ≥ 2), slow (26, ≥ 5), signal (9, ≥ 2); fast < slow | macd, signal, histogram |
obv | none | value |
adx | period (14, ≥ 2) | value |
sar | acceleration (0.02, ≥ 0.01), maximum (0.2, ≥ 0.05); acceleration ≤ maximum | value |
cci | period (20, ≥ 2) | value |
willr | period (14, ≥ 2) | value |
mfi | period (14, ≥ 2) | value |
roc | period (10, ≥ 2) | value |
ad | none | value |
adosc | fast (3, ≥ 2), slow (10, ≥ 5); fast < slow | value |
keltner | period (20, ≥ 2), multiplier (2.0, ≥ 0.5) | upper, middle, lower |
donchian | period (20, ≥ 2) | upper, middle, lower |
ichimoku | tenkan (9, ≥ 2), kijun (26, ≥ 5), senkou (52, ≥ 10) | tenkan_sen, kijun_sen, senkou_a, senkou_b |
#标识符
每个实例都带有一个由你选择的 id:它就是该结果在响应中的键。可以是任意 1 到 64 个字符的名称(字母、数字、_、- 和 .),在同一次调用中唯一:rsi_7、rsi_21、trend.ema_200。
同一类型可以按需出现多次,每次调用最多五十个指标:例如并列五条不同周期的移动平均线,或三个 RSI。
rsiemasmabbatrstochmacdobvadxsarcciwillrmfirocadadosckeltnerdonchianichimoku
标识符缺失、格式错误或重复时返回 422 invalid_indicator。
#上限规则
指标需要预热(warm-up)(在第一个可发布值之前的 K 线)。规则是:
limit + warmup(type, parameters) <= 1000超出时请求返回 422。对于预热为线性的类型,消息会给出在所请求 limit 下可用的最大周期。
| 类型 | 预热 |
|---|---|
| rsi, atr, keltner | 5 × period |
| ema | 3 × period |
| sma, bb, cci, willr, roc, donchian, mfi | period |
| stoch | k + d + smooth |
| macd | 3 × slow + signal |
| adosc | 6 × slow |
| adx | 14 × period |
| sar | 200,固定值 |
| ichimoku | max(tenkan, kijun, senkou) + kijun |
| obv, ad | 无 |
#响应
{
"status": "ok",
"server_time": "2026-11-08T12:52:44.953Z",
"data_type": "indicators",
"symbol": "BTCUSDT",
"timeframe": "1h",
"data": {
"indicators": {
"rsi_14": {
"type": "rsi",
"period": 14,
"values": [
{
"time": "2026-11-08T11:00:00.000Z",
"value": 54.072013544
},
{
"time": "2026-11-08T10:00:00.000Z",
"value": 49.3688670483
},
{
"time": "2026-11-08T09:00:00.000Z",
"value": 51.577078526
}
]
},
"macd": {
"type": "macd",
"fast": 12,
"slow": 26,
"signal": 9,
"values": [
{
"time": "2026-11-08T11:00:00.000Z",
"macd": -14.2249104846,
"signal": -45.998361242,
"histogram": 31.7734507574
},
{
"time": "2026-11-08T10:00:00.000Z",
"macd": -24.0339550779,
"signal": -53.9417239313,
"histogram": 29.9077688534
},
{
"time": "2026-11-08T09:00:00.000Z",
"macd": -27.3827508304,
"signal": -61.4186661447,
"histogram": 34.0359153142
}
]
},
"bb_20": {
"type": "bb",
"period": 20,
"std": 2,
"values": [
{
"time": "2026-11-08T11:00:00.000Z",
"upper": 75998.1649923,
"middle": 75839.8095,
"lower": 75681.4540077
},
{
"time": "2026-11-08T10:00:00.000Z",
"upper": 75976.7264653,
"middle": 75828.6555,
"lower": 75680.5845347
},
{
"time": "2026-11-08T09:00:00.000Z",
"upper": 75985.9705718,
"middle": 75831.36,
"lower": 75676.7494282
}
]
}
}
}
}data.indicators的键就是你的标识符。- 每个条目都会重复其
type和实际生效的参数(已填入默认值):你始终知道计算了什么。 values是带时间的行列表,与 BytNode 的所有列表一样从新到旧:每行为{time, value},多输出指标则为time加上各命名输出(macd、signal、histogram;upper、middle、lower……)。time是该行所对应 K 线的起始时间。- 未定义的值输出为
null,绝不会是NaN。 - 多键输出按类型声明的顺序排列,而不是计算引擎的顺序。
#约定差异
这些差异来自实测,而非偏好。了解它们可以避免在没有问题的地方找 bug。
OBV 和 AD 是没有起点的累计值
两者都从所加载窗口的第一根 K 线开始累计。它们的绝对水平在不同请求之间不可复现:两个不同的窗口会得到两个不同的水平,且都不会与第三方图表上的水平一致。只有斜率、变化和与价格的背离可用。adosc 没有这个缺陷:它不受起点影响。
Ichimoku:与 TradingView 相差一根 K 线
两条 senkou 向前平移 kijun 根 K 线(默认 26)。TradingView 平移 25。因此相差一根 K 线是预期内的。
不提供 chikou_span:其定义依赖未来数据,在最近的 K 线上会是 null,因此在 limit: 1 时总是 null。
Keltner:单一长度
采用现代变体,指数移动平均加 ATR,两者使用同一长度。TradingView 分别提供 EMA(20) 和 ATR(10)。这是有意为之的差异。
Donchian 包含当前 K 线
窗口是包含式的,与图表脚本语言中的 highest 和 lowest 函数一致。
MFI 不是成交量版 RSI
它实现为简单的滚动求和,不使用 RSI 的平滑:其预热等于周期,而不是五倍周期。
#错误
校验顺序固定:周期,然后结果数量,然后交易对,然后指标解析,然后上限规则,最后读取 K 线。以第一个失败为准。
| 情况 | 状态码 |
|---|---|
| 密钥缺失或无效 | 401 |
| 周期无效、limit不在 1–1000 之间、交易对未知 | 422 |
| indicators 列表为空,或条目不是对象 | 422 |
| 缺少 id 或 type 键、id 无效、类型不受支持、请求体字段未知 | 422 |
| 该类型的未知参数、类型错误、低于最小值 | 422 |
| macd 或 adosc 的 fast ≥ slow,sar 的 acceleration '>' maximum | 422 |
| 标识符重复 | 422 |
| 正文格式错误、超过 50 个指标、字段过长 | 422 |
| limit + warm-up 超过 1000 | 422 |
| 该周期数据不足,或成交量历史太短,不足以计算成交量类指标 | 422 |
| 超出速率限制 | 429 |