如何从TradingView Pine Script中的不同图表获得每小时RSI?

时间:2018-04-21 12:37:02

标签: tradingview-api pine-script

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

我试过了:

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

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

2 个答案:

答案 0 :(得分:1)

  

但是,这并没有给出我期望的结果:我得到的RSI最终从0到100反复反弹。我想念什么?

当您使用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)

答案 1 :(得分:0)

您在这里。

//@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')