line.new dr aws 2 строки вместо 1 - PullRequest
0 голосов
/ 08 марта 2020

Рассмотрим этот простой сценарий Pine

//@version=4
level1 = 3050
study("FutureLine", overlay=true)
line.new(timestamp(year,month,dayofmonth,08,30), level1, timestamp(year,month,dayofmonth,13,30), level1, xloc=xloc.bar_time)

Предполагается провести линию с 08:30 до 13:30 в день последнего бара.
Однако это dr aws, что линия в день последнего бара И в день до этого.
Есть идеи, почему это так?

Пример на 15-минутных барах SPX
enter image description here

1 Ответ

3 голосов
/ 09 марта 2020

year - это год бара, на котором работает скрипт. year(timenow) текущий год. Происходило то, что вы рисовали линию на каждом баре, используя год, месяц и день этого бара, а сборка мусора оставляла только последние. Только 2 показало, но было наложено гораздо больше.

Этот код создает строку только на первом баре набора данных, а затем изменяет ее только тогда, когда скрипт достигает последнего бара, поэтому он использует дату этого бара:

//@version=4
study("FutureLine", overlay=true)
level1 = 3050
start = timestamp(year,month,dayofmonth,08,30)
stop  = timestamp(year,month,dayofmonth,13,30)
var line ln = line.new(start, level1, stop, level1, xloc=xloc.bar_time)
if barstate.islast
    line.set_x1(ln, start)
    line.set_x2(ln, stop)

Более эффективно изменить существующую строку, чем удалить и создать новую, что необходимо для сохранения только последней.

...