【问题标题】:Mutable variable + security function - tradingview pine error可变变量 + 安全函数 - tradingview pine 错误
【发布时间】:2021-06-08 12:19:01
【问题描述】:

我收到错误:不能使用可变变量作为安全函数的参数

这是显示 3 条线作为阻力线、中间线和支撑线的代码。

//@version=4

srch = input(high, "Highs Source")
srcl = input(low, "Lows Source")
mn = input(21, "Short Range", minval=1)
F = input(5, "Long Range Factor", minval=2)
mx = min(mn * F, 300) // necessary to avoid PineScript's hardcoded iteration-limit on looped code
mn := floor(mx / F)
of = input(0, "Offset", minval=0)
mx := mx + of
mn := mn + of
nr = input(2, "Noise Reduction", minval=0)
sm = nr + 1
exp = input(false, "Use logarithmic scale")
sr = input(true, "Show Resistance (Red)")
ss = input(true, "Show Support (Green)")
sa = input(true, "Show Average (Yellow)")
rl = input(true, "Show Reference Lines")
cr = input(false, "Show Criss-cross")
tl = input(false, "Show Trace Lines")

SRCH = ema(srch, sm)
SRCL = ema(srcl, sm)

gap = 2

hhh = 0.0
lll = 1000000000000.0

mx4 = 100

h2 = hhh
th2 = 0
l2 = lll
tl2 = 0
h1 = hhh
th1 = 0
l1 = lll
tl1 = 0
for i = of to mx
    if i > mn - gap // find closest high and low
        h2 := max(h2, SRCH[i])
        if h2 == SRCH[i]
            th2 := i
        l2 := min(l2, SRCL[i])
        if l2 == SRCL[i]
            tl2 := i
    
    if i < mn + gap // find farthest high and low
        h1 := max(h1, SRCH[i])
        if h1 == SRCH[i]
            th1 := i
        l1 := min(l1, SRCL[i])
        if l1 == SRCL[i]
            tl1 := i

a1 = avg(h1, l1)
ta1 = round(avg(th1, tl1))
a2 = avg(h2, l2)
ta2 = round(avg(th2, tl2))

PLT(P1, P2, T1, T2) =>
    if exp
        t = T1 - T2
        slope = (log10(P1) - log10(P2)) / (0 - t)
        y = slope * T1 + log10(P1)
        pow(10, y)
    else
        ((P2 - P1) / (T1 - T2)) * (T2) + P2

PLC = (barstate.islast or tl) and of == 0

Resistance_line_red = PLC ? PLT(h1, h2, th1, th2) : na
Support_line_green = PLC ? PLT(l1, l2, tl1, tl2) : na
Average_line_orange = PLC ? PLT(a1, a2, ta1, ta2) : na

sty =  tl ? plot.style_stepline : plot.style_circles
lin = tl ? 1 : 2 

