Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //@version=5
- indicator("Williams Fractals", shorttitle="Fractals", format=format.price, precision=0, overlay=true)
- // Define "n" as the number of periods and keep a minimum value of 2 for error handling.
- n = input.int(title="Periods", defval=2, minval=2)
- // UpFractal
- bool upflagDownFrontier = true
- bool upflagUpFrontier0 = true
- bool upflagUpFrontier1 = true
- bool upflagUpFrontier2 = true
- bool upflagUpFrontier3 = true
- bool upflagUpFrontier4 = true
- for i = 1 to n
- upflagDownFrontier := upflagDownFrontier and (high[n-i] < high[n])
- upflagUpFrontier0 := upflagUpFrontier0 and (high[n+i] < high[n])
- upflagUpFrontier1 := upflagUpFrontier1 and (high[n+1] <= high[n] and high[n+i + 1] < high[n])
- upflagUpFrontier2 := upflagUpFrontier2 and (high[n+1] <= high[n] and high[n+2] <= high[n] and high[n+i + 2] < high[n])
- 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])
- 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])
- flagUpFrontier = upflagUpFrontier0 or upflagUpFrontier1 or upflagUpFrontier2 or upflagUpFrontier3 or upflagUpFrontier4
- upFractal = (upflagDownFrontier and flagUpFrontier)
- // downFractal
- bool downflagDownFrontier = true
- bool downflagUpFrontier0 = true
- bool downflagUpFrontier1 = true
- bool downflagUpFrontier2 = true
- bool downflagUpFrontier3 = true
- bool downflagUpFrontier4 = true
- for i = 1 to n
- downflagDownFrontier := downflagDownFrontier and (low[n-i] > low[n])
- downflagUpFrontier0 := downflagUpFrontier0 and (low[n+i] > low[n])
- downflagUpFrontier1 := downflagUpFrontier1 and (low[n+1] >= low[n] and low[n+i + 1] > low[n])
- downflagUpFrontier2 := downflagUpFrontier2 and (low[n+1] >= low[n] and low[n+2] >= low[n] and low[n+i + 2] > low[n])
- 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])
- 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])
- flagDownFrontier = downflagUpFrontier0 or downflagUpFrontier1 or downflagUpFrontier2 or downflagUpFrontier3 or downflagUpFrontier4
- downFractal = (downflagDownFrontier and flagDownFrontier)
- plotshape(downFractal, style=shape.labelup, location=location.belowbar, offset=-n, color=#f443367e, size = size.tiny)
- 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