Я пытался отобразить значения закрытия внутри бара внутри бара текущего графика (15 мин). Итак, есть три значения. Но значения приходят в виде кортежа. Я не могу разделить кортежи на три значения. Я пробовал приведенный ниже код, а также использовал цикл for (с которым я не знаком),
[fir, sec, thi] = request.security_lower_tf(syminfo.tickerid, "5", close)
var table top_boxes = table.new(position.bottom_center, 6, 2)
table.cell(top_boxes, 0, 0, text=str.tostring(a), bgcolor=color.new(color.blue, 0), text_color=color.white, width=4, height=8)
table.cell(top_boxes, 1, 0, text=str.tostring(b), bgcolor=color.new(color.red, 0), text_color=color.white, width=4, height=8)
table.cell(top_boxes, 1, 0, text=str.tostring(c), bgcolor=color.new(color.yellow, 0), text_color=color.white, width=4, height=8)
Может ли кто-нибудь помочь мне разделить значения в массиве и отобразить их.
Поскольку вы запрашиваете только цену close
, функция request.security_lower_tf()
возвращает массив из 3 элементов.
Вы можете получить значение каждого элемента, используя array.get()
:
close_5 = request.security_lower_tf(syminfo.tickerid, "5", close)
var table top_boxes = table.new(position.bottom_center, 6, 2)
if barstate.islast
table.cell(top_boxes, 0, 0, text=str.tostring(array.get(close_5, 0)), bgcolor=color.new(color.blue, 0), text_color=color.white, width=4, height=8)
table.cell(top_boxes, 1, 0, text=str.tostring(array.get(close_5, 1)), bgcolor=color.new(color.red, 0), text_color=color.white, width=4, height=8)
table.cell(top_boxes, 2, 0, text=str.tostring(array.get(close_5, 2)), bgcolor=color.new(color.yellow, 0), text_color=color.white, width=4, height=8)
В некоторых случаях будут отсутствовать некоторые 5-минутные бары, чтобы вернуть 3 элемента в этот массив. Вы можете написать «более безопасный» код, используя цикл for
:
//@version=5
indicator("request 5 min timeframe", overlay = true)
close_5 = request.security_lower_tf(syminfo.tickerid, "5", close)
var table top_boxes = table.new(position.bottom_center, 6, 2)
if barstate.islast
color[] cell_bg_color = array.from(color.blue, color.red, color.yellow)
for [index, price] in close_5
table.cell(top_boxes, index, 0, text=str.tostring(price), bgcolor=array.get(cell_bg_color, index), text_color=color.white)
У вас 15-минутный таймфрейм?
Да, и нам нужно получить доступ к значениям Intrabars. (Также упоминается в вопросе)
Какой тикер вы используете?
Не какой-то конкретный тикер. "Используйте syminfo.tickerid для запроса данных с символа графика." из их документации. Значения получаются, когда мы используем if bar_index == last_bar_index - 1 label.new(bar_index, high, str.tostring(arrClose)). Но не может их разделить.
Функция возвращает массив "Цена закрытия 5-минутного бара". Если нет 3 «5-минутных баров», которые строят «15-минутный бар», у вас будет меньше элементов в массиве. Например, предположим, что мы запрашиваем 30-минутный бар в этой функции и используем часовой таймфрейм на любом тикере NASDAQ. Так как NASDAQ закрывается в 16:00, последний бар всего 30 минут, поэтому в массиве мы получим только 1 элемент. Я отредактирую свой ответ, чтобы решить и эту проблему.
Давайте продолжим обсуждение в чате.
Ошибка исследования: в функции 'array.get()'. Индекс 1 выходит за пределы, размер массива равен 1.