This algorithm draws supports/resistance levels automatically based on historic candle density at each height. The basic idea is the levels where price is rejected quickly is likely to have fewer candles in the past than the levels above and below. This does not take volume into account. The lookback and number of levels has to be kept low to prevent too many calculations. I haven't looked if there's new pinescript features to let me do this more efficiently yet.
It checks for candle density to decrease once or twice and then increase once or twice before it draws a line at that lowest level. There's an option to draw more lines by only checking for a single decrease and increase.
It likely won't catch all the levels but it seems to get a good amount to help me position stops on other side of S/R or exits on the trade side of S/R.
I've been meaning to share more scripts but keep forgetting. Keeping my scripts free but feel free to like or tip haha.