Я пытаюсь построить вертикальную линию, используя пользовательскую дату из массива.
То, что я пытаюсь закодировать, - это перебрать все значения с помощью цикла for, а затем построить вертикальную линию с интервалом в 1 фьючерсный день. Это главная цель.
Код выглядит так:
//@version=5
indicator('VertLine_Test', overlay=true)
start_date = array.from("2022-12-26 15:15","2023-01-05 01:45","2023-01-10 16:30") // and so on
// Iterate array
counter = -1
for i=-1 to array.size(start_date)
counter := i
counter := counter -1 // assign index Array
string_date = array.get(start_date,counter) // get the value based on index -> return Ex.2023-01-10 16:30
// Draw VerticalLine
drawVerticalLine(targetTime) =>
line.new(x1=targetTime, y1=low, x2=targetTime, y2=high, xloc=xloc.bar_time, extend=extend.both, color=color.new(#ea5e50, 10), style=line.style_solid, width=2)
targetTime = timestamp(string_date) // Assign value and convert to Timestamp
drawVerticalLine(targetTime) // Call function for draws Vertical Line
Теперь, когда я запускаю код, я получаю такую ошибку:
Compilation error. Cannot call 'timestamp' with argument 'dateString'='string_date'. An argument of 'series string' type was used but a 'const string' is expected
Я борюсь с этим. Что может быть решением?
Проблема в том, что timestamp()
не может принимать series string
в качестве аргумента, но нуждается в constant string
(string
, который нельзя изменить во время выполнения).
Вы можете исправить это, создав массив timestamp
вместо массива строк.
//@version=5
indicator("My script", overlay = true)
start_date = array.from(timestamp("2022-12-26 15:15"),timestamp("2023-01-05 01:45"),timestamp("2023-01-10 16:30")) // and so on
for date in start_date
line.new(x1=date, y1=low, x2=date, y2=high, xloc=xloc.bar_time, extend=extend.both, color=color.new(#ea5e50, 10), style=line.style_solid, width=2)
Спасибо, Mr_Statler. Это работает отлично. Теперь я понял, в чем была проблема 👏🏻