Блог им. FaAnDi

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

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

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

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

Серии хранят последовательность исторических значений. К ним можно получить доступ с помощью [ ] оператора. Примерами встроенных последовательных переменных являются: openhigh, low, closevolume и 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, если условие не выполняется - присваивает своё предыдущее значение.

Графический результат

Из примера можно увидеть, что каждый раз когда 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.

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

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

Код

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

6.9К | ★7
8 комментариев
time series это временной ряд по-русски
а не серия
avatar
kiryushka,

Линейная регрессия тогда уж, если на проф сленге
avatar
K_R_L, линейная регрессия это функция над рядом, а не сам ряд
avatar
kiryushka,

В метастоке и в chartiq time series прогнозом линейной регрессии кличат.
avatar
K_R_L, 
Там написано про индикатор предсказание временного ряда, time series forecast, который построен на линейной регрессии. 
avatar
Я в Метастоке 7.2 сочинял индюки на вижел бейсик. Проблема всех индюков  это — статичный период типа 14.Вместо него надо ставить формулу расчета периода.Чем сильнее тренд, тем период меньше и наоборот.Формула должна работать в диапазоне от 3 до 34 (64).
Например посчитать суммарное перекрытие углов (пробой поддержки) за период 34(64).Чем больше sum (L-ref(H,-2),34) тем более период.Коридор  цены = боковик и период =34(64).Но перекрытие не должно заходить ниже начальной точки отсчета типа ref(L,34). Когда голова( 5я волна ) полностью закрывается коррекцией (А волна ) период =34(64).
if (L>ref(L,-34),sum(L- ref(H,-2),34)).Это не полная формула расчета периода.Простая формула если посчитать количество перекрытий за период 34 .
  период для роста  = if (L>ref(L,-34),sum(if((L< ref(H,-2),1,0),34))
avatar

Читайте на SMART-LAB:
Фото
Актуальный состав портфеля и взгляд на рынок 2026: по-прежнему 0% позитива.
Добрый вечер! С момента предыдущего поста, касающегося моего портфеля, прошел квартал.  Пришло время актуализировать его состав. Также поделюсь...
Фото
Биткоин попробует разыграть «треугольную карту»?
«Цифровое золото» прорвало верхнюю границу восходящего треугольника на уровне 94 500 и сейчас тестирует пробитую горизонталь, формируя серию...
Фото
Индикатор Fractal: торговые сигналы и робот для OsEngine. Видео
В этом видео разбираем индикатор Fractal Билла Вильямса — один из самых известных инструментов в трейдинге. Покажем, как формируются фракталы,...
Фото
Стратегия 2026 по рынку акций от Mozgovik Research: трудный год, но, возможно, последний год низких цен
Сегодня у меня первый день официального отпуска. За окном темная звездная ночь, яркая белая луна, +24С и шум волн Андаманского моря. Неудачный...

теги блога Trading Community

....все тэги



UPDONW
Новый дизайн