How to draw a vertical line in TradingView pine script?

17,633

Solution 1

If anyone is interested in using the new v4 line.new() function:

Note: Adjust LineLengthMult as desired.

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © marketscripters

//@version=4
study("My Script", overlay=true)
LineLengthMult = 10
LineLength = atr(100) * LineLengthMult

drawVerticalLine(offset) =>
    line.new(bar_index[offset], low-LineLength, bar_index[offset], high+LineLength, color=color.new(color.yellow, 50), width=3)

if bar_index % 21 == 0
    drawVerticalLine(0)

tradingview chart showing vertical lines by marketscripters.com

EDIT: Answer updated with code that auto-scales the vertical lines.

Solution 2

It is an old post, but this could help others. You can use this to draw a line:

testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
plot((time==testPeriodStart)?10e20:na,color=black, linewidth=1, style=line)

I was not able to plot a dashed line though

Solution 3

Dany's answer did not display anything on the chart for me, however setting the style to a histogram did the trick.

//@version=3
study("Vertical lines", overlay=true, scale=scale.none)

plot((time == timestamp(2019,01,01,0,0)) ? 10e20 : na, 
      color = red, linewidth = 10, title = "27", style = histogram)

plot((time == timestamp(2019,01,02,0,0)) ? 10e20 : na, 
      color = green, linewidth = 10, title = "28", style = histogram)

Solution 4

Use bgcolor() and color(), example:

vline =  (n < 5710) ? na : trange("1", "0700-0701") ? vlinecol : na
bgcolor(vline ? color(black, 0) : color(white, 100))

It is painting a line on every column, but notice that on the false case the color has a transparency value of 100. Nothing renders, except the bars for the true case.

Share:
17,633

Related videos on Youtube

not2qubit
Author by

not2qubit

Updated on September 15, 2022

Comments

  • not2qubit
    not2qubit almost 2 years

    I'm trying to use the web based TradingView platform to make my own custom scripts to display various financial market properties. This is possible through its pine scripting engine/interpreter.

    At the moment I'm trying to simply display a vertical line on either the main chart or on an indicator chart. However, it doesn't seem that their scripting engine is supporting vertical lines, except by using the plot's histogram or column types. Either way, I am not able to get any satisfactory lines.


    SOME TESTS

    (1) I've had some minor success with using bgcolor() like this:

    //@version=3
    study(title="vbar1", overlay = false)
    trange(res, sess) => not na(time(res, sess))
    vlinecol = #000000 // black
    plot(n, color = na) // check last value from plot but don't display
    vline =  (n < 5710) ? na : trange("1", "0700-0701") ? vlinecol : na
    bgcolor(vline, transp=0)
    

    This results in:

    enter image description here

    (2) A much better result when using plot() with the style=histogram argument:

    //@version=3
    study(title="vbar2", overlay = true) // scale=scale.none only for overlay=true
    vlinecol = #000000 // black
    cond = barstate.islast
    bh = 10*high   // Use 10 x the window max price height for top of vbar (or use 1e20)
    bo = -10       // Set offset from last bar
    plot(cond ? bh : na, color=vlinecol, linewidth=2, offset=bo, style = histogram, transp=0)
    

    with the following result:

    enter image description here

    • Esperanz0
      Esperanz0 over 6 years
      Hey. Do You know how to draw vertical line on specific day? for ex. plot(timestamp(2018, 02, 13, 12, 00),linewidth=3,color=green, style = histogram ) --- But there is no line on chart :)
  • not2qubit
    not2qubit almost 4 years
    Finally some progress!
  • carloswm85
    carloswm85 over 3 years
    In case you are getting multiple lines, when needing just the first, add to your code: line.delete(myLine[1])