更改线图的位置

Changing location of line plots

我已经编写了一个代码来绘制自定义时间范围的高点和低点。线图是通过以下代码完成的

study(title="Neowave Charts v.1", overlay = true, max_lines_count =100)
//Define variables
string      res = input("D")
var float   h_price = na
var float   l_price = na
var int     h_date = na
var int     l_date = na
var line    z = na
var line    w = na
bool        isnewtbar = change(time(res)) > 0

//getting lines
if isnewtbar and bar_index > 1 
    h_price := high
    l_price := low
    h_date  := time
    l_date  := time
    z       := line.new(x1=h_date, y1=h_price, x2=l_date, y2=l_price, xloc=xloc.bar_time, extend=extend.none, color=color.black, style=line.style_solid, width=2)
    w       := line.new(x1=line.get_x2(z[1]), y1=line.get_y2(z[1]), x2=l_date, y2=l_price, xloc=xloc.bar_time, extend=extend.none, color=color.black, style=line.style_solid, width=2)

if high > h_price
    h_price := high
    h_date := time 
    h_price


if low < l_price
    l_price := low
    l_date := time

if h_date <= l_date
    line.set_xy1(id=z, x=h_date, y=h_price)
    line.set_xy2(id=z, x=l_date, y=l_price)
    line.set_color(id=z, color=color.red)
  
else
    line.set_xy1(id=z, x=l_date, y=l_price)
    line.set_xy2(id=z, x=h_date, y=h_price)
    line.set_color(id=z, color=color.lime)

line.set_xy2(id=w, x=line.get_x1(z[0]), y=line.get_y1(z[0]))
line.set_color(id=w, color=color.blue)

我想把x1和x2的位置改到时间段的中点和末尾,请给barindex或bartime什么参考。

当前图片是这样的

我要这样

也许有更优雅的解决方案,但我尝试对您的原始脚本进行最少的更改。

//@version=4
study(title="Help (Neowave Charts v.1)", overlay = true, max_lines_count =100)
//Define variables
string      res = input("D")
var float   h_price = na
var float   l_price = na
var int     h_date = na
var int     l_date = na
var line    z = na
var line    w = na
bool        isnewtbar = change(time(res)) > 0

var int     count = 0
var int     beg_time = na
var int     delta = na


//getting lines
if isnewtbar and bar_index > 1 
    h_price := high
    l_price := low
    h_date  := time
    l_date  := time
    z       := line.new(x1=h_date, y1=h_price, x2=l_date, y2=l_price, xloc=xloc.bar_time, extend=extend.none, color=color.black, style=line.style_solid, width=2)
    w       := line.new(x1=line.get_x2(z[1]), y1=line.get_y2(z[1]), x2=l_date, y2=l_price, xloc=xloc.bar_time, extend=extend.none, color=color.black, style=line.style_solid, width=2)
    beg_time:= time
    count   := 0
else 
    count := count + 1

if high > h_price
    h_price := high
    h_date := time 
    h_price


if low < l_price
    l_price := low
    l_date := time


if timeframe.isminutes
    delta := (count - count%2)/2*timeframe.multiplier*1000*60

if h_date <= l_date
    line.set_xy1(id=z, x=beg_time + delta, y=h_price)
    line.set_xy2(id=z, x=time, y=l_price)
    line.set_color(id=z, color=color.red)
  
else
    line.set_xy1(id=z, x=beg_time + delta, y=l_price)
    line.set_xy2(id=z, x=time, y=h_price)
    line.set_color(id=z, color=color.lime)

line.set_xy2(id=w, x=line.get_x1(z[0]), y=line.get_y1(z[0]))
line.set_color(id=w, color=color.blue)