Как нарисовать вертикальную линию в скрипте TradingView Pine?

Я пытаюсь использовать веб-платформу TradingView, чтобы создавать собственные сценарии для отображения различных свойств финансового рынка. . Это возможно с помощью его скриптового движка / интерпретатора pine.

На данный момент я пытаюсь просто отобразить вертикальную линию либо на основном графике, либо на графике индикатора. Однако не похоже, что их скриптовый движок поддерживает вертикальные линии, за исключением использования типов histogram или column графика. В любом случае, я не могу получить удовлетворительных строк.


НЕКОТОРЫЕ ИСПЫТАНИЯ

(1) У меня были небольшие успехи в использовании bgcolor(), например:

//@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)

Это приводит к:

введите здесь описание изображения

(2) Намного лучший результат при использовании plot() с аргументом style=histogram:

//@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)

со следующим результатом:

введите здесь описание изображения


person not2qubit    schedule 02.12.2017    source источник
comment
Привет. Вы знаете, как провести вертикальную линию в определенный день? например plot (timestamp (2018, 02, 13, 12, 00), linewidth = 3, color = green, style = histogram) --- Но на графике нет линии :)   -  person Esperanz0    schedule 13.02.2018
comment
Уверен, можно, но в сосновом скрипте сделать это непросто. Загляните в документацию и дайте нам знать!   -  person not2qubit    schedule 14.02.2018


Ответы (4)


Если кого-то интересует новая функция v4 line.new():

Примечание. Отрегулируйте LineLengthMult по своему усмотрению.

// 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 с вертикальными линиями по marketcripters.com

РЕДАКТИРОВАТЬ: ответ обновлен кодом, который автоматически масштабирует вертикальные линии.

person André    schedule 07.07.2020
comment
Наконец-то прогресс! - person not2qubit; 07.07.2020
comment
Если вы получаете несколько строк, когда вам нужна только первая, добавьте в свой код: line.delete(myLine[1]) - person carloswm85; 01.02.2021

Это старый пост, но он может помочь другим. Вы можете использовать это, чтобы нарисовать линию:

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

Но пунктирную линию провести не удалось.

person Dany Chamoun    schedule 07.07.2018

Ответ Дэни ничего не отобразил на диаграмме для меня, однако установка стиля на гистограмму сработала.

//@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)
person stas.ivash    schedule 01.02.2019

Используйте bgcolor() и color(), например:

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

Он рисует линию в каждом столбце, но обратите внимание, что в случае false цвет имеет значение прозрачности 100. Ничего не отображается, кроме полос для случая true.

person givanse    schedule 14.06.2019