繁体   English   中英

Python binance api 最后 15 个值的 rsi 计算错误

[英]Python binance api rsi calculation with last 15 value is wrong

我想用 15 分钟的数据来计算我自己的 RSI 策略。 我正在使用 binance API 和 python。所以我需要 BTCUSDT 的最后 15 个收盘数据。 我是这样理解的。

start = str(dt.datetime.now(dt.timezone.utc) - dt.timedelta(minutes=15*15))
end = str(dt.datetime.now())

trades = client.get_historical_klines(symbol='BTCUSDT',
                                      interval=Client.KLINE_INTERVAL_15MINUTE,
                                      start_str=start,
                                      end_str=end)

获取最后 15 个数据并计算 rsi 值,如下所示。

closes = [float(row[4]) for row in trades]
c = numpy.array(closes)

rsi = talib.RSI(c, timeperiod=14)

print(rsi[-1])

最后一个 RSI 的打印值与 binance 在线图表不同。 例如,我的计算结果是 34.41,binance web 应用程序显示图表上最新的 RSI 为 39.68,持续 15 分钟。

如果我计算初始 RSI 值,我将使用 web 套接字将新的收盘价放入我的数组中。 但这是错误的。 我怎样才能做到这一点?

由于 Binance 与 Trading View 集成,因此应使用指数移动平均线 (EMA) 计算 rsi,而 talib 使用 SMMA(平滑移动平均线)。

请注意,如果您使用更大的样本,您可能会发现差异更小(假设第一个柱为 0 增益和 0 损失将具有更小的权重)。

如果你想要 go 的详细信息,请参阅下面的 talib 代码:

ta-lib: https://github.com/TA-Lib/ta-lib/blob/master/src/ta_func/ta_RSI.c

如果您想使用 EMA 更改计算,请考虑以下代码: https://github.com/lukaszbinden/rsi_tradingview/blob/main/rsi.py

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM