How to draw a vertical line in TradingView pine script?
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)
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.
Related videos on Youtube
not2qubit
Updated on September 15, 2022Comments
-
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
orcolumn
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:
(2) A much better result when using
plot()
with thestyle=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:
-
Esperanz0 over 6 yearsHey. 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 almost 4 yearsFinally some progress!
-
carloswm85 over 3 yearsIn case you are getting multiple lines, when needing just the first, add to your code:
line.delete(myLine[1])