Channel LogReg + Forecast Zones + BB/KC
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «channel_logreg + forecast zones + bb_kc.pine» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Индикатор «Channel LogReg + Forecast Zones + BB/KC» для TradingView объединяет три визуальных компонента на одном графике: канал логарифмической регрессии, прогнозные зоны на основе ATR и стандартные каналы Боллинджера и Кельтнера. Он рассчитывает регрессионную линию и отклонения по логарифму цены, отображает динамические уровни сопротивления и поддержки, а также накладывает классические BB и KC с возможностью заливки между ними. Все элементы можно включать и отключать независимо через соответствующие параметры настроек.
В основе канала регрессии лежит расчёт наклона, среднего и стандартного отклонения на логарифмических данных цены за заданный период. Верхние и нижние границы канала строятся с коэффициентами отклонения, настраиваемыми пользователем. Прогнозные зоны используют адаптивное среднее с шагом на основе кратного ATR, формируя уровни, которые корректируются при движении цены и фиксируются при отсутствии пробоя.
Индикатор рисует линии и графические заливки средствами Pine Script, получает данные текущего инструмента и таймфрейма через request.security. Полностью настраиваются цвета, толщина и стиль линий, прозрачность заливок, длины и множители расчётов. Предназначен для визуального анализа графика, не содержит встроенной симуляции сделок.
Настройки программы
| Настройка | Описание |
|---|---|
| showLogReg | Отображать или скрывать канал логарифмической регрессии и его отклонения. |
| showForecast | Отображать или скрывать прогнозные зоны сопротивления и поддержки. |
| showBBKC | Отображать или скрывать каналы Боллинджера и Кельтнера на графике. |
| srcinput | Источник данных для расчёта логарифмической регрессии. |
| use1Dev | Коэффициент отклонения для первого уровня верхней и нижней границ канала. |
| use2Dev | Коэффициент отклонения для второго уровня верхней и нижней границ канала. |
| lstyle | Стиль отображения линий канала: сплошная, пунктирная или точечная. |
| wid | Толщина линий канала регрессии и отклонений. |
| extendLines | Продлевать линии регрессии и отклонений вправо за последний бар. |
| filldev | Включить заливку области между верхней и нижней границами отклонений 2-го уровня. |
| fillin | Включить заливку внутренней области между верхней и нижней границами отклонений 1-го уровня. |
| tr | Прозрачность заливок канала отклонений и внутреннего канала в процентах. |
| rcol | Цвет линий верхних отклонений (бычья сторона). |
| scol | Цвет линий нижних отклонений (медвежья сторона). |
| mcol | Цвет средней линии регрессионного канала. |
| len | Длина периода для расчёта регрессии и отклонений. |
| length | Период усреднения для расчёта ATR в прогнозных зонах. |
| mult | Множитель ATR для определения шага адаптивного среднего в прогнозных зонах. |
| src2 | Источник цены для расчёта прогнозных зон. |
| resColor | Цвет заливки зон сопротивления. |
| supColor | Цвет заливки зон поддержки. |
| zoneTransp | Базовая прозрачность заливок прогнозных зон в процентах. |
| bbLen | Период усреднения для расчёта канала Боллинджера. |
| bbMult | Множитель стандартного отклонения для ширины канала Боллинджера. |
| bbColor | Цвет линий канала Боллинджера. |
| kcLen | Период усреднения для расчёта канала Кельтнера. |
| kcATRmult | Множитель ATR для расчёта ширины канала Кельтнера. |
| kcColor | Цвет линий канала Кельтнера. |
Поиск по коду файла
indicator('<[Канал_ЛогРег + Прогнозные Зоны + BB/KC]>', '<[Канал_ЛогРег+ПЗ+ BB/KC]>', overlay = true, precision = 2, max_bars_back = 4000)
showLogReg = input.bool(true, title = "Показать Лог. Регрессию", group = "Отключение индикаторов")
showForecast = input.bool(true, title = "Показать Прогн. Диапазоны", group = "Отключение индикаторов")
showBBKC = input.bool(true, "Показать BB/KC", group = "Отключение индикаторов")
srcinput = input(title = 'Источник', defval = 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(#2196f3, 'Цвет быков')
scol = input(#e040fb, 'Цвет медведей')
mcol = input(#b2b5be, 'Цвет средней линии')
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
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) and showLogReg
baseLine := line.new(bar_index - len + 1, math.exp(startPrice), bar_index, math.exp(endPrice), width = wid, extend = extend, color = mcol, style = linestyle)
else if showLogReg and not na(baseLine)
line.set_xy1(baseLine, bar_index - len + 1, math.exp(startPrice))
line.set_xy2(baseLine, bar_index, math.exp(endPrice))
else if not na(baseLine)
line.delete(baseLine)
baseLine := na
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 = len - 1
daY = intercept + slope * periods / 2
val = intercept
for k = 0 to periods by 1
price = high[k] - val
if price > upDev
upDev := price
price := val - low[k]
if price > dnDev
dnDev := price
price := src[k]
dxt = price - average
dyt = val - daY
price := price - val
stdDevAcc := stdDevAcc + price * price
dsxx := dsxx + dxt * dxt
dsyy := dsyy + dyt * dyt
dsxy := dsxy + dxt * dyt
val := val + slope
stdDev = math.sqrt(stdDevAcc / (periods == 0 ? 1 : periods))
pearsonR = dsxx == 0 or dsyy == 0 ? 0 : dsxy / math.sqrt(dsxx * dsyy)
[stdDev, pearsonR, upDev, dnDev]
[stdDev, pearsonR, upDev, dnDev] = calcDev(src, len, s, a, i)
upperStartPrice1 = startPrice + use1Dev * stdDev
upperStartPrice2 = startPrice + use2Dev * stdDev
upperEndPrice1 = endPrice + use1Dev * stdDev
upperEndPrice2 = endPrice + use2Dev * stdDev
var line upper1 = na
var line upper2 = na
lowerStartPrice1 = startPrice + use1Dev * -stdDev
lowerStartPrice2 = startPrice + use2Dev * -stdDev
lowerEndPrice1 = endPrice + use1Dev * -stdDev
lowerEndPrice2 = endPrice + use2Dev * -stdDev
var line lower1 = na
var line lower2 = na
if na(upper2) and not na(upperStartPrice2) and showLogReg
upper1 := line.new(bar_index - len + 1, math.exp(upperStartPrice1), bar_index, math.exp(upperEndPrice1), width = wid, extend = extend, color = rcol, style = linestyle)
upper2 := line.new(bar_index - len + 1, math.exp(upperStartPrice2), bar_index, math.exp(upperEndPrice2), width = wid, extend = extend, color = rcol, style = linestyle)
else if showLogReg and not na(upper1)
line.set_xy1(upper1, bar_index - len + 1, math.exp(upperStartPrice1))
line.set_xy2(upper1, bar_index, math.eПоказано первые 50% кода (символов: 7325)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.