/////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////// индикатор динамических зон - 3 линии ///////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //@version=5 indicator('123', '123', true) prd = input(defval=100, title="Sampling Period", tooltip = "влияет на поведение RANGE FILTER", group = "Range Filter") multiplic_ = input(defval=8.5, title="Range Multiplier", tooltip = "влияет на поведение RANGE FILTER") smoothrng(x, t, m)=> wper = (t * 2) - 1 avrng = ta.ema(math.abs(x - x[1]), t) smoothrng = ta.ema(avrng, wper) * m smoothrng filterShift = smoothrng(close, prd, multiplic_) rngfilt(x, r)=> rngfilt = x rngfilt := x > nz(rngfilt[1]) ? ((x - r) < nz(rngfilt[1]) ? nz(rngfilt[1]) : (x - r)) : ((x + r) > nz(rngfilt[1]) ? nz(rngfilt[1]) : (x + r)) rngfilt filt = rngfilt(close, filterShift) filtTop = filt + filterShift filtLow = filt - filterShift upward = 0.0 upward := filt > filt[1] ? nz(upward[1]) + 1 : filt < filt[1] ? 0 : nz(upward[1]) downward = 0.0 downward := filt < filt[1] ? nz(downward[1]) + 1 : filt > filt[1] ? 0 : nz(downward[1]) filtcolor = upward > 0 ? color.lime : downward > 0 ? color.red : color.orange plot(filtLow, color=color.new(color.fuchsia, 77), title="Low Target") plot(filtTop, color=color.new(color.aqua, 77), title="High Target") plot(filt, color=filtcolor)