Блог им. 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.

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

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

Код

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

| ★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:
🖥 В2В-РТС в гостях у Market Power
Уже 10 апреля — то есть завтра! — в 12:00 мы поговорим с компанией перед IPO.      🔶 Обсудим: • Планы на IPO и мотивацию: зачем...
На Луну за ИИ
65 лет назад, 12 апреля, первый полет человека в космос открыл человечеству путь к звездам. Сегодня эта дата обретает новый «промышленный» смысл,...
Фото
Высокие ставки прошли пик давления, но кредитный отбор стал жестче
По оценке аналитиков Газпромбанка, 2025 год стал периодом ухудшения кредитного профиля некоторых российских корпоративных заемщиков, хотя...

теги блога Trading Community

....все тэги



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