[英]TradingView v1 to v4 iff statements Pine Script
我正在嘗試將 TradingView 的股票 ATR 停止腳本(內置於 Pine Script v1 中)集成到我自己的 v4 代碼中,這導致以下 iff 語句出現錯誤“輸入'行尾沒有行繼續'的語法錯誤”。
有人可以幫我將這些行翻譯成 v4 兼容的代碼嗎?
注意:正如帖子標題所暗示的那樣,此代碼有效,但僅在 Pine Script v1 中,我正在嘗試將其調整為 v4,我認為這需要 if else 語句而不是 iff 語句。
//@version=1
study(title="ATR Stop", overlay = true)
nATRPeriod = input(5)
nATRMultip = input(2.5)
xATR = atr(nATRPeriod)
nLoss = nATRMultip * xATR
xATRTrailingStop = iff(close > nz(xATRTrailingStop[1], 0) and close[1] > nz(xATRTrailingStop[1], 0), max(nz(xATRTrailingStop[1]), close - nLoss),
iff(close < nz(xATRTrailingStop[1], 0) and close[1] < nz(xATRTrailingStop[1], 0), min(nz(xATRTrailingStop[1]), close + nLoss),
iff(close > nz(xATRTrailingStop[1], 0), close - nLoss, close + nLoss)))
pos = iff(close[1] < nz(xATRTrailingStop[1], 0) and close > nz(xATRTrailingStop[1], 0), 1,
iff(close[1] > nz(xATRTrailingStop[1], 0) and close < nz(xATRTrailingStop[1], 0), -1, nz(pos[1], 0)))
color = pos == -1 ? red: pos == 1 ? green : blue
plot(xATRTrailingStop, color=color, title="ATR Trailing Stop")
試試這個,我認為你的問題是你放在最后的逗號。 IFF 可以有 2 個可能的結果,您將它們放在第一行本身。 那為什么要加逗號呢?
也使用適當的縮進
xATRTrailingStop = iff(close > nz(xATRTrailingStop[1], 0) and close[1] > nz(xATRTrailingStop[1], 0), max(nz(xATRTrailingStop[1]), close - nLoss)
iff(close < nz(xATRTrailingStop[1], 0) and close[1] < nz(xATRTrailingStop[1], 0), min(nz(xATRTrailingStop[1]), close + nLoss)
iff(close > nz(xATRTrailingStop[1], 0), close - nLoss, close + nLoss)))
pos = iff(close[1] < nz(xATRTrailingStop[1], 0) and close > nz(xATRTrailingStop[1], 0), 1,
iff(close[1] > nz(xATRTrailingStop[1], 0) and close < nz(xATRTrailingStop[1], 0), -1, nz(pos[1], 0)))
PS:如果這不起作用,請嘗試再次編寫代碼,如果可能的話使用if else
,您將能夠正確看到嵌套。 不要忘記縮進
下面是 v4 的代碼。 縮進很重要。
//@version=4
study(title="ATR Stop", overlay = true)
nATRPeriod = input(5)
nATRMultip = input(2.5)
var float xATRTrailingStop = na
var int pos = na
xATR = atr(nATRPeriod)
nLoss = nATRMultip * xATR
xATRTrailingStop := iff(close > nz(xATRTrailingStop[1], 0) and close[1] > nz(xATRTrailingStop[1], 0),
max(nz(xATRTrailingStop[1]), close - nLoss),
iff(close < nz(xATRTrailingStop[1], 0) and close[1] < nz(xATRTrailingStop[1], 0),
min(nz(xATRTrailingStop[1]), close + nLoss),
iff(close > nz(xATRTrailingStop[1], 0),
close - nLoss,
close + nLoss)))
pos := iff(close[1] < nz(xATRTrailingStop[1], 0) and close > nz(xATRTrailingStop[1], 0),
1,
iff(close[1] > nz(xATRTrailingStop[1], 0) and close < nz(xATRTrailingStop[1], 0),
-1,
nz(pos[1], 0)))
atrColor = pos == -1 ? color.red : pos == 1 ? color.green : color.blue
plot(xATRTrailingStop, "ATR Trailing Stop", atrColor)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.