xmd79

Hann Window Amplitude Filter

Jun 1st, 2023
214
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.58 KB | None | 0 0
  1. //@version=5
  2. indicator('Hann Window Amplitude Filter', overlay=false)
  3.  
  4.  
  5. length = input(14, "Number of frequencies to Filter")
  6. var shifts = input.int(0)
  7. minBase = input.float(0.1, "Filter Minimum Base", step = .1)
  8.  
  9. int ArrayLen = 2 * length - 1
  10. var Array = array.new_float(ArrayLen, 0),
  11. pi = math.pi
  12. c = 0.0
  13. c := nz(c[1], 0) == ArrayLen - 1 ? 0 : nz(c[1], 0) + 1
  14.  
  15. h = (1 - math.cos(2 * pi * (c - 1) / ArrayLen)) / 2 + minBase
  16.  
  17. if bar_index <= ArrayLen
  18. array.insert(Array, 0, h)
  19.  
  20. else
  21. if shifts > 0
  22. for i = 0 to shifts - 1 by 1
  23. array.shift(Array)
  24. array.push(Array, minBase)
  25. shifts := shifts - 1
  26. else if shifts < 0
  27. for i = 0 to math.abs(shifts) - 1 by 1
  28. array.unshift(Array,minBase)
  29. shifts := shifts + 1
  30.  
  31.  
  32. //
  33. plot(h)
  34. plot(array.get(Array, length), title='HW', color=color.new(#FA8258, 0))
  35. plot(bar_index % ArrayLen, title='Bar Index % Array Len', color=color.new(#FA8258, 0), display=display.data_window)
  36. plot(c, title='Counter', color=color.new(#FA8258, 0), display=display.data_window)
  37. plot(array.get(Array, length - 1), title='MaxCoeff +', color=color.new(#FA8258, 0), display=display.data_window)
  38. plot(array.get(Array, length), title='MaxCoeff -', color=color.new(#FA8258, 0), display=display.data_window)
  39. plot(array.get(Array, math.floor(length / 2)), title='MinCoeff +', color=color.new(#FA8258, 0), display=display.data_window)
  40. plot(array.get(Array, ArrayLen - math.floor(length / 2)), title='MinCoeff -', color=color.new(#FA8258, 0), display=display.data_window)
  41. hline(0)
  42. hline(1)
  43.  
Advertisement
Add Comment
Please, Sign In to add comment