Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //@version=5
- indicator('Hann Window Amplitude Filter', overlay=false)
- length = input(14, "Number of frequencies to Filter")
- var shifts = input.int(0)
- minBase = input.float(0.1, "Filter Minimum Base", step = .1)
- int ArrayLen = 2 * length - 1
- var Array = array.new_float(ArrayLen, 0),
- pi = math.pi
- c = 0.0
- c := nz(c[1], 0) == ArrayLen - 1 ? 0 : nz(c[1], 0) + 1
- h = (1 - math.cos(2 * pi * (c - 1) / ArrayLen)) / 2 + minBase
- if bar_index <= ArrayLen
- array.insert(Array, 0, h)
- else
- if shifts > 0
- for i = 0 to shifts - 1 by 1
- array.shift(Array)
- array.push(Array, minBase)
- shifts := shifts - 1
- else if shifts < 0
- for i = 0 to math.abs(shifts) - 1 by 1
- array.unshift(Array,minBase)
- shifts := shifts + 1
- //
- plot(h)
- plot(array.get(Array, length), title='HW', color=color.new(#FA8258, 0))
- plot(bar_index % ArrayLen, title='Bar Index % Array Len', color=color.new(#FA8258, 0), display=display.data_window)
- plot(c, title='Counter', color=color.new(#FA8258, 0), display=display.data_window)
- plot(array.get(Array, length - 1), title='MaxCoeff +', color=color.new(#FA8258, 0), display=display.data_window)
- plot(array.get(Array, length), title='MaxCoeff -', color=color.new(#FA8258, 0), display=display.data_window)
- plot(array.get(Array, math.floor(length / 2)), title='MinCoeff +', color=color.new(#FA8258, 0), display=display.data_window)
- plot(array.get(Array, ArrayLen - math.floor(length / 2)), title='MinCoeff -', color=color.new(#FA8258, 0), display=display.data_window)
- hline(0)
- hline(1)
Advertisement
Add Comment
Please, Sign In to add comment