Experimental and probably can be improved further.
Method of deriving support/resistence is as follows:
Calculate Zigzags and start pushing them to SR array as and when they form
If any of the existing item is within the small distance - merge them. ATR is used to find if the prices are close by.
Whenever we merge two pivots, strength of support keeps increasing. This means, price has bounced off this point more time. Hence, keep track of number of pivots merged together.
Keep removing old pivots which are far away based on Loopback input
And that's all we got the full list of support and resistence points.
Now, to filter insignificant pivots, chose only those points which has been merged by more than Min Pivots input. Width of the support/resistence lines also will be thicker for the pivots which has more count. Hence thicker line imply strong support and resistence whereas the thinner ones are minor ones.