【问题标题】:How to get hourly RSI from different chart in TradingView Pine Script?如何从 TradingView Pine Script 的不同图表中获取每小时 RSI?
【发布时间】:2018-04-21 12:37:02
【问题描述】:

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

我试过了:

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

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

【问题讨论】:

    标签: pine-script


    【解决方案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)
    

    【讨论】:

      【解决方案2】:

      你来了。

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

      【讨论】:

      • 某种解释在这里会很顺利。另外,如果我错了,请纠正我,但我看不出这是如何获得与当前图表/证券不同的 RSI 的?看起来它只是在不同的时间范围内获得 RSI?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多