技术指标
二十种经典指标,基于价格基准的 K 线按需计算。每次调用最多五十个实例,每个实例有自己的参数。精度已与 TradingView 校准,误差在 0.1% 以内,两个累计型指标以及三处有意保留的约定差异除外。
#调用
API 中唯一接收 JSON 正文的端点:它描述的是计算,而不是读取。结果既不存储也不缓存,每次调用都基于已收盘的 K 线重新计算。
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
symbol | string | 必填 | 二十个永续合约之一。最多 32 个字符。 |
timeframe | string | 必填 | 1m、5m、15m、30m、1h、4h、1d、1w。这是唯一接受周线的接口。 |
results | integer | 1 | 每个指标返回的值数量。1 表示在已收盘 K 线上的最新值。 |
indicators | array | 必填 | 非空的 { id, type, parameters } 对象列表。最多五十个条目。 |
curl -X POST "https://api.bytnode.com/v1/indicators" \
-H "X-API-KEY: $BYTNODE_KEY" \
-H "Content-Type: application/json" \
-d '{
"symbol": "BTCUSDT",
"timeframe": "1h",
"results": 60,
"indicators": [
{ "id": "rsi_fast", "type": "rsi", "period": 7 },
{ "id": "rsi_slow", "type": "rsi", "period": 21 },
{ "id": "macd", "type": "macd", "fast": 12, "slow": 26, "signal": 9 },
{ "id": "bb_mid", "type": "bb", "period": 20, "std": 2.0 }
]
}'1m5m15m30m1h4h1d1w
#二十种指标
| 类型 | 实例数 | 参数(默认值,最小值) | 输出 |
|---|---|---|---|
rsi | multi | period (14, ≥ 2) | value |
ema | multi | period (20, ≥ 2) | value |
sma | multi | period (20, ≥ 2) | value |
bb | multi | period (20, ≥ 2), std (2.0, ≥ 0.5) | upper, middle, lower |
atr | multi | period (14, ≥ 2) | value |
stoch | multi | k (14, ≥ 2), d (3, ≥ 2), smooth (3, ≥ 2) | k, d |
macd | mono | fast (12, ≥ 2), slow (26, ≥ 5), signal (9, ≥ 2); fast < slow | macd, signal, histogram |
obv | mono | none | value |
adx | multi | period (14, ≥ 2) | value |
sar | mono | acceleration (0.02, ≥ 0.01), maximum (0.2, ≥ 0.05); acceleration ≤ maximum | value |
cci | multi | period (20, ≥ 2) | value |
willr | multi | period (14, ≥ 2) | value |
mfi | multi | period (14, ≥ 2) | value |
roc | multi | period (10, ≥ 2) | value |
ad | mono | none | value |
adosc | mono | fast (3, ≥ 2), slow (10, ≥ 5); fast < slow | value |
keltner | multi | period (20, ≥ 2), multiplier (2.0, ≥ 0.5) | upper, middle, lower |
donchian | multi | period (20, ≥ 2) | upper, middle, lower |
ichimoku | mono | tenkan (9, ≥ 2), kijun (26, ≥ 5), senkou (52, ≥ 10) | tenkan_sen, kijun_sen, senkou_a, senkou_b |
vwma | multi | period (20, ≥ 2) | value |
#标识符
每个实例都带有一个由你选择的 id,作为响应中的键。其格式受约束,使三个不同周期的 RSI 无需自定义约定也能区分。
十四种多实例类型
每种类型最多三个实例,后缀为 _fast、_mid 和 _slow(rsi_fast、ema_slow)。
rsiemasmabbatrstochadxcciwillrmfirockeltnerdonchianvwma
六种单实例类型
标识符与类型名称完全相同:macd、ichimoku。每次调用一个实例。
macdobvsaradadoscichimoku
标识符重复、格式错误或与其类型不符时返回 400。
#上限规则
指标需要预热(warm-up)(在第一个可发布值之前的 K 线)。规则是:
results + warmup(type, parameters) <= 1000超出时请求返回 422。对于线性预热的类型,消息会给出在所请求结果数量下可使用的最大周期。
| 类型 | 预热 |
|---|---|
| rsi, atr, keltner | 5 × period |
| ema | 3 × period |
| sma, bb, cci, willr, roc, donchian, vwma, 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",
"timestamp": 1775648290510,
"data_type": "indicators",
"data": {
"symbol": "BTCUSDT",
"timeframe": "1h",
"results": 60,
"indicators": {
"rsi_fast": { "type": "rsi", "period": 7, "values": [62.3, 58.1] },
"macd": {
"type": "macd", "fast": 12, "slow": 26, "signal": 9,
"values": { "macd": [142.5], "signal": [98.2], "histogram": [44.3] }
},
"bb_mid": {
"type": "bb", "period": 20, "std": 2.0,
"values": { "upper": [72110.4], "middle": [71420.8], "lower": [70731.2] }
}
}
}
}data.indicators的键就是你的标识符。- 每个条目都会重复其
type和实际生效的参数(已填入默认值):你始终知道计算了什么。 - 值按从旧到新排列。
- 未定义的值输出为
null,绝不会是NaN。 - 多键输出按类型声明的顺序排列,而不是计算引擎的顺序。
#约定差异
这些差异来自实测,而非偏好。了解它们可以避免在没有问题的地方找 bug。
OBV 和 AD 是没有起点的累计值
两者都从所加载窗口的第一根 K 线开始累计。它们的绝对水平在不同请求之间不可复现:两个不同的窗口会得到两个不同的水平,且都不会与第三方图表上的水平一致。只有斜率、变化和与价格的背离可用。adosc 没有这个缺陷:它不受起点影响。
Ichimoku:与 TradingView 相差一根 K 线
两条 senkou 向前平移 kijun 根 K 线(默认 26)。TradingView 平移 25。因此相差一根 K 线是预期内的。
不提供 chikou_span:其定义依赖未来数据,在最近的 K 线上会是 null,因此在 results: 1 时总是 null。
Keltner:单一长度
采用现代变体,指数移动平均加 ATR,两者使用同一长度。TradingView 分别提供 EMA(20) 和 ATR(10)。这是有意为之的差异。
VWMA 不是 VWAP
vwma 是成交量加权移动平均,基于价格基准的 K 线计算。/v1/vwap 则聚合所有交易所的成交。来源和窗口都不同:两者有差异并不矛盾。
Donchian 包含当前 K 线
窗口是包含式的,与图表脚本语言中的 highest 和 lowest 函数一致。
MFI 不是成交量版 RSI
它实现为简单的滚动求和,不使用 RSI 的平滑:其预热等于周期,而不是五倍周期。
#错误
校验顺序固定:周期,然后结果数量,然后交易对,然后指标解析,然后上限规则,最后读取 K 线。以第一个失败为准。
| 情况 | 状态码 |
|---|---|
| 密钥缺失或无效 | 403 |
| 周期无效、results 小于 1、交易对未知 | 400 |
| indicators 列表为空,或条目不是对象 | 400 |
| 缺少 id 或 type 键、id 格式错误、类型不受支持 | 400 |
| 该类型的未知参数、类型错误、低于最小值 | 400 |
| macd 或 adosc 的 fast ≥ slow,sar 的 acceleration '>' maximum | 400 |
| 标识符重复 | 400 |
| 正文格式错误、超过 50 个指标、字段过长 | 422 |
| results + warm-up 超过 1000 | 422 |
| 该周期数据不足,包括稳定币 | 422 |
| 超出速率限制 | 429 |