错误 - 安全功能没有副作用 - TradingView pine 脚本

Error - security function no side effects - TradingView pine script

我写这篇文章是为了从 1W 时间范围内获取一个变量,以便在更短的时间范围内使用。

我用历史上的2个点画了一条线,然后我得到了当前柱线的值。

我在时间范围 1W 上画线,它连接了从 bar_index[2] 到 bar_index[1] 的 2 个点,因此我可以获得该线​​当前的值bar_index(所有 3 个 bar_index 都在 1W 时间范围内)。

//@version=4

msma = sma(close, 14)
var msma_line = line.new(bar_index[1], high[1], bar_index, low, extend = extend.right)
line.set_xy1(msma_line, bar_index[2], msma[2])
line.set_xy2(msma_line, bar_index[1], msma[1])
msma_point = line.get_price(msma_line,bar_index)

W_1 =  security(syminfo.tickerid, "1W", msma_point, barmerge.gaps_off, barmerge.lookahead_on)

现在我得到了当前周的那个值 (V),我转到时间范围 4H,我想看到那个 (V) 值,将它存储在一个变量中,这样我就可以将它与当前时间进行比较关闭。

if (close > W_1)
  // here is what to do with the comparaison

但是我遇到了错误

'expression' argument of security function should have no side effects

这是什么意思?

如何在较短的时间范围内使用 W_1 变量?

问题是 msma 是在较低的时间范围内生成的,使用它应该可以解决问题

msma = security(syminfo.tickerid,"1w",sma(close, 14))
var msma_line = line.new(bar_index[1], high[1], bar_index, low, extend = extend.right)
line.set_xy1(msma_line, bar_index[2], msma[2])
line.set_xy2(msma_line, bar_index[1], msma[1])
msma_point = line.get_price(msma_line,bar_index)

好的,在多次尝试失败后,我找到了一种方法,可以在任何较低的时间范围内获得相同的 1W 线点值:

msma = sma(close, 14)

[Wmsma, Wmsma_1, Wmsma_2] =  security(syminfo.tickerid, "1W", [msma, msma[1], msma[2]], barmerge.gaps_off, barmerge.lookahead_on)

anynumber = 42 // any number >= 42 will work, but because Im on the 4H chart, so I set it == 42, because there are 42 bars of 4H per week
anynumber2 = anynumber + anynumber

var msma_line = line.new(bar_index[1], high[1], bar_index, low, extend = extend.right)
line.set_xy1(msma_line, bar_index[anynumber2], Wmsma_2)
line.set_xy2(msma_line, bar_index[anynumber], Wmsma_1)
msma_point = line.get_price(msma_line,bar_index)