График в течение дня только на n дней назад - PullRequest
0 голосов
/ 05 мая 2020
//@version=4
study("PlayGround", overlay=true)

history_days = input(4, "History days")

source = close*0.95
plot(source)

Это дает
(желтое выделение добавлено вручную)

enter image description here

Я пытаюсь показать история серии, длина которой настраивается пользователем.

В приведенном примере длина истории установлена ​​равной 4 дням.
Таким образом, график должен начинаться 29 апреля.
Это означает, что нужно рисовать только желтое выделение.
Однако, Я не знаю, как это реализовать.
Переменная history_days не используется в скрипте, потому что я пока не знаю, как это сделать

Сосновый скрипт модель исполнения такова, что она выполняет скрипт на каждом баре.
Это означает, что мы не узнаем дату последнего бара, пока он не будет достигнут.
Кроме того, чтобы вычислить дату на котором должен начаться график, мы должны учитывать выходные и торговые праздники.
В приведенном выше примере последний бар приходится на 4 мая (понедельник), а 4 торговых дня назад - 29 апреля (среда).
Но между этими датами есть 6 календарных дней, потому что они приходятся на выходные.

Приветствуются любые подсказки, как решить эту проблему.

1 Ответ

1 голос
/ 05 мая 2020
//@version=4
study("Days before", "", true)
daysBack = input(4)

_MILLISECONDS_IN_DAY = 24 * 60 * 60 * 1000
lastBarDate = timestamp(year(timenow), month(timenow), dayofmonth(timenow), hour(timenow), minute(timenow), second(timenow))
thisBarDate = timestamp(year, month, dayofmonth, hour, minute, second)
daysLeft = floor((lastBarDate - thisBarDate) / _MILLISECONDS_IN_DAY)
inRange = daysLeft <= daysBack

ma = sma(close, 30)
plot(ma, "ma", inRange ? color.orange : na)
plotchar(daysLeft, "daysLeft", "", location.top)

enter image description here

...