Source - Price Action Explorer
Source - Price Action Explorer
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
smoothrng(x, t, m) =>
wper = t * 2 - 1
avrng = ta.ema(math.abs(x - x[1]), t)
smoothrng = ta.ema(avrng, wper) * m
green100 = #008000FF
lime100 = #00FF00FF
red100 = #FF0000FF
blue100 = #0000FFFF
aqua100 = #00FFFFFF
darkred100 = #8B0000FF
gray100 = #808080FF
purple100 = #8a27b1
pip = syminfo.mintick * 10
variant_lag(p, g) =>
L0 = 0.0
L1 = 0.0
L2 = 0.0
L3 = 0.0
L0 := (1 - g) * p + g * nz(L0[1])
L1 := -g * L0 + nz(L0[1]) + g * nz(L1[1])
L2 := -g * L1 + nz(L1[1]) + g * nz(L2[1])
L3 := -g * L2 + nz(L2[1]) + g * nz(L3[1])
f = (L0 + 2 * L1 + 2 * L2 + L3) / 6
f
atrUpper(C, M, L) =>
ATR = ta.atr(L)
x = C + M * ATR
x
atrLower(C, M, L) =>
ATR = ta.atr(L)
x = C - M * ATR
x
pipUpper(C, M, L) =>
x = C + M * pip
x
pipLower(C, M, L) =>
x = C - M * pip
x
stdUpper(S, C, M, L) =>
y = ta.stdev(S, L)
x = C + M * y
x
stdLower(S, C, M, L) =>
y = ta.stdev(S, L)
x = C - M * y
x
hiloUpper(T, C, M, L, g) =>
y = variant(T, high, L, g)
y
hiloLower(T, C, M, L, g) =>
y = variant(T, low, L, g)
y
kcUpper(T, C, M, L, g) =>
y = variant(T, ta.tr, L, g)
x = C + y * M
x
kcLower(T, C, M, L, g) =>
y = variant(T, ta.tr, L, g)
x = C - y * M
x
channel(type, T, S, C, M, L, g) =>
atrUpper__1 = atrUpper(C, M, L)
stdUpper__1 = stdUpper(S, C, M, L)
pipUpper__1 = pipUpper(C, M, L)
kcUpper__1 = kcUpper(T, C, M, L, g)
hiloUpper__1 = hiloUpper(T, C, M, L, g)
Upr = type == 'ATR' ? atrUpper__1 : type == 'STDEV' ? stdUpper__1 : type ==
'PIP' ? pipUpper__1 : type == 'KC' ? kcUpper__1 : hiloUpper__1
atrLower__1 = atrLower(C, M, L)
stdLower__1 = stdLower(S, C, M, L)
pipLower__1 = pipLower(C, M, L)
kcLower__1 = kcLower(T, C, M, L, g)
hiloLower__1 = hiloLower(T, C, M, L, g)
Lwr = type == 'ATR' ? atrLower__1 : type == 'STDEV' ? stdLower__1 : type ==
'PIP' ? pipLower__1 : type == 'KC' ? kcLower__1 : hiloLower__1
[Upr, Lwr]
grabcol = uGrabClr ? close >= open ? close > pacL and close > pacU ? lime100 :
close < pacL and close < pacU ? red100 : aqua100 : close > pacL and close > pacU ?
green100 : close < pacL and close < pacU ? darkred100 : blue100 : na
stdcol = uGrabClr ? na : close > pacL and close > pacU ? lime100 : close < pacL and
close < pacU ? red100 : purple100
barcolor(sBars ? uGrabClr ? grabcol : stdcol : na, title='Colors')
if buySignal
signal := true
entryPrice := high
peakProfit := high
trendDirection := 1
trendHigh := high
trendLow := low
if sellSignal
signal := false
entryPrice := low
peakProfit := low
trendDirection := -1
trendHigh := high
trendLow := low
if not na(entryPrice)
if trendDirection == 1 and high > trendHigh
trendHigh := high
if bar_index > lastPeakBarIndex
peakProfit := high
lastPeakBarIndex := bar_index
lastPeakDirection := trendDirection
if trendDirection == -1 and low < trendLow
trendLow := low
if bar_index > lastPeakBarIndex
peakProfit := low
lastPeakBarIndex := bar_index
lastPeakDirection := trendDirection
if buySignal
previousBuySignal := true
previousSellSignal := false
if sellSignal
previousBuySignal := false
previousSellSignal := true