Пользовательская функция возвращает серию вместо значения

Я определил пользовательскую функцию в скрипте pine, чтобы получить временную метку относительно некоторой даты. Но при выполнении он возвращает ошибку как

Ошибка операции добавления в диаграмму, причина: строка 35: невозможно вызвать timestamp с аргументами (серия, серия, буквальное целое число, буквальное целое число, буквальное целое число); доступные перегрузки: метка времени (целое число, целое число, целое число, целое число) => целое число; отметка времени (строка, целое число, целое число, целое число, целое число, целое число) => целое число;

Моя спецификация кода:

getdate() =>
    tt = timenow - 1549238400
    yr = year(tt)
    mt = month(tt)
    dt = dayofmonth(tt)
    timestamp(yr, mt, 01, 0, 0)

value = getdate()
plot(value, color = red, linewidth = 5, title = "27", style = histogram)

Я ожидаю 29 дней назад (4 февраля 2019 г.) с этого момента (5 марта 2019 г.) для функции метки времени. Но каким-то образом я получаю серию, что приводит к ошибке.

Любая помощь будет оценена.


person Asif Mulla    schedule 05.03.2019    source источник
comment
Если вы посмотрите руководство, то увидите, что функции year(time) и month(time) возвращают series, а функция timestamp() ожидает integer значений. Вот почему вы получаете эту ошибку.   -  person Baris Yakut    schedule 08.03.2019


Ответы (1)


В Pine v4 функция timestamp() может принимать ряды, и вы можете получить временную метку относительно некоторой даты, используя этот скрипт:

//@version=4
study("My Script")
dayTms()=>
 yr = year(time)
 mt = month(time)
 dt = dayofmonth(time)
 timestamp(yr, mt, dt, 0, 0)

requiredDayTms(daysAgo) =>
 tt = timenow - 86400 * daysAgo * 1000
 yr = year(tt)
 mt = month(tt)
 dt = dayofmonth(tt)
 timestamp(yr, mt, dt, 0, 0)

// argument value is the indent (in days) from the current bar
d=requiredDayTms(5)
plot(d == dayTms() ? 1:0, color=color.red, style=plot.style_histogram, linewidth=5 )
person DmitriyK    schedule 28.06.2019