在 Pine Script TradingView 中带有 if 语句的 line.new 时的值 [英] n/a value when line.new with if statement in Pine Script TradingView
问题描述
我想创建一个指标,显示收盘价何时越过趋势线.
I wanted to create an indicator that shows when a close crossed over a trend line.
这是代码,这里是趋势线交叉"应该在交叉条上显示 1.00,在其他条上显示 0.00.但实际上这仅在最后一个条形(和连续区域)上显示 0.00,而在其他条形上显示 n/a .
Here's the code, here "trendLineCrossover" should show 1.00 on crossover bar and 0.00 on other bars. But actually this shows me 0.00 only on the last bar (and the consecutive area) and on other bars it shows n/a .
lineObj = if (syminfo.tickerid == "BINANCE:SRMUSDT")
if (barstate.islast)
line.new(x1=3380-89, y1=0.9609, x2=3380 , y2=1.0216)
line.set_extend(id=lineObj, extend=extend.right)
trendLine = line.get_price(lineObj, 0)
trendLineCrossover = crossover(close, trendLine)
plotshape(trendLineCrossover, title="trendLineCrossover", color=color.purple, style=shape.xcross)
如何修复代码以显示预期结果?谢谢.
How can I fix the code to show the expected result? Thanks.
推荐答案
这里我们在 x2
条 3380 上画线,并在评估的条件中包含 barstate.islast
在每个条形上,因为在 if
块内封闭您的画线调用不会使检测交叉成为可能:
Here we draw your line on the x2
bar no 3380 and include barstate.islast
in conditions evaluated on every bar, as enclosing your line drawing call inside the if
block will not make the detection of crossovers possible:
//@version=4
study("", "", true, max_bars_back = 5000)
var line lineObj = na
trendLineCrossover = false
if (syminfo.tickerid == "BINANCE:SRMUSDT") and bar_index == 3380
lineObj := line.new(x1=bar_index-89, y1=0.9609, x2=bar_index , y2=1.0216, extend=extend.right)
trendLine = line.get_price(lineObj, bar_index)
trendLineCrossover := barstate.islast and crossover(close, trendLine)
plotshape(trendLineCrossover, title="trendLineCrossover", color=color.purple, style=shape.xcross)
// For validation only.
c = close < trendLine
plotchar(c, "c", "•", location.top, size = size.tiny)
// Show bg starting at the bar where we draw our line.
bgcolor(bar_index > 3380-89 ? color.silver : na)
//@version=4
study("", "", true)
var line lineObj = na
if (syminfo.tickerid == "BINANCE:SRMUSDT") and bar_index == 3380
lineObj := line.new(x1=bar_index-89, y1=0.9609, x2=bar_index , y2=1.0216, extend=extend.right)
trendLine = line.get_price(lineObj, bar_index)
trendLineCrossover = crossover(close, trendLine)
plotshape(trendLineCrossover, title="trendLineCrossover", color=color.purple, style=shape.xcross)
// —————— For validation only.
// Bar no.
plotchar(bar_index, "bar_index", "", location.top, size = size.tiny)
// Plots the value returned by line.get_price() so you can see when it becomes available.
plot(trendLine, "trendLine", color.blue, 6, transp = 60)
// Show bg starting at the bar where where the line is drawn.
bgcolor(bar_index > 3380 ? color.silver : na)
这篇关于在 Pine Script TradingView 中带有 if 语句的 line.new 时的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!