【问题标题】:Error - security function no side effects - TradingView pine script错误 - 安全功能无副作用 - TradingView pine 脚本
【发布时间】:2021-03-10 12:01:16
【问题描述】:

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

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

我在时间帧 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

但我得到了错误

安全函数的'表达式'参数应该没有副作用

这是什么意思?

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

【问题讨论】:

  • 请说明,您想在更高的时间范围内画一条线吗?您希望从更高的时间范围内获得什么价值?
  • 我编辑了我的问题来解释我需要什么

标签: pine-script trading


【解决方案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)

【讨论】:

  • 我尝试了你的建议。它仍然显示相同的错误。
  • 一旦你使用我的线路,你就不需要最后一行了,让我为你更新答案..
  • 感谢您的帮助,但它没有按预期工作。因为 bar_index[2] 不是 2 周前的柱形,而是 2 *4H 前的柱形,如果我检查 4H 的时间范围
  • 嗯,当然会这样。在计算“msma_line”时,您没有提到要获取每周图表,松树脚本如何知道要采用什么时间范围?所以它需要具有图表分辨率的那个
  • 我的建议。获取每周蜡烛的高点和低点,将它们存储在一个 avriable 中,然后绘制一条线
【解决方案2】:

好的,经过多次尝试并失败,我找到了一种方法,可以在任何较低的时间范围内获得相同的 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)

【讨论】:

    猜你喜欢
    • 2021-06-08
    • 1970-01-01
    • 2020-02-10
    • 1970-01-01
    • 1970-01-01
    • 2020-04-18
    • 1970-01-01
    • 1970-01-01
    • 2021-09-07
    相关资源
    最近更新 更多