如何从 TradingView Pine 脚本中的不同图表获取每小时 RSI?

How to get hourly RSI from different chart in TradingView Pine Script?

我正在以 1 分钟的分辨率编写硬币 A 的策略。现在我需要获得硬币 B 的每小时 RSI。

我试过:

btcusdtHour = security("BITTREX:BTCUSDT", "60", close)
plot(rsi(btcusdtHour, 14))

但这并没有给出我预期的结果:我最终得到一个从 0 附近反复反弹到 100 的 RSI。我错过了什么?

But this doesn't give the results I expected: I end up with an RSI that bounces from near 0 to 100 repeatedly. What am I missing?

当您使用 the security() function 从更高的时间范围内获取价格数据时,您最终得到的值不会经常改变。

假设您获得 60 分钟的数据,但您的图表是 10 分钟的图表。在这种情况下,较高的时间范围数据仅每 6 根柱变化一次。但如果你仍然根据那个更短的时间范围来计算,结果就会不对。

同样的事情发生在你的代码中:

btcusdtHour = security("BITTREX:BTCUSDT", "60", close)
plot(rsi(btcusdtHour, 14))

在这里您可以使用 security() 获取每小时价格。但是随后您在较低的时间框架图表上计算 RSI。这样你会得到一个尖锐的 RSI,因为你最终计算的 RSI 比需要的多得多。

要解决此问题,请使用 security() 直接在该小时时间范围内计算 RSI,如下所示:

btcusdtHour = security("BITTREX:BTCUSDT", "60", rsi(close, 14))
plot(btcusdtHour)

给你。

//@version=3
study("RSI MTF by PeterO", overlay=false)

rsi_mtf(source,mtf,len) =>
    change_mtf=source-source[mtf]
    up_mtf = rma(max(change_mtf, 0), len*mtf)
    down_mtf = rma(-min(change_mtf, 0), len*mtf)
    rsi_mtf = down_mtf == 0 ? 100 : up_mtf == 0 ? 0 : 100 - (100 / (1 + up_mtf / down_mtf))

lenrsi=input(14, title='lookback of RSI')
mtf_=input(60, title="Higher TimeFrame Multiplier")
plot(rsi_mtf(close,mtf_,lenrsi), color=orange, title='RSI')