簡體   English   中英

(Tradingview - Pine Script v5) v2 到 v5 自引用變量錯誤

[英](Tradingview - Pine Script v5) v2 to v5 self referencing variable error

我嘗試將 pine v2 轉換為 v5,但第 32 行不斷出現錯誤:未聲明的標識符“pos” (下面的完整代碼),有點迷失了處理這樣的自引用變量。

提前致謝

// This is code from pine v2
// sigpre1 = iff(xHigh <= xLowD, -1,
//   iff(xLow >= xHighD, 1, nz(pos[1], 0)))

sigpre1 = xHigh <= xLowD ? -1 : xLow >= xHighD ? 1 : nz(pos[1], 0)

// This is code from pine v2
// sigpre2 = iff( xHigh <= xHighD, -1,
//   iff(xLow >= xLowD, 1, nz(pos[1], 0)))

sigpre2 = xHigh <= xHighD ? -1 : xLow >= xLowD ? 1 : nz(pos[1], 0)
pos = SigVal ? sigpre1 : sigpre2

// This is code from pine v2
// possig = iff(reverse and pos == 1, -1,
        //   iff(reverse and pos == -1, 1, pos))

這是 v2 完整代碼:

//@version=2
strategy(title="[Learning] Support Resistance", overlay = true)
width = input(2, minval=1)
SigVal = input(true, title="To Line \ From Line")
reverse = input(false, title="Trade reverse")
xLow = low
xHigh = high
xHighD = security(tickerid,"W", high[1])
xLowD  = security(tickerid,"W", low[1])
sigpre1 = iff(xHigh <= xLowD, -1,
   iff(xLow >= xHighD, 1, nz(pos[1], 0))) 
sigpre2 = iff( xHigh <= xHighD, -1,
   iff(xLow >= xLowD, 1, nz(pos[1], 0))) 
pos = SigVal ? sigpre1 : sigpre2
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))      
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)         
barcolor(possig == -1 ? red: possig == 1 ? green : blue )
plot(xLowD, color=green, title="S", style = circles, linewidth = width)
plot(xHighD, color=red, title="R", style = circles, linewidth = width)

問題是pos稍后在代碼中定義。 但是還有一個問題。 從 v3 開始, security() function 的lookahead參數的默認值已更改為barmerge.lookahead_off 所以,在 v2 中,它是barmerge.lookahead_on ,你也應該在 v5 中使用它。

//@version=5
strategy(title="[Learning] Support Resistance", overlay = true)

width = input.int(2, 'Widht',minval=1)
SigVal = input.bool(true, title="To Line \ From Line")
reverse = input.bool(false, title="Trade reverse")
xLow = low
xHigh = high
xHighD = request.security(syminfo.tickerid,"W", high[1], lookahead=barmerge.lookahead_on)
xLowD  = request.security(syminfo.tickerid,"W", low[1], lookahead=barmerge.lookahead_on)
pos=0
// This is code from pine v2
// sigpre1 = iff(xHigh <= xLowD, -1,
//   iff(xLow >= xHighD, 1, nz(pos[1], 0)))

sigpre1 = xHigh <= xLowD ? -1 : xLow >= xHighD ? 1 : nz(pos[1], 0)

// This is code from pine v2
// sigpre2 = iff( xHigh <= xHighD, -1,
//   iff(xLow >= xLowD, 1, nz(pos[1], 0)))

sigpre2 = xHigh <= xHighD ? -1 : xLow >= xLowD ? 1 : nz(pos[1], 0)
pos := SigVal ? sigpre1 : sigpre2

// This is code from pine v2
// possig = iff(reverse and pos == 1, -1,
        //   iff(reverse and pos == -1, 1, pos))

possig = reverse and pos == 1 ? -1 : reverse and pos == -1 ? 1 : pos


if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)
    
barcolor(possig == -1 ? color.red : possig == 1 ? color.green : color.blue )

plot(xLowD, color=color.green, title="S", style =plot.style_circles, linewidth = width)
plot(xHighD, color=color.red, title="R", style =plot.style_circles, linewidth = width)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM