Исходный код · ID 4749
Logarithmic Linear Regression
logarithmic linear regression.pine
Вы автор или правообладатель?
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «logarithmic linear regression.pine» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
Краткий обзор
О программе
Индикатор «Logarithmic Linear Regression» строит линейную регрессию на логарифмически преобразованных данных цены и отображает её в виде линий на графике. Расчёт выполняется за заданный период, при этом исходные значения сначала переводятся в логарифмический масштаб, а результаты обратно — в ценовой, что позволяет учитывать процентное изменение цены.
Настройки программы
| Настройка | Описание |
|---|---|
| srcinput | Источник данных для расчёта регрессии (по умолчанию hlc3). |
| use1Dev | Множитель для первого стандартного отклонения от линии регрессии. |
| use2Dev | Множитель для второго стандартного отклонения от линии регрессии. |
| lstyle | Стиль отображения линий: сплошной, пунктирный или точечный. |
| wid | Толщина отображаемых линий. |
| extendLines | Включает продление линий регрессии и отклонений вправо от текущей свечи. |
| filldev | При активации заливает область между внешними линиями отклонений (1 и 2 стандартных отклонения). |
| fillin | При активации заливает внутренний канал между первыми линиями отклонений. |
| tr | Уровень прозрачности заливки каналов и отклонений. |
| rcol | Цвет верхних линий отклонений (бычья зона). |
| scol | Цвет нижних линий отклонений (медвежья зона). |
| mcol | Цвет средней линии регрессии. |
| len | Количество баров, используемых для расчёта линейной регрессии. |
Поиск по коду файла
indicator('<[Логарифмическая Линейная Регрессия]>', '<{LogLinReg}>', overlay = true, max_bars_back = 4000)
srcinput = input(title = 'Источник', defval = hlc3) // Источник данных (по умолчанию hlc3)
use1Dev = input.float(1, title = 'Коэффициент отклонения 1', minval = 0.1) // Множитель для первого отклонения
use2Dev = input.float(2, title = 'Коэффициент отклонения 2', minval = 0.1) // Множитель для второго отклонения
lstyle = input.string('Сплошная', title = 'Стиль линии', options = ['Сплошная', 'Пунктирная', 'Точечная'])
wid = input(defval = 1, title = 'Толщина линии')
extendLines = input(title = 'Продлевать линии', defval = false)
filldev = input(false, title = 'Заливка отклонений')
fillin = input(false, title = 'Заливка внутреннего канала')
tr = input(89, title = 'Прозрачность заливки')
rcol = input(color.blue, 'Цвет быков')
scol = input(color.fuchsia, 'Цвет медведей')
mcol = input(color.silver, 'Цвет средней линии')
linestyle = lstyle == 'Сплошная' ? line.style_solid : lstyle == 'Пунктирная' ? line.style_dashed : line.style_dotted // Выбор стиля линии
len = input.int(100, title = 'Длина', minval = 1) // Длина периода для расчета линейной регрессии
src = request.security(syminfo.tickerid, timeframe.period, math.log(srcinput)) // Логарифмирование источника данных
extend = extendLines ? extend.right : extend.none // Продление линий вправо, если включено
calcSlope(src, len) =>
max_bars_back(src, 300)
if not barstate.islast or len <= 1
[float(na), float(na), float(na)]
else
sumX = 0.0
sumY = 0.0
sumXSqr = 0.0
sumXY = 0.0
for j = 0 to len - 1 by 1
val = src[j]
per = j + 1.0
sumX := sumX + per
sumY := sumY + val
sumXSqr := sumXSqr + per * per
sumXY := sumXY + val * per
sumXY
slope = (len * sumXY - sumX * sumY) / (len * sumXSqr - sumX * sumX)
average = sumY / len
intercept = average - slope * sumX / len + slope
[slope, average, intercept]
[s, a, i] = calcSlope(src, len) // Получаем наклон, среднее и пересечение
startPrice = i + s * (len - 1) // Начальная цена
endPrice = i // Конечная цена
var line baseLine = na // Базовая линия
if na(baseLine) and not na(startPrice)
baseLine := line.new(bar_index - len + 1, math.exp(startPrice), bar_index, math.exp(endPrice), width = wid, extend = extend, color = mcol, style = linestyle)
baseLine
else
line.set_xy1(baseLine, bar_index - len + 1, math.exp(startPrice))
line.set_xy2(baseLine, bar_index, math.exp(endPrice))
calcDev(src, len, slope, average, intercept) =>
upDev = 0.0
dnDev = 0.0
stdDevAcc = 0.0
dsxx = 0.0
dsyy = 0.0
dsxy = 0.0
periods =Показано первые 50% кода (символов: 4348)