NodeJS计算相对强弱指数(RSI)与Trading View结果不符求助
NodeJS实现匹配Trading View的RSI指标问题
我已经花费两天多时间在NodeJS中计算交易指标相对强弱指数(RSI),尝试了网上能找到的所有RSI计算包及技术指标工具,但计算结果与券商图表和Trading View显示的RSI值均不匹配(二者显示值一致)。
Trading View公布了其RSI计算公式,其中rma()函数代表“相对移动平均(Relative Moving Average)”,alpha变量是基于周期的权重系数,应用于源数据。
我按上述公式在NodeJS中实现了如下代码:
let change; let gain = []; let loss = []; for (i = 0; i < closingPrices.length - 1; i++) { change = closingPrices[i + 1] - closingPrices[i]; // 处理上涨幅度 if (change >= 0) { gain.push(change); } else { gain.push(0); } // 处理下跌幅度 if (change < 0) { loss.push(-1 * change); } else { loss.push(0); } } // Trading View定义的相对移动平均计算 function RMA(source, length) { let rma = (1 / length) * source[0] + (1 - (1 / length)) * source[1]; return rma; } let avgGain = RMA(gain, 14); let avgLoss = RMA(loss, 14); let rs = avgGain / avgLoss; let rsi = 100 - 100 / (1 + rs);
closingPrices为某只股票过去一年至今每个交易日的收盘价数组,我已验证该数据完全符合历史记录,其他指标如SMA计算均正确,仅RSI计算存在问题。
我用上述脚本计算Shopify(SHOP)股票的RSI,结果为49.43%,但Trading View显示的真实RSI值为42.20%,结果明显错误。
我已尝试三种已知RSI计算方法:基于简单移动平均、指数移动平均、Wilder平滑法的RSI,均无法匹配目标值。
我找到一个能匹配Trading View RSI的Python脚本,但不熟悉Python,希望有人将其翻译成JavaScript。
内容的提问来源于stack exchange,提问作者srb633
相关产品推荐
相关产品推荐

