You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python调用Binance API计算15分钟RSI与官网数值不符的问题

解决RSI计算与Binance官网不一致的问题

核心原因

你的代码计算出的RSI和官网不符,主要是两个问题:

  1. 包含未闭合K线:当前时间的15分钟K线还在运行,收盘价实时变动,但Binance官网的RSI仅使用已完全闭合的K线收盘价计算。
  2. 时间范围未对齐K线柱:直接用当前时间减固定分钟数,无法精准匹配Binance的15分钟K线时间周期(K线结束时间为00/15/30/45分整),导致获取的K线范围或数量错误。

修正步骤

1. 精准获取已闭合的K线数据

调整代码,只获取已完成的15分钟K线,避免包含未闭合的当前周期数据:

import datetime as dt
import numpy as np
import talib
from binance.client import Client

client = Client(api_key="你的API密钥", api_secret="你的API密钥")

# 获取UTC当前时间,对齐到最近的15分钟周期起始点(即当前未闭合K线的开始时间)
now_utc = dt.datetime.now(dt.timezone.utc)
current_15min_start = now_utc - dt.timedelta(
    minutes=now_utc.minute % 15,
    seconds=now_utc.second,
    microseconds=now_utc.microsecond
)

# 计算起始时间:往前推15个完整的15分钟周期,确保获取15个已闭合收盘价(计算14周期RSI需要15个价格)
start_str = (current_15min_start - dt.timedelta(minutes=15*15)).isoformat()
end_str = current_15min_start.isoformat()

# 获取指定时间范围内的已闭合K线
trades = client.get_historical_klines(
    symbol='BTCUSDT',
    interval=Client.KLINE_INTERVAL_15MINUTE,
    start_str=start_str,
    end_str=end_str
)

2. 计算RSI并验证

提取收盘价后计算RSI,此时数据与官网一致:

# 提取已闭合K线的收盘价
closes = [float(row[4]) for row in trades]
# 确保获取到15个收盘价(用于计算14周期RSI)
if len(closes) != 15:
    print("警告:获取的K线数量异常,请检查时间范围")

c = np.array(closes)
rsi = talib.RSI(c, timeperiod=14)
print("计算的RSI值:", rsi[-1])

替代方案:通过Limit参数获取

也可以直接用get_klines的limit参数获取最近的K线,再剔除未闭合的最后一根:

# 获取最近16根K线(包含1根未闭合的当前周期)
trades = client.get_klines(
    symbol='BTCUSDT',
    interval=Client.KLINE_INTERVAL_15MINUTE,
    limit=16
)
# 剔除最后一根未闭合的K线,得到15个已闭合收盘价
completed_trades = trades[:-1]
closes = [float(row[4]) for row in completed_trades]

c = np.array(closes)
rsi = talib.RSI(c, timeperiod=14)
print("计算的RSI值:", rsi[-1])

WebSocket后续处理建议

用WebSocket更新RSI时,需监听K线闭合的推送事件(如kline_15m频道的kline.is_final字段),当收到已闭合的新K线时:

  • 从收盘价列表中移除最旧的一个价格
  • 添加新的闭合收盘价
  • 重新计算RSI,确保始终用最新的15个已闭合收盘价计算

内容的提问来源于stack exchange,提问作者barteloma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 17:10:24