当RSI保持在70以上时,我想数数RSI线产生的“峰”数,然后在其中5次出现时(即5次出现在70以下之前)绘制一个形状。
目前的峰值被定义为RSI自上一条以来不断上升。
在这个例子中,计数将是3(不足以触发正在绘制的形状,但只是为了清楚)。

一旦电平降至70以下,计数将停止/重置;即下次出现高于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.不知道那里发生了什么。rsiPeaksOver70 = 5,但这失败了。发布于 2020-10-25 10:48:01
这是一个计算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)https://stackoverflow.com/questions/64435007
复制相似问题