plot(Resistance_line_red, "Resistance point", color=#ff0088, transp=0, style=sty, linewidth=lin)
plot(Average_line_orange, "Avg point", color=#000000, transp=0, style=sty, linewidth=lin)
plot(Support_line_green, "Support point", color=#00ff88, transp=0, style=sty, linewidth=lin)

L(T1, H1, T2, H2, CLR, W, X) =>
    line.new(bar_index - max(T1, 0), H1, bar_index - max(T2, 0), H2, color=CLR, width=W, extend=X ? extend.both : extend.none)

//RED
L1b = L(th1, h1, th2, h2, #ff0088, 1, true), line.delete(L1b[1])
L1a = L(th1, h1, th2, h2, #ff0088, 3, false), line.delete(L1a[1])

//GREEN
L2b = L(tl1, l1, tl2, l2, #00ff88, 1, true), line.delete(L2b[1])
L2a = L(tl1, l1, tl2, l2, #00ff88, 3, false), line.delete(L2a[1])

//ORANGE
L3b = L(ta1, a1, ta2, a2, #ff8800, 1, true), line.delete(L3b[1])
L3a = L(ta1, a1, ta2, a2, #ff8800, 3, false), line.delete(L3a[1])

我在写这篇文章时遇到了错误

red_W =  security(syminfo.tickerid, "1W", Resistance_line_red, barmerge.gaps_off, barmerge.lookahead_on)

green_W =  security(syminfo.tickerid, "1W", Support_line_green, barmerge.gaps_off, barmerge.lookahead_on)

orange_W =  security(syminfo.tickerid, "1W", Average_line_orange, barmerge.gaps_off, barmerge.lookahead_on)

我已经阅读了许多类似的问题,以了解我可能需要将它们全部放入一个函数中,因此它可能会起作用,但我不知道如何应用于此特定代码。

请帮忙,我想让它们在较低的时间范围图表中使用,如下所示:

if (close < red_W) 
   //
if (close < green_W) 
   //
if (close < orange_W) 
   //

【问题讨论】:

    标签: charts pine-script trading


    【解决方案1】:

    我试过你的代码。
    它似乎没有抛出任何错误。

    //@version=4
    study("test", "test", true)
    
    srch = input(high, "Highs Source")
    srcl = input(low, "Lows Source")
    mn = input(21, "Short Range", minval=1)
    F = input(5, "Long Range Factor", minval=2)
    mx = min(mn * F, 300) // necessary to avoid PineScript's hardcoded iteration-limit on looped code
    mn := floor(mx / F)
    of = input(0, "Offset", minval=0)
    mx := mx + of
    mn := mn + of
    nr = input(2, "Noise Reduction", minval=0)
    sm = nr + 1
    exp = input(false, "Use logarithmic scale")
    sr = input(true, "Show Resistance (Red)")
    ss = input(true, "Show Support (Green)")
    sa = input(true, "Show Average (Yellow)")
    rl = input(true, "Show Reference Lines")
    cr = input(false, "Show Criss-cross")
    tl = input(false, "Show Trace Lines")
    
    
    
    SRCH = ema(srch, sm)
    SRCL = ema(srcl, sm)
    
    gap = 2
    
    hhh = 0.0
    lll = 1000000000000.0
    
    mx4 = 100
    
    h2 = hhh
    th2 = 0
    l2 = lll
    tl2 = 0
    h1 = hhh
    th1 = 0
    l1 = lll
    tl1 = 0
    for i = of to mx
        if i > mn - gap // find closest high and low
            h2 := max(h2, SRCH[i])
            if h2 == SRCH[i]
                th2 := i
            l2 := min(l2, SRCL[i])
            if l2 == SRCL[i]
                tl2 := i
        
        if i < mn + gap // find farthest high and low
            h1 := max(h1, SRCH[i])
            if h1 == SRCH[i]
                th1 := i
            l1 := min(l1, SRCL[i])
            if l1 == SRCL[i]
                tl1 := i
    
    a1 = avg(h1, l1)
    ta1 = round(avg(th1, tl1))
    a2 = avg(h2, l2)
    ta2 = round(avg(th2, tl2))
    
    PLT(P1, P2, T1, T2) =>
        if exp
            t = T1 - T2
            slope = (log10(P1) - log10(P2)) / (0 - t)
            y = slope * T1 + log10(P1)
            pow(10, y)
        else
            ((P2 - P1) / (T1 - T2)) * (T2) + P2
    
    PLC = (barstate.islast or tl) and of == 0
    
    Resistance_line_red = PLC ? PLT(h1, h2, th1, th2) : na
    Support_line_green = PLC ? PLT(l1, l2, tl1, tl2) : na
    Average_line_orange = PLC ? PLT(a1, a2, ta1, ta2) : na
    
    red_W =  security(syminfo.tickerid, "1W", Resistance_line_red, barmerge.gaps_off, barmerge.lookahead_on)
    green_W =  security(syminfo.tickerid, "1W", Support_line_green, barmerge.gaps_off, barmerge.lookahead_on)
    orange_W =  security(syminfo.tickerid, "1W", Average_line_orange, barmerge.gaps_off, barmerge.lookahead_on)
    
    sty =  tl ? plot.style_stepline : plot.style_circles
    lin = tl ? 1 : 2 
    
    plot(Resistance_line_red, "Resistance point", color=#ff0088, transp=0, style=sty, linewidth=lin)
    plot(Average_line_orange, "Avg point", color=#000000, transp=0, style=sty, linewidth=lin)
    plot(Support_line_green, "Support point", color=#00ff88, transp=0, style=sty, linewidth=lin)
    
    L(T1, H1, T2, H2, CLR, W, X) =>
        line.new(bar_index - max(T1, 0), H1, bar_index - max(T2, 0), H2, color=CLR, width=W, extend=X ? extend.both : extend.none)
    
    //RED
    L1b = L(th1, h1, th2, h2, #ff0088, 1, true), line.delete(L1b[1])
    L1a = L(th1, h1, th2, h2, #ff0088, 3, false), line.delete(L1a[1])
    
    //GREEN
    L2b = L(tl1, l1, tl2, l2, #00ff88, 1, true), line.delete(L2b[1])
    L2a = L(tl1, l1, tl2, l2, #00ff88, 3, false), line.delete(L2a[1])
    
    //ORANGE
    L3b = L(ta1, a1, ta2, a2, #ff8800, 1, true), line.delete(L3b[1])
    L3a = L(ta1, a1, ta2, a2, #ff8800, 3, false), line.delete(L3a[1])
    

    【讨论】:

    • 当你这样做时:plotshape((close &gt; red_W), title="Check", color=#ff00cc, text="Check", style=shape.arrowup, location=location.belowbar, size=size.huge, transp=0),你会看到错误
    猜你喜欢
    • 2020-04-18
    • 1970-01-01
    • 2020-11-14
    • 2012-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-02
    • 1970-01-01
    相关资源
    最近更新 更多