我正在以 1 分钟的分辨率在硬币 A 上编写策略。现在我需要获得硬币 B 的每小时 RSI。
我试过了:
btcusdtHour = security("BITTREX:BTCUSDT", "60", close)
plot(rsi(btcusdtHour, 14))
但这并没有给出我预期的结果:我最终得到了一个 RSI,它反复从 0 附近反弹到 100。我错过了什么?
我正在以 1 分钟的分辨率在硬币 A 上编写策略。现在我需要获得硬币 B 的每小时 RSI。
我试过了:
btcusdtHour = security("BITTREX:BTCUSDT", "60", close)
plot(rsi(btcusdtHour, 14))
但这并没有给出我预期的结果:我最终得到了一个 RSI,它反复从 0 附近反弹到 100。我错过了什么?
但这并没有给出我预期的结果:我最终得到一个 RSI 反复从 0 附近反弹到 100。我错过了什么?
当您使用该security()
函数从更高的时间范围内获取价格数据时,您最终会得到不会经常变化的值。
假设您获得 60 分钟的数据,但您的图表是 10 分钟的图表。在这种情况下,较高的时间框架数据仅每 6 根柱线变化一次。但是,如果您仍然根据那个较低的时间范围进行计算,结果将是错误的。
您的代码也会发生同样的事情:
btcusdtHour = security("BITTREX:BTCUSDT", "60", close)
plot(rsi(btcusdtHour, 14))
在这里,您可以使用 获取每小时价格security()
。但随后您在较低的时间框架图表上计算 RSI。这样你就会得到一个尖尖的 RSI,因为你最终计算的 RSI 远远超出了需要。
要解决此问题,请直接在该小时时间范围内计算 RSI,security()
如下所示:
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')