当 RSI 水平 > 70 时计算 RSI "peaks" 的数量
Counting number of RSI "peaks" while RSI level > 70
我想计算 RSI 线在 RSI 保持在 70 以上时形成的“峰值”数量,然后在其中 5 个出现时绘制一个形状(即,5 个出现在低于 70 之前)。
现在的峰值仅定义为自上一根柱线以来的 RSI 上升。
例如,在此示例中,计数将为 3(不足以触发绘制形状,但为了清楚起见)。
一旦等级低于70,计数就会stop/reset;即下一次出现高于 RSI 水平 70 的峰值时将为“1”。
这是我到目前为止尝试过的方法:
rsiPeaksOver70 = 0
myResult = for i = 1 to 5 by 1
if rsi <= 70 and rsi[1] >= rsi
break
rsiPeaksOver70 := rsiPeaksOver70 + i
plotshape(rsiPeaksOver70, style=shape.xcross, size=size.normal, location=location.bottom)
这是结果...
如果我尝试绘制为列,我会得到类似的结果(而且它实际上并没有递增;列保持相同的大小)。
当前问题:
出于某种原因,它一次只会遵守一个条件!这两个标准都是独立工作的,但是当我添加一个 and
时,它会掉落 <= 70... 不确定那里发生了什么。
我不知道如何只在计数达到 5 时绘制形状。我尝试在循环底部“返回”结果并添加 rsiPeaksOver70 = 5
plotshape 系列参数,但失败了。
这是一个计算 RSI 峰值并在计算目标数量后绘制十字的脚本。当 RSI 低于该水平时计数器重置。
我使用 RSI 级别 60 和峰值计数 3,因此更容易获得所需的峰值计数。
//@version=4
study("RSI peak count")
_rsiPeaks = 0
_overboughtLevel = input(title="RSI Level", type=input.float, defval=60, minval=0, maxval=100)
_rsiPeriod = input(title="RSI Period", type=input.integer, defval=6, minval=1)
_targetPeaks = input(title="Peaks to count until signal", type=input.integer, defval=3, minval=1, maxval=100)
_rsi = rsi(close, _rsiPeriod)
hline(_overboughtLevel, title='Overbought', color=color.blue, linestyle=hline.style_dotted)
_rsiPeaks := _rsiPeaks[1]
if(_rsi[1]<_overboughtLevel)
_rsiPeaks := 0 // reset counter if we visited under overbought level
_peak = false
if(_rsi[1]>_overboughtLevel and _rsi[1]>_rsi and _rsi[1]>_rsi[2])
_rsiPeaks := _rsiPeaks + 1 // previous rsi value was a peak
_peak := true
plotshape(_peak and _rsiPeaks == _targetPeaks ? _rsi : na, offset =-1, style=shape.xcross, color=color.fuchsia, size=size.small, location=location.bottom)
plot(_rsi)
我想计算 RSI 线在 RSI 保持在 70 以上时形成的“峰值”数量,然后在其中 5 个出现时绘制一个形状(即,5 个出现在低于 70 之前)。
现在的峰值仅定义为自上一根柱线以来的 RSI 上升。
例如,在此示例中,计数将为 3(不足以触发绘制形状,但为了清楚起见)。
一旦等级低于70,计数就会stop/reset;即下一次出现高于 RSI 水平 70 的峰值时将为“1”。
这是我到目前为止尝试过的方法:
rsiPeaksOver70 = 0
myResult = for i = 1 to 5 by 1
if rsi <= 70 and rsi[1] >= rsi
break
rsiPeaksOver70 := rsiPeaksOver70 + i
plotshape(rsiPeaksOver70, style=shape.xcross, size=size.normal, location=location.bottom)
这是结果...
如果我尝试绘制为列,我会得到类似的结果(而且它实际上并没有递增;列保持相同的大小)。
当前问题:
出于某种原因,它一次只会遵守一个条件!这两个标准都是独立工作的,但是当我添加一个
and
时,它会掉落 <= 70... 不确定那里发生了什么。我不知道如何只在计数达到 5 时绘制形状。我尝试在循环底部“返回”结果并添加
rsiPeaksOver70 = 5
plotshape 系列参数,但失败了。
这是一个计算 RSI 峰值并在计算目标数量后绘制十字的脚本。当 RSI 低于该水平时计数器重置。
我使用 RSI 级别 60 和峰值计数 3,因此更容易获得所需的峰值计数。
//@version=4
study("RSI peak count")
_rsiPeaks = 0
_overboughtLevel = input(title="RSI Level", type=input.float, defval=60, minval=0, maxval=100)
_rsiPeriod = input(title="RSI Period", type=input.integer, defval=6, minval=1)
_targetPeaks = input(title="Peaks to count until signal", type=input.integer, defval=3, minval=1, maxval=100)
_rsi = rsi(close, _rsiPeriod)
hline(_overboughtLevel, title='Overbought', color=color.blue, linestyle=hline.style_dotted)
_rsiPeaks := _rsiPeaks[1]
if(_rsi[1]<_overboughtLevel)
_rsiPeaks := 0 // reset counter if we visited under overbought level
_peak = false
if(_rsi[1]>_overboughtLevel and _rsi[1]>_rsi and _rsi[1]>_rsi[2])
_rsiPeaks := _rsiPeaks + 1 // previous rsi value was a peak
_peak := true
plotshape(_peak and _rsiPeaks == _targetPeaks ? _rsi : na, offset =-1, style=shape.xcross, color=color.fuchsia, size=size.small, location=location.bottom)
plot(_rsi)