Можно ли получить n-й элемент кортежа в сосне? - PullRequest
0 голосов
/ 20 июня 2020

Пытаюсь вычислить фьючерсную кривую, динамически загружая тикеры за месяц и вращая их, и мне нужно что-то более чистое, чем соединение миллиона троек.

1 Ответ

0 голосов
/ 28 июня 2020

Если вы создаете функцию, которая возвращает кортеж, вы можете передать элемент, который вы хотите, чтобы он содержал. Например, если вы хотите получить значения открытия и закрытия для n-й свечи, вы можете сделать что-то вроде этого:

// This source code is subject to the terms of the Mozilla Public License 2.0 
at https://mozilla.org/MPL/2.0/
// © kaaiii

//@version=4
study("Tuple Script", overlay=true)

barsBack = input(title="bars back", type=input.integer, defval=5, minval=0, 
maxval=200)
x = bar_index

//Create a tuple with the open and close of the nth candle
tuple(i) => [open[i], close[i]]
[openValue, closeValue] = tuple(barsBack)

//Everything below here is to show the values on the chart
txtOpen = tostring(openValue)
txtClose = tostring(closeValue)
var labelOpen = label.new(x[barsBack], openValue, text=txtOpen, 
style=label.style_label_down)
label.set_x(labelOpen, x[barsBack])
label.set_text(labelOpen, txtOpen)
label.set_color(labelOpen, color.green)
label.set_size(labelOpen, size.large)
label.set_y(labelOpen, open +  2 * atr(14))

var labelClose = label.new(x[barsBack], closeValue, text=txtClose, 
style=label.style_label_up)
label.set_x(labelClose, x[barsBack])
label.set_text(labelClose, txtClose)
label.set_color(labelClose, color.red)
label.set_size(labelClose, size.large)
label.set_y(labelClose, close - 2 * atr(14))
...