【发布时间】:2018-10-30 23:06:00
【问题描述】:
如果我想比较今天的收盘价和过去 4 天的高点,格式是什么?我用过
_hi = close > high[4] ? 1 : 0
但这仅计算 4 天前的高点,而不是中间的几天。我试过了
_hi = close > high[1,2,3,4] ? 1 : 0
错误信息
【问题讨论】:
标签: pine-script
如果我想比较今天的收盘价和过去 4 天的高点,格式是什么?我用过
_hi = close > high[4] ? 1 : 0
但这仅计算 4 天前的高点,而不是中间的几天。我试过了
_hi = close > high[1,2,3,4] ? 1 : 0
错误信息
【问题讨论】:
标签: pine-script
您可以为此目的使用highest()。
highest(source, length) → series
但你需要小心。 close > highest(close, 4) 永远不能是 true。因为,如果当前柱线的收盘价是这 4 根柱线中最高的,highest() 将返回当前柱线的收盘价。因此,该检查将是close > close,这永远不会是真的。
您可以使用close > highest(nz(close[1]), 4) 或close == highest(close, 5)(它是5,因为当前柱也包括在内。但您想比较前4 柱)。
看看下面的代码和图表。一种使用close > highest(nz(close[1]), 4),另一种使用close == highest(close, 5)。如您所见,输出是相同的。
//@version=3
study(title="Compare 2", overlay=true)
_hi = close > highest(nz(close[1]), 4)
plotshape(series=_hi, title="_hi", text="hi", style=shape.triangleup, location=location.belowbar, color=green, size=size.small, transp=40)
【讨论】:
nz() 将“不是数字”NaN 值替换为 zeros。尝试绘制close[1] 并尽可能达到最高时间范围。然后寻找第一个栏。它没有值 (NaN)。因为,它是第一根柱线,close[1] 询问前一根柱线的收盘价。但此时没有先前的酒吧。这就是为什么你会得到n/a。现在,尝试绘制nz(close[1]) 并寻找第一个条。这次你会得到一个0。因此,NaN 将被 0 替换。因此,使用 nz() 包装历史值始终是一种好习惯,因此您的计算应该是安全的。