免费 RSI API:数据、限制与 Python 接入
固定源价格、周期、参数、平滑方式、时间戳和证据,让 RSI 结果可以复现。

概览
获取 0–100 动量振荡值,用于过度延伸、均值回归背景、市场状态分析和价格与 RSI 背离。
保存回看长度、Wilder 或其他平滑、输入价格、初始值方法、周期、复权政策和边界处理。
API 应返回测量值;超买超卖阈值属于应用策略,并会随趋势、波动率和资产变化。
QVeris 可帮助 Agent 发现技术分析能力、检查输入输出,再决定是否调用。
RSI 本质上是一份计算契约
两个接口都返回“RSI(14)”,结果仍可能不同,因为源价格、周期边界、预热历史、平滑方式、时区和复权规则并不一致。
参数契约
| 参数 | 需要决定 | 要保留的证据 |
|---|---|---|
| symbol | 供应商代码与交易场所 | 映射规则和资产身份 |
| interval | 分钟、小时、日线或其他窗口 | 时区和交易时段边界 |
| period | 常见为 14,但不是唯一选择 | 精确整数和预热要求 |
| price | 收盘价、复权收盘价或其他序列 | 来源字段和复权策略 |
| smoothing | Wilder、类似 EMA 或供应商自定义 | 公式或供应商文档 |
| timestamp | 每个输出对应的时间 | 事件窗口和供应商时区 |
最小响应结构
{
"symbol": "AAPL",
"interval": "1day",
"period": 14,
"timestamp": "2026-08-06T20:00:00Z",
"rsi": 58.42,
"source": "provider-name"
}调用 API 还是本地计算
| 方式 | 适合场景 | 需要控制的风险 |
|---|---|---|
| 供应商 API | 需要快速、持续维护的指标接口 | 公式不透明与调用额度 |
| 本地计算 | 掌握价格序列且强调复现 | 数据清洗和实现测试 |
| 双重计算 | 信号重要,需要交叉验证 | 预先定义容差和分歧处理 |
免费 RSI API 的响应字段与参数
RSI 技术指标 API 通常根据一个回看周期内的平均上涨与平均下跌计算 0–100 区间的动量振荡值。14 周期较常见,但时间间隔、价格序列、平滑方法、精度和预热期处理各不相同,应以供应商文档为准。
确认 Wilder 平滑还是其他变体
很多服务都叫 RSI,但实际可能使用 Wilder 递归平均、简单滚动平均或库特有初始值。只有回看周期不足以复现振荡指标。
测试单边行情后的边界行为
检查平均跌幅为零、平均涨幅为零、价格不变和历史不足时的处理。不同有效实现可能在特定边界返回 100、0、50 或空值。
把 70 和 30 当作背景,而不是通用指令
超买超卖阈值取决于趋势、波动率、周期和资产。API 应返回测量值,策略规则应由应用单独定义并验证。
保留价格源与 K线完成状态
记录收盘或复权收盘、周期、回看长度、平滑、时区和当前 K线是否完成。价格与 RSI 时间戳不一致时,背离分析没有意义。
定义不含事后信息的背离
判断看涨或看跌背离,需要明确拐点规则、比较窗口、价格与 RSI 的最小差异和确认时间。如果必须等待后续 K 线才能确认拐点,信号时间应记录为真正可知的时刻,而不是更早的转折点,否则回测会产生未来数据泄漏。
不同周期必须独立处理
一分钟 K 线上的 14 周期 RSI,与小时线或日线上的同参数指标不可互换。每个数值都要保存周期和交易时段,按照有文档的边界重采样;只有参与计算的所有 K 线在决策时点都已完成,才能组合多周期信号。
明确选择 API 结果还是本地计算
只处理少量标的和固定参数时,直接指标端点更方便。若已经获取 OHLCV K 线、需要多种周期,或希望精确控制平滑与初始值,本地计算通常更经济且更易复现。判断时还要纳入数据权利和 K 线调用成本。
如何比较免费技术指标 API
| 要求 | 检查内容 | 为什么重要 | 风险信号 |
|---|---|---|---|
| 端点权限 | RSI 属于免费层、演示还是付费端点? | 免费密钥可能无法调用全部指标。 | 价格页与文档不一致。 |
| 字段 | RSI 数值、时间戳、标的、周期与元数据。 | 决定响应能否直接满足任务。 | 只提供图表或不透明评分。 |
| 参数 | 标的、时间间隔、回看周期与价格序列类型。 | 使输出可复现、可比较。 | 固定默认值却没有说明。 |
| 额度与许可 | 请求权重、429 行为、缓存、展示与存储许可。 | 决定安全轮询方式与允许用途。 | 宣称“不限量”却无书面条款。 |
供应商文档链接
免费 RSI 接口与本地计算方案怎么选
有文档的 RSI 端点调用方便,但不一定成本最低,也不一定最容易复现。如果应用本来就会获取已完成的 OHLCV K 线,本地计算可以避免为每个标的额外调用一次接口,并能完全控制平滑、初始值和历史修订。若只需要少量数值、希望多个资产类别使用统一响应,或不想维护指标代码,服务商端点更有吸引力。
| 候选方案 | 文档能力 | 适用场景 | 免费层需确认 |
|---|---|---|---|
| Alpha Vantage RSI | 官方 RSI 函数支持标的、周期、回看长度和价格序列类型参数,可用于股票、外汇或加密货币,并返回 JSON 或 CSV。 | 跨多个资产类别进行少量、参数明确的指标查询。 | 虽然可以申请免费 API Key,但仍需按目标周期确认数据时效、请求限制、底层 K 线权限和商业用途。 |
| Twelve Data RSI | Twelve Data 在技术指标 API 中提供针对指定金融工具和周期的 RSI 端点。 | 已经采用 Twelve Data 代码和时间序列规则、覆盖多个市场的应用。 | 确认当前免费套餐是否包含 RSI、端点消耗额度、批量行为、可用周期和底层市场延迟。 |
| Financial Modeling Prep RSI | FMP 在技术指标 API 中公开了稳定版 Relative Strength Index 端点。 | 已使用 FMP 证券标识,并希望把技术指标与其他金融数据放在同一数据体系中的团队。 | 公开文档页不等于免费可调用;必须确认当前套餐、历史深度、周期覆盖、额度和数据许可。 |
| 基于 OHLCV 本地计算 | 使用受控收盘价序列计算涨跌幅,初始化平均涨跌并在自有版本化实现中应用 Wilder 递归平滑。 | 大规模证券池、多参数组合、强调研究复现性,以及已经拥有底层 K 线许可的流程。 | 底层 K 线并不会自动获得免费存储或再分发权;仍需保存来源、复权政策、K 线完成状态和许可。 |
用固定数值样本验证两套 RSI 实现是否一致
保存至少 40 根已完成的收盘价,其中应包含横盘区间、单边走势、缺失周期和一次复权事件。向服务商请求基于收盘价的 14 周期 RSI,再对完全相同的时间戳进行本地复算。比较首个非空值的时间、初始窗口、舍入规则,以及此后每个数值是否落在预先记录的容差内。如果差异只在公司行动或交易时段缺口后出现,应先检查价格序列和复权规则,而不是直接判断公式错误。
判断规则:若直接端点能够通过固定样本、额度足以覆盖完整轮询任务,并且底层行情权利符合产品用途,可以直接采用;若同一套已授权 OHLCV 还要计算多种指标,或精确复现比一次调用更重要,则更适合本地计算。
Python 获取 RSI 数据:安全接入步骤
可以使用一份精简的本地实现作为供应商响应的数值基准。下面的函数采用 Wilder 递归平滑,把预热区间保留为 None,并明确处理横盘、全部上涨和全部下跌三种边界状态。
def wilder_rsi(closes: list[float], period: int = 14) -> list[float | None]:
if period < 2:
raise ValueError("period must be at least 2")
if any(value is None or value <= 0 for value in closes):
raise ValueError("closes must contain positive completed-bar values")
if len(closes) < period + 1:
return [None] * len(closes)
changes = [current - previous for previous, current in zip(closes, closes[1:])]
gains = [max(change, 0.0) for change in changes]
losses = [max(-change, 0.0) for change in changes]
average_gain = sum(gains[:period]) / period
average_loss = sum(losses[:period]) / period
values: list[float | None] = [None] * period
def score(gain: float, loss: float) -> float:
if gain == 0 and loss == 0:
return 50.0
if loss == 0:
return 100.0
if gain == 0:
return 0.0
relative_strength = gain / loss
return 100.0 - (100.0 / (1.0 + relative_strength))
values.append(score(average_gain, average_loss))
for gain, loss in zip(gains[period:], losses[period:]):
average_gain = ((period - 1) * average_gain + gain) / period
average_loss = ((period - 1) * average_loss + loss) / period
values.append(score(average_gain, average_loss))
return values只有口径一致才值得比较。基准函数必须使用供应商对应的已完成收盘价序列,并在周期、交易时段、时区、复权方式、回看长度、初始值和舍入规则一致后再比较。首个非空值时间不同,通常意味着初始值或预热规则不同,而不是普通数值误差。
1. 确认标的、资产类型与周期
先解析证券和交易所,再选择日线或小时等受支持周期,不要假设不同供应商使用相同代码映射。
2. 按官方文档发送 RSI 请求
参考供应商提供的 HTTP 或 Python 示例,将 API 密钥保存在服务端,并先检查未经修改的原始 JSON。
3. 规范化 RSI JSON 数据
按时区解析时间戳,安全转换数值字符串,保留预热期空值,并明确映射 RSI 数值与计算元数据。
4. 添加限流处理与缓存
遵守请求权重,遇到 429 时退避,按已完成 K 线缓存,并记录供应商、计算参数与抓取时间。
5. 用固定 RSI 样本复算
保存一段包含横盘、上涨、下跌与缺失周期的收盘价序列,独立复现供应商的初始值与平滑方法,并比较预热行和时间戳,预先设置明确数值容差。若支持复权股票价格,样本还应包含一个公司行动日期。
6. 监控过期与历史修订
跟踪底层 K 线年龄、收盘状态、空值率、额度消耗、Schema 变化以及与固定样本的偏差。如果最新 RSI 已过期,或历史修订改变了先前信号,应明确暴露状态,不能静默沿用旧值。
检查 RSI 工具契约
调用前检查代码、周期、计算参数、输出结构和供应商身份。 可继续打开QVeris RSI 工具详情,并通过QVeris REST API 参考核对调用契约。
免费 RSI API 常见问题
有免费的 RSI API 吗?
部分供应商为预计算 RSI 提供免费层或试用额度,但免费密钥可能不包含该端点,因此应同时检查最新价格页和接口文档。
RSI 接口会返回什么?
常见字段包括时间戳与 RSI 数值,并附带标的、时间间隔、价格序列和回看周期等元数据;还应检查数据顺序、精度与预热期空值。
如何用 Python 获取 RSI 数据?
携带密钥、标的和周期发送 HTTP 请求,解析 JSON,安全转换数值,保留时间戳,并处理限流与错误。
免费接口能返回实时 RSI 吗?
有可能,但取决于底层行情权限和免费层规则。应检查 K 线时间戳与官方延迟说明,不要仅凭接口响应速度判断数据是否实时。
