Добавить в корзинуПозвонить
Найти в Дзене
Trading Community

Примеры работы с "сериями" в Pine Script.

Прежде чем перейдем к практическим примерам работы с сериями расскажу немного теории. Основной тип данных, используемый в Pine script, называется серией. Это непрерывный список значений, который идёт назад во времени от текущего бара и где для каждого бара существует одно значение. Серии хранят последовательность исторических значений. К ним можно получить доступ с помощью [ ] оператора. Примерами встроенных последовательных переменных являются: open, high, low, close, volume и time. Любое выражение, содержащее переменную серии, будет рассматриваться как сама серия. Например: a = open + close + low + high // Сложение 4 серий b = high * 3 // Умножение переменной серии на константу c = low[1] // Ссылка на предыдущее значение "low", текущее low[0] Записи close и close[0] равносильны, для обращения к текущему бару не обязательно указывать оператор [ ] с нулевым номером. ?: условный тернарный оператор: условие ? результат 1 : результат 2 Если условие выполняется, то вернется результат

Прежде чем перейдем к практическим примерам работы с сериями расскажу немного теории.

Основной тип данных, используемый в Pine script, называется серией. Это непрерывный список значений, который идёт назад во времени от текущего бара и где для каждого бара существует одно значение.

Серии хранят последовательность исторических значений. К ним можно получить доступ с помощью [ ] оператора. Примерами встроенных последовательных переменных являются: open, high, low, close, volume и time. Любое выражение, содержащее переменную серии, будет рассматриваться как сама серия. Например:

a = open + close + low + high // Сложение 4 серий
b = high * 3 // Умножение переменной серии на константу
c = low[1] // Ссылка на предыдущее значение "low", текущее low[0]

Записи close и close[0] равносильны, для обращения к текущему бару не обязательно указывать оператор [ ] с нулевым номером.

?: условный тернарный оператор:

условие ? результат 1 : результат 2

Если условие выполняется, то вернется результат 1, если нет, то результат 2.

условие 1 ? результат 1 : условие 2 ? результат 2 : результат 3

Если условие 1 выполняется, то вернется результат 1, если нет, то если условие 2 выполняется - вернется результат 2. А если не выполняются оба условия - вернется результат 3.

nz() - встроенная функция, заменяет на NaN (ничего) значения с нулями.

Шаблоны которые я использую при программировании на Pine script:

Сумма/Счетчик.

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

x = 0 // задание переменной x
n = 1 // задание переменной n, равной 1, если это счетчик
x := условие ? x[1] + n : nz(x[1]) // при выполнении условия, мы к предыдущему значению x прибавляем значение n, если условие не выполняется - x присваивает своё предыдущее значение.
Графический результат
Графический результат

Из примера можно увидеть, что каждый раз когда low было ниже 30000 значение х увеличивалось на 1.

Присвоение переменной значения и удержание его постоянным.

x = 0 // задание переменной x
n = a // задание переменной a, или сразу в формуле пишите нужное значение вместо n
x := условие and x[1] == 0 ? x[1] + n : nz(x[1]) // присваивается значение n, если выполняется условие x предыдущее равно 0, что говорит о том, что ранее это условие не выполнялось.
Код
Код
Графический результат
Графический результат

Из примера видно, что один раз когда low было ниже 30000 значение х увеличивалось на 1, и более не реагировало на данное условие.

Присвоение переменной значения и удержание его до отмены условия.

x = 0 // задание переменной x
x := условие 1 ? 1 : условие 2 ? 0 : nz(x[1]) // Если выполняется условие 1 - присваивается 1, если выполняется условие 2 - присваивается 0, если не выполняется ни одно из условий - присваивается предыдущее.
Код
Код
Графический результат
Графический результат

Из примера видно, что каждый раз когда low было ниже 30000 значение х увеличивалось на 1, а когда выполнялось условие обратное первому (low было больше 30000) х уменьшался до 0.

Также можно отменять другим условием.

Если как у нас в примере условия взаимоисключающие, то можно записать более простым кодом:

-7

Если у вас есть вопросы по сериям и их использовании - пишите в комментариях.

#программирование #pine script