Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Plotting previous day high/low/close using pine script

Tags:

pine-script

I have a pine script to draw previous day high/open/low as shown below:

//@version=4
strategy("Plot Lines", overlay=true)

PDH = security(syminfo.tickerid,"D",high)
PDO = security(syminfo.tickerid,"D",open)
PDL = security(syminfo.tickerid,"D",low)

plot(PDH, title="High",color=color.red,linewidth=2,trackprice=true)
plot(PDO, title="Open",color=color.yellow,linewidth=2,trackprice=true)
plot(PDL, title="Low",color=color.green,linewidth=2,trackprice=true)

The script work well but I only want previous day to be shown and ignore the others day before previous day so that the chart will not be that messy.

This is what I get from the script above: enter image description here

As you can see, it plot the PDH/PDO/PDL for every previous day, but I just want previous day (one day) only. Any help or advice will be greatly appreciated!

New Edited enter image description here

Result after apply the script enter image description here

like image 492
weizer Avatar asked Nov 02 '25 01:11

weizer


1 Answers

Great answer by @vitruvius, but I wanted to add a little something.
There's no need to draw lines and remove the old ones. You can just define them once, and move them on the last bar. Also, the values can be requested in one single security() call.

//@version=5
indicator("Plot Lines", overlay=true)

f_newLine(_color) => line.new(na, na, na, na, xloc.bar_time, extend.right, _color)

f_moveLine(_line, _x, _y) =>
    line.set_xy1(_line, _x,   _y)
    line.set_xy2(_line, _x+1, _y)

var line    line_open = f_newLine(color.yellow)
var line    line_high = f_newLine(color.red)
var line    line_low  = f_newLine(color.green)

[pdo,pdh,pdl] = request.security(syminfo.tickerid,"D", [open,high,low])

if barstate.islast
    f_moveLine(line_open, time, pdo)
    f_moveLine(line_high, time, pdh)
    f_moveLine(line_low , time, pdl)

Edit 1

//@version=5
indicator("Plot Lines", overlay=true)

f_newLine(_color) => line.new(na, na, na, na, xloc.bar_time, extend.right, _color)

f_moveLine(_line, _x, _y) =>
    line.set_xy1(_line, _x,   _y)
    line.set_xy2(_line, _x+1, _y)

var line    line_open = f_newLine(color.yellow)
var line    line_high = f_newLine(color.red)
var line    line_low  = f_newLine(color.green)

[pdo,pdh,pdl,pdt] = request.security(syminfo.tickerid,"D", [open[1],high[1],low[1],time[1]])

if barstate.islast
    f_moveLine(line_open, pdt, pdo)
    f_moveLine(line_high, pdt, pdh)
    f_moveLine(line_low , pdt, pdl)
like image 146
Bjorn Mistiaen Avatar answered Nov 04 '25 04:11

Bjorn Mistiaen



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!