首页 > 解决方案 > 如何在右侧放置指定的斐波那契标签,并缩短线条以不一直延伸到右侧?

问题描述

我有一个代码可以根据买入/卖出信号自动生成指定的斐波那契水平。我试图将标签放在右侧而不是左侧,并缩短线条,使它们不会一直向右延伸,但只能延伸这么多,最好让线条的开头与购买对齐/sell 印有蜡烛的蜡烛。我一生都无法弄清楚如何做到这一点。

https://www.tradingview.com/x/ShCwlfBE/

var linezerovalue = 0.0

var line236value = 0.0

var line650value = 0.0

var line1000value = 0.0

var line11383value = 0.0

var line1618value = 0.0

var line2000value = 0.0

var linedifference = 0.0



var line line0 = na

var line line236 = na

var line line650 = na

var line line1000 = na

var line line11383 = na

var line line1618 = na

var line line2000 = na





//labels

var label label0 = na

var label label236 = na

var label label650 = na

var label label1000 = na

var label label11383 = na

var label label1618 = na

var label label2000 = na







linezerovalue := buySignal ? l10 : sellSignal ? h10 : na

line1000value := buySignal ? high : sellSignal ? low : na

linedifference := abs(linezerovalue - line1000value)

line236value := buySignal ? linezerovalue + (0.236*linedifference) : sellSignal ?  
linezerovalue - (0.236*linedifference) : na

line650value := buySignal ? linezerovalue + (0.650*linedifference) : sellSignal ?  
linezerovalue - (0.650*linedifference) : na

line11383value := buySignal ? line1000value + (0.382*linedifference) : sellSignal ?  
line1000value - (0.382*linedifference) : na

line1618value := buySignal ? line1000value + (1.0*linedifference) : sellSignal ?  
line1000value - (1.0*linedifference) : na

line2000value := buySignal ? line1000value + (1.618*linedifference) : sellSignal ?  
line1000value - (1.618*linedifference) : na





if buySignal or sellSignal

line.delete(line0)

line.delete(line236)

line.delete(line650)

line.delete(line1000)

line.delete(line11383)

line.delete(line1618)

line.delete(line2000)



label.delete(label0)

label.delete(label236)

label.delete(label650)

label.delete(label1000)

label.delete(label11383)

label.delete(label1618)

label.delete(label2000)



label0 := label.new(bar_index[1], linezerovalue, text = "(SL) - " + tostring(float(linezerovalue)), xloc = xloc.bar_index, yloc=yloc.price, color = color.white, style = label.style_none, textcolor = color.white, size = size.normal)

label236 := label.new(bar_index[1], line236value, text = "(RM) - " + tostring(float(line236value)), xloc = xloc.bar_index, yloc=yloc.price, color = color.white, style = label.style_none, textcolor = color.white, size = size.normal)

label650 := label.new(bar_index[1], line650value, text = "(Entry) - " + tostring(float(line650value)), xloc = xloc.bar_index, yloc=yloc.price, color = color.white, style = label.style_none, textcolor = color.white, size = size.normal)

label1000 := label.new(bar_index[1], line1000value, text = "(Break) - " + tostring(float(line1000value)), xloc = xloc.bar_index, yloc=yloc.price, color = color.white, style = label.style_none, textcolor = color.white, size = size.normal)

label11383 := label.new(bar_index[1], line11383value, text = "(TP 1) - " + tostring(float(line11383value)), xloc = xloc.bar_index, yloc=yloc.price, color = color.white, style = label.style_none, textcolor = color.white, size = size.normal)

label1618 := label.new(bar_index[1], line1618value, text = "(TP 2) - " + tostring(float(line1618value)), xloc = xloc.bar_index, yloc=yloc.price, color = color.white, style = label.style_none, textcolor = color.white, size = size.normal)

label2000 := label.new(bar_index[1], line2000value, text = "(TP 3) - " + tostring(float(line2000value)), xloc = xloc.bar_index, yloc=yloc.price, color = color.white, style = label.style_none, textcolor = color.white, size = size.normal)



line0 := line.new(x1 = bar_index[1],y1 = linezerovalue,x2 = bar_index,y2 = linezerovalue,xloc = xloc.bar_index, extend = extend.right, color = buySignal ? color.red : color.red)

line236 := line.new(x1 = bar_index[1],y1 = line236value,x2 = bar_index,y2 = line236value,xloc = xloc.bar_index, extend = extend.right, color = buySignal ? color.fuchsia : color.fuchsia)

line650 := line.new(x1 = bar_index[1],y1 = line650value,x2 = bar_index,y2 = line650value,xloc = xloc.bar_index, extend = extend.right, color = buySignal ? color.blue: color.blue)

line1000 := line.new(x1 = bar_index[1],y1 = line1000value,x2 = bar_index,y2 = line1000value,xloc = xloc.bar_index, extend = extend.right, color = buySignal ? color.lime : color.lime)

line11383 := line.new(x1 = bar_index[1],y1 = line11383value,x2 = bar_index,y2 = line11383value,xloc = xloc.bar_index, extend = extend.right, color = buySignal ? color.green : color.green)

line1618 := line.new(x1 = bar_index[1],y1 = line1618value,x2 = bar_index,y2 = line1618value,xloc = xloc.bar_index, extend = extend.right, color = buySignal ? color.green : color.green)

line2000 := line.new(x1 = bar_index[1],y1 = line2000value,x2 = bar_index,y2 = 
    line2000value,xloc = xloc.bar_index, extend = extend.right, color = buySignal ? 
color.green : color.green)

// plot(l10, style = plot.style_linebr)

标签: pine-scripttradingview-api

解决方案


对于您的标签x值和行x2值,您可以使用bar_index + 整数,例如

label.new(x = bar_index + 50, y = ......)

并将extend行的参数更改为extend.none

标签样式还控制标签的原点,因此您可能想尝试使用label.style_label_lower_right


推荐阅读