Расширение строк на pine-script

У меня есть этот код, который, как и сейчас, соединяет точки разворота вверх и вниз, но я хотел бы, чтобы линии расширялись, чтобы создавать линии тренда, а также расширялись по горизонтали, чтобы создавать линии поддержки/сопротивления. На изображении ниже вы можете видеть синие линии, которые сейчас создает скрипт, и красные, которые я создал вручную, чтобы объяснить, что я хотел бы, чтобы он делал.

Сплошные красные линии для трендов и пунктирные для S/R

Я пытался использовать line.set_extend, но этот код удлиняет линии навсегда, создавая очень запутанную диаграмму . Я хотел бы иметь возможность установить максимальную длину линий или, что еще лучше, максимальное количество линий тренда, которые могут отображаться одновременно. К сожалению, это выходит за рамки моих возможностей кодирования.

Надеюсь, у кого-то из вас есть навыки, чтобы помочь мне.

Спасибо :)

//@version=4

study("PivotsExt", overlay=true)

Barsleft = input(10)
Barsright = input(10)

ph = pivothigh(Barsleft, Barsright)
pl = pivotlow( Barsleft, Barsright)

ph_ext = ph 
pl_ext = pl 

if (ph)
    ph_ext := ph

if (pl)
    pl_ext := pl

plot(ph_ext, color= color.blue, offset=-Barsright)
plot(pl_ext, color= color.red, offset=-Barsright)

person Daniel D'Ottavio    schedule 20.07.2020    source источник


Ответы (1)


Здесь мы объявляем ваши 2 переменные, содержащие опорные уровни на первом баре, используя только var, что делает их значения постоянными на всех барах. Мы также адаптируем вызовы plot(), чтобы они не отображали диагональную линию при изменении уровней:

//@version=4

study("PivotsExt", overlay=true)

Barsleft = input(10)
Barsright = input(10)

ph = pivothigh(Barsleft, Barsright)
pl = pivotlow( Barsleft, Barsright)

var ph_ext = ph 
var pl_ext = pl 

if (ph)
    ph_ext := ph

if (pl)
    pl_ext := pl

// plot(ph_ext, color= color.blue, offset=-Barsright, style = plot.style_circles)
plot(ph_ext, color= change(ph_ext) ? na : color.blue, offset=-Barsright)
plot(pl_ext, color= change(pl_ext) ? na : color.red, offset=-Barsright)

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

person PineCoders-LucF    schedule 21.07.2020
comment
Простое и очень элегантное решение, спасибо! Есть ли шанс, что вы также знаете, как удлинить диагональные линии, чтобы получить линии тренда, а также ограничить количество линий, отображаемых на экране? Еще раз спасибо! - person Daniel D'Ottavio; 21.07.2020
comment
Чтобы сделать и то, и другое, вам нужно будет использовать линейные рисунки, используя line.new() вместо plot(). Этот сценарий является примером. - person PineCoders-LucF; 22.07.2020
comment
Ничего себе, замечательный код, но очень сложный для меня в данный момент. Спасибо, в любом случае ;) - person Daniel D'Ottavio; 22.07.2020
comment
Вы можете найти более простые примеры, выполнив поиск скриптов CPR в Публичной библиотеке. - person PineCoders-LucF; 23.07.2020