OPEN-SOURCE SCRIPT
Automatic Support & Resistance Indicator

The script finds swing pivot highs/lows (local turning points) on multiple timeframes (your execution TF + 1H + 4H). Each pivot price becomes a candidate level.
When a new pivot appears, it either:
Merges into an existing nearby level (within a tolerance), or
Creates a new level.
The merge tolerance is based on ATR × multiplier and a tick-based minimum.
Each level keeps simple stats:
Touches = how many pivot events have merged into that level (a proxy for “importance”)
Updated time = how recently it was reinforced
Source tags = which TFs contributed pivots (e.g., 15m/1H/4H)
It then selects which levels to display:
Always includes the nearest level below price (support candidate) and nearest level above price (resistance candidate).
Fills the rest (up to maxLevels) by a score dominated by touches + recency.
“Support vs Resistance” is dynamic:
If current price is above a level → it’s treated/labeled as Support.
If current price is below a level → it’s treated/labeled as Resistance.
Lines are drawn as true horizontal levels:
Using extend=extend.both, and the script only updates the Y price, so levels stay glued to price when you pan/zoom.
Labels show what you’re seeing:
S or R (current role)
touch count (strength proxy)
source TF tags (where the level came from)
optional * marking the nearest S/R.
If you like this indicator, I would be happy if you could paypal me some coffee money: paypal.me/Ccholl
When a new pivot appears, it either:
Merges into an existing nearby level (within a tolerance), or
Creates a new level.
The merge tolerance is based on ATR × multiplier and a tick-based minimum.
Each level keeps simple stats:
Touches = how many pivot events have merged into that level (a proxy for “importance”)
Updated time = how recently it was reinforced
Source tags = which TFs contributed pivots (e.g., 15m/1H/4H)
It then selects which levels to display:
Always includes the nearest level below price (support candidate) and nearest level above price (resistance candidate).
Fills the rest (up to maxLevels) by a score dominated by touches + recency.
“Support vs Resistance” is dynamic:
If current price is above a level → it’s treated/labeled as Support.
If current price is below a level → it’s treated/labeled as Resistance.
Lines are drawn as true horizontal levels:
Using extend=extend.both, and the script only updates the Y price, so levels stay glued to price when you pan/zoom.
Labels show what you’re seeing:
S or R (current role)
touch count (strength proxy)
source TF tags (where the level came from)
optional * marking the nearest S/R.
If you like this indicator, I would be happy if you could paypal me some coffee money: paypal.me/Ccholl
Açık kaynak kodlu komut dosyası
Gerçek TradingView ruhuyla, bu komut dosyasının mimarı, yatırımcıların işlevselliğini inceleyip doğrulayabilmesi için onu açık kaynaklı hale getirdi. Yazarı tebrik ederiz! Ücretsiz olarak kullanabilseniz de, kodu yeniden yayınlamanın Topluluk Kurallarımıza tabi olduğunu unutmayın.
Feragatname
Bilgiler ve yayınlar, TradingView tarafından sağlanan veya onaylanan finansal, yatırım, alım satım veya diğer türden tavsiye veya öneriler anlamına gelmez ve teşkil etmez. Kullanım Koşulları bölümünde daha fazlasını okuyun.
Açık kaynak kodlu komut dosyası
Gerçek TradingView ruhuyla, bu komut dosyasının mimarı, yatırımcıların işlevselliğini inceleyip doğrulayabilmesi için onu açık kaynaklı hale getirdi. Yazarı tebrik ederiz! Ücretsiz olarak kullanabilseniz de, kodu yeniden yayınlamanın Topluluk Kurallarımıza tabi olduğunu unutmayın.
Feragatname
Bilgiler ve yayınlar, TradingView tarafından sağlanan veya onaylanan finansal, yatırım, alım satım veya diğer türden tavsiye veya öneriler anlamına gelmez ve teşkil etmez. Kullanım Koşulları bölümünde daha fazlasını okuyun.