Advertisement
xmd79

Williams Fractals

Nov 20th, 2023
170
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.63 KB | None | 0 0
  1. //@version=5
  2. indicator("Williams Fractals", shorttitle="Fractals", format=format.price, precision=0, overlay=true)
  3. // Define "n" as the number of periods and keep a minimum value of 2 for error handling.
  4. n = input.int(title="Periods", defval=2, minval=2)
  5.  
  6.  
  7. // UpFractal
  8. bool upflagDownFrontier = true
  9. bool upflagUpFrontier0 = true
  10. bool upflagUpFrontier1 = true
  11. bool upflagUpFrontier2 = true
  12. bool upflagUpFrontier3 = true
  13. bool upflagUpFrontier4 = true
  14.  
  15. for i = 1 to n
  16. upflagDownFrontier := upflagDownFrontier and (high[n-i] < high[n])
  17. upflagUpFrontier0 := upflagUpFrontier0 and (high[n+i] < high[n])
  18. upflagUpFrontier1 := upflagUpFrontier1 and (high[n+1] <= high[n] and high[n+i + 1] < high[n])
  19. upflagUpFrontier2 := upflagUpFrontier2 and (high[n+1] <= high[n] and high[n+2] <= high[n] and high[n+i + 2] < high[n])
  20. upflagUpFrontier3 := upflagUpFrontier3 and (high[n+1] <= high[n] and high[n+2] <= high[n] and high[n+3] <= high[n] and high[n+i + 3] < high[n])
  21. upflagUpFrontier4 := upflagUpFrontier4 and (high[n+1] <= high[n] and high[n+2] <= high[n] and high[n+3] <= high[n] and high[n+4] <= high[n] and high[n+i + 4] < high[n])
  22. flagUpFrontier = upflagUpFrontier0 or upflagUpFrontier1 or upflagUpFrontier2 or upflagUpFrontier3 or upflagUpFrontier4
  23.  
  24. upFractal = (upflagDownFrontier and flagUpFrontier)
  25.  
  26.  
  27. // downFractal
  28. bool downflagDownFrontier = true
  29. bool downflagUpFrontier0 = true
  30. bool downflagUpFrontier1 = true
  31. bool downflagUpFrontier2 = true
  32. bool downflagUpFrontier3 = true
  33. bool downflagUpFrontier4 = true
  34.  
  35. for i = 1 to n
  36. downflagDownFrontier := downflagDownFrontier and (low[n-i] > low[n])
  37. downflagUpFrontier0 := downflagUpFrontier0 and (low[n+i] > low[n])
  38. downflagUpFrontier1 := downflagUpFrontier1 and (low[n+1] >= low[n] and low[n+i + 1] > low[n])
  39. downflagUpFrontier2 := downflagUpFrontier2 and (low[n+1] >= low[n] and low[n+2] >= low[n] and low[n+i + 2] > low[n])
  40. downflagUpFrontier3 := downflagUpFrontier3 and (low[n+1] >= low[n] and low[n+2] >= low[n] and low[n+3] >= low[n] and low[n+i + 3] > low[n])
  41. downflagUpFrontier4 := downflagUpFrontier4 and (low[n+1] >= low[n] and low[n+2] >= low[n] and low[n+3] >= low[n] and low[n+4] >= low[n] and low[n+i + 4] > low[n])
  42. flagDownFrontier = downflagUpFrontier0 or downflagUpFrontier1 or downflagUpFrontier2 or downflagUpFrontier3 or downflagUpFrontier4
  43.  
  44. downFractal = (downflagDownFrontier and flagDownFrontier)
  45.  
  46. plotshape(downFractal, style=shape.labelup, location=location.belowbar, offset=-n, color=#f443367e, size = size.tiny)
  47. plotshape(upFractal, style=shape.labeldown, location=location.abovebar, offset=-n, color=#00964b7a, size = size.tiny)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement