Pine script 1秒图表上的tradingview pinescript 15分钟数据不能将安全函数中的可变变量用作参数

Pine script 1秒图表上的tradingview pinescript 15分钟数据不能将安全函数中的可变变量用作参数,pine-script,Pine Script,我需要在1秒图表上使用此指示器,并使用15分钟图表中的数据。 我尝试使用安全函数,但这给了我一个错误:不能使用可变变量作为安全函数的参数“ 我不能简单地将深度从7更改为6300以得到我想要的结果,因为这太多蜡烛无法处理。 所以我尝试使用安全功能,但无法使其工作 我将非常感谢您的帮助。您有两个问题: last_l变量是一个可变变量(使用:=重新分配),因此其计算需要封装在一个函数中,然后可以使用安全性()调用该函数 这是最重要的问题。你在计算条形偏移量,但HTF的条形偏移量无法在图表的时间范围内转

我需要在1秒图表上使用此指示器,并使用15分钟图表中的数据。 我尝试使用安全函数,但这给了我一个错误:不能使用可变变量作为安全函数的参数“

我不能简单地将深度从7更改为6300以得到我想要的结果,因为这太多蜡烛无法处理。 所以我尝试使用安全功能,但无法使其工作


我将非常感谢您的帮助。

您有两个问题:

  • last_l
    变量是一个可变变量(使用
    :=
    重新分配),因此其计算需要封装在一个函数中,然后可以使用
    安全性()调用该函数
  • 这是最重要的问题。你在计算条形偏移量,但HTF的条形偏移量无法在图表的时间范围内转换。15分钟时10条的偏移量在1S时意味着什么?无法判断,因为在图表的分辨率下,15分钟TF的1S放大中会有不同数量的条形

  • 像MTF Ichimokus或pivot脚本这样的脚本总是会遇到问题2。没有完美的方法来解决这个难题。展示了如何在图表的过去条形图中查找HTF中标识的pivot值的最接近值。这是一种折衷方案,可能不适用于所有情况。

    感谢您的指示。很好,shows最后一个低点就像锯齿形一样,在1s图表中有正确的设置。我想我可以让它在我的策略中起作用。再次感谢你,这将为我节省一些钱。
    //@version=4
    
    ////////
    // Fetch Ingredients 
    // [
    Depth       = input(7, "Depth", input.integer, minval=1, step=1)
    Deviation   = input(5, "Deviation", input.integer, minval=1, step=1)
    Backstep    = input(2, "Backstep", input.integer, minval=2, step=1)
    line_thick  = input(2, "Line Thickness", input.integer, minval=1, maxval=4)
    upcolor     = input(color.lime, "Bull Color")
    dncolor     = input(color.red, "Bear Color")
    repaint     = input(true, "Repaint Levels")
    // ]
    
    
    //////// 
    // Bake
    // [
    var last_h = 1, last_h := last_h + 1
    var last_l = 1, last_l := last_l + 1
    var lw = 1, var hg = 1
    lw := lw + 1, hg := hg + 1
    p_lw = -lowestbars(Depth), p_hg = -highestbars(Depth)
    lowing = lw == p_lw or low - low[p_lw] > Deviation*syminfo.mintick
    highing = hg == p_hg or high[p_hg] - high > Deviation*syminfo.mintick
    lh = barssince(not highing[1]), ll = barssince(not lowing[1])
    down = barssince(not (lh > ll)) >= Backstep, lower = low[lw] > low[p_lw], higher = high[hg] < high[p_hg]
    if lw != p_lw and (not down[1] or lower)
        lw := p_lw < hg ? p_lw : 0
    if hg != p_hg and (down[1] or higher)
        hg := p_hg < lw ? p_hg : 0
    
    line zz = na
    label point = na
    x1 = down ? lw : hg
    y1 = down ? low[lw] : high[hg]
    
    if down == down[1]
        if repaint
            label.delete(point[1])
            line.delete(zz[1])
        down
    if down != down[1]
        if down
            last_h := hg
        else
            last_l := lw
        if not repaint
            nx = down?last_h:last_l
            zz := line.new(bar_index-nx, down ? high[nx] : low[nx], bar_index-(down?last_l:last_h), down ? low[last_l] : high[last_h], width=line_thick, color=down?upcolor:dncolor)
            point := label.new(bar_index-nx, down ? high[nx] : low[nx], down ? (high[nx] > high[last_h[1]]?"HH":"LH") : (low[nx] < low[last_l[1]] ? "LL" : "HL"), style=down?label.style_label_down:label.style_label_up, size=size.tiny, color=down?dncolor:upcolor, textcolor=color.black, tooltip = down ? (high[nx] > high[last_h[1]]?"Higher High":"Lower High") : (low[nx] < low[last_l[1]] ? "Lower Low" : "Higher Low"))
        down
    if repaint
        zz := line.new(bar_index-(down?last_h:last_l), down ? high[last_h] : low[last_l], bar_index-x1, y1, width=line_thick, color=down?dncolor:upcolor)
        point := label.new(bar_index-x1, y1, down ? (low[x1] < low[last_l] ? "LL" : "HL") : (high[x1] > high[last_h]?"HH":"LH"), style=down?label.style_label_up:label.style_label_down, size=size.tiny, color=down?upcolor:dncolor, textcolor=color.black, tooltip = down ? (low[x1] < low[last_l] ? "Lower Low" : "Higher Low") : (high[x1] > high[last_h]?"Higher High":"Lower High"))
    // ]
    
    low[x1] > low[last_l]