Блог им. FaAnDi
Прежде чем перейдем к практическим примерам работы с сериями расскажу немного теории.
Основной тип данных, используемый в 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 (ничего) значения с нулями.
Сумма/Счетчик.
Сумма может вам пригодиться в тех случаях, если вам нужно посчитать суммарное значение какой-то переменной за период. Счетчик для отсчитывания количества свечей от какого-то события.
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.
Также можно отменять другим условием.
Если как у нас в примере условия взаимоисключающие, то можно записать более простым кодом:
Если у вас есть вопросы по сериям и их использовании — пишите в комментариях.
а не серия
Линейная регрессия тогда уж, если на проф сленге
В метастоке и в chartiq time series прогнозом линейной регрессии кличат.
поправку на специфику надо
www.metastock.com/customer/resources/taaz/?p=109
help.tradestation.com/10_00/eng/tradestationhelp/elanalysis/indicator/time_series_forecast_indicator_.htm
Там написано про индикатор предсказание временного ряда, time series forecast, который построен на линейной регрессии.
Например посчитать суммарное перекрытие углов (пробой поддержки) за период 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))