Finding swing highs & lows is very easy when you start on that ... just define a swing high as an N-ring pivot, meaning it is the highest bar in a group of 2N+1 bars, with N bars stricly lower than the swing high on its left side, and N bars lower or equal to the swing high on the right side.
But in my experience it takes more than that (regardless of using a minute-based or volume-based timeframe), because you really want:
- a minimum price excursion on both sides of the swing H/L
- a minimum elapsed time on both sides of the swing H/L
- a minimum volume transacted on both sides of the swing H/L
Different levels of requirements will help define different strengths of these swing highs/lows.
Once you have "reliable" swing highs/lows (peaks & troughs of price action on the chart), you can either use each of them independently as a potential S/R level, or get into more sophistication and mandate that a swing high (low) be later confirmed by an opposite swing low (high) at ~the same level (old resistance becomes support) to make it a confirmed S/R level.
(I voluntarily skipped DT/3T DB/3B out, because the more a level is tested and the most likely it will break, but that can be a good - or better - trade, too).