OPEN-SOURCE SCRIPT
VCP Tightness Score

VCP Tightness Score
Original concept and script by joshdm_94 (@ETFbreakouts on X). Modified and extended with a 3-zone color system and single dot display.
Spotting a true Volatility Contraction Pattern requires more than just looking for small candles. A 5% price swing might be tight for a high-beta growth stock but extremely loose for a slower mover. This indicator solves that by measuring how tight a stock's recent price action is relative to its own historical volatility — not against a fixed number.
How It Works
The script calculates two metrics over your chosen lookback period (default 5 bars):
- Closing Spread: the percentage difference between the highest and lowest close
- Total Swing Spread: the percentage difference between the absolute high and low
Both are divided by the stock's Average Daily Range % and normalized on a 0–100 scale based on a historical baseline window (default 50 bars). A score near 0 means the stock is compressing tighter than at any point in the baseline period. A score near 100 means price action is wide and volatile.
How to Read It
A single colored dot in the top right corner of your chart updates in real time:
- 🟢 Green (0–15): Entry zone. Price is compressed and ready. Look for a pivot with volume dry-up confirmation.
- 🟠 Orange (16–40): Still contracting. Keep it on your watchlist and check back daily.
- 🔴 Red (41–100): Too loose. Stay away until volatility contracts further.
Inputs
- Tightness Lookback: bars to measure current compression (default 5)
- ADR Lookback: bars to calculate the stock's normal volatility (default 20)
- Historical Baseline: normalization window for the 0–100 score (default 50)
Best Use Cases
Designed for daily and weekly charts. Most effective when used alongside volume dry-ups to confirm VCPs, high tight flags, and cup and handle bases before the breakout.
Original concept and script by joshdm_94 (@ETFbreakouts on X). Modified and extended with a 3-zone color system and single dot display.
Spotting a true Volatility Contraction Pattern requires more than just looking for small candles. A 5% price swing might be tight for a high-beta growth stock but extremely loose for a slower mover. This indicator solves that by measuring how tight a stock's recent price action is relative to its own historical volatility — not against a fixed number.
How It Works
The script calculates two metrics over your chosen lookback period (default 5 bars):
- Closing Spread: the percentage difference between the highest and lowest close
- Total Swing Spread: the percentage difference between the absolute high and low
Both are divided by the stock's Average Daily Range % and normalized on a 0–100 scale based on a historical baseline window (default 50 bars). A score near 0 means the stock is compressing tighter than at any point in the baseline period. A score near 100 means price action is wide and volatile.
How to Read It
A single colored dot in the top right corner of your chart updates in real time:
- 🟢 Green (0–15): Entry zone. Price is compressed and ready. Look for a pivot with volume dry-up confirmation.
- 🟠 Orange (16–40): Still contracting. Keep it on your watchlist and check back daily.
- 🔴 Red (41–100): Too loose. Stay away until volatility contracts further.
Inputs
- Tightness Lookback: bars to measure current compression (default 5)
- ADR Lookback: bars to calculate the stock's normal volatility (default 20)
- Historical Baseline: normalization window for the 0–100 score (default 50)
Best Use Cases
Designed for daily and weekly charts. Most effective when used alongside volume dry-ups to confirm VCPs, high tight flags, and cup and handle bases before the breakout.
开源脚本
秉承TradingView的精神,该脚本的作者将其开源,以便交易者可以查看和验证其功能。向作者致敬!您可以免费使用该脚本,但请记住,重新发布代码须遵守我们的网站规则。
免责声明
这些信息和出版物并非旨在提供,也不构成TradingView提供或认可的任何形式的财务、投资、交易或其他类型的建议或推荐。请阅读使用条款了解更多信息。
开源脚本
秉承TradingView的精神,该脚本的作者将其开源,以便交易者可以查看和验证其功能。向作者致敬!您可以免费使用该脚本,但请记住,重新发布代码须遵守我们的网站规则。
免责声明
这些信息和出版物并非旨在提供,也不构成TradingView提供或认可的任何形式的财务、投资、交易或其他类型的建议或推荐。请阅读使用条款了解更多信息。