Разделяйте значения кортежей и назначайте их в Pinescript TradingView

Я пытался отобразить значения закрытия внутри бара внутри бара текущего графика (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)

Может ли кто-нибудь помочь мне разделить значения в массиве и отобразить их.

Структурированный массив Numpy
Структурированный массив Numpy
Однако в реальных проектах я чаще всего имею дело со списками, состоящими из нескольких типов данных. Как мы можем использовать массивы numpy, чтобы...
T - 1Bits: Генерация последовательного массива
T - 1Bits: Генерация последовательного массива
По мере того, как мы пишем все больше кода, мы привыкаем к определенным способам действий. То тут, то там мы находим код, который заставляет нас...
Что такое деструктуризация массива в JavaScript?
Что такое деструктуризация массива в JavaScript?
Деструктуризация позволяет распаковывать значения из массивов и добавлять их в отдельные переменные.
0
0
148
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Поскольку вы запрашиваете только цену 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)

Ошибка исследования: в функции 'array.get()'. Индекс 1 выходит за пределы, размер массива равен 1.

paulcab 21.11.2022 06:15

У вас 15-минутный таймфрейм?

mr_statler 21.11.2022 06:20

Да, и нам нужно получить доступ к значениям Intrabars. (Также упоминается в вопросе)

paulcab 21.11.2022 06:22

Какой тикер вы используете?

mr_statler 21.11.2022 06:31

Не какой-то конкретный тикер. "Используйте syminfo.tickerid для запроса данных с символа графика." из их документации. Значения получаются, когда мы используем if bar_index == last_bar_index - 1 label.new(bar_index, high, str.tostring(arrClose)). Но не может их разделить.

paulcab 21.11.2022 06:58

Функция возвращает массив "Цена закрытия 5-минутного бара". Если нет 3 «5-минутных баров», которые строят «15-минутный бар», у вас будет меньше элементов в массиве. Например, предположим, что мы запрашиваем 30-минутный бар в этой функции и используем часовой таймфрейм на любом тикере NASDAQ. Так как NASDAQ закрывается в 16:00, последний бар всего 30 минут, поэтому в массиве мы получим только 1 элемент. Я отредактирую свой ответ, чтобы решить и эту проблему.

mr_statler 21.11.2022 07:54

Давайте продолжим обсуждение в чате.

paulcab 21.11.2022 08:48

Другие вопросы по теме