Indikator dan strategi
NOVA Breakout Signals v2.2 (TF M30)A clean, rules-based breakout signal tool for 30-minute charts.
It detects Dow swing breakouts and filters them with RSI, MACD and Volume so you only see the higher-quality entries. The script does not place trades and does not calculate SL/TP – it only prints clear LONG/SHORT labels at the entry price.
⸻
How it works
1. Timeframe enforcement – Signals are generated only on M30. On other timeframes the script shows a notice and stays silent.
2. Breakout engine (Dow swings) – The last confirmed swing high/low (pivots) is tracked.
• Breakout Up: bar closes above the last swing high by a small buffer.
• Breakout Down: bar closes below the last swing low by a small buffer.
3. Quality filters (all must be true):
• RSI (default length 30):
• Long: RSI > threshold and rising.
• Short: RSI < threshold and falling.
• MACD (12/26/9):
• Long: histogram > 0 and line > signal.
• Short: histogram < 0 and line < signal.
• Volume: current volume > SMA(volume, 20) × multiplier.
4. Debounce / anti-spam
• Cooldown of 4 hours (8 M30 bars) after any signal.
• Minimum price distance from the previous signal to avoid clustered labels.
Signals appear once the bar closes (barstate.isconfirmed). No swing lines are drawn to keep the chart clean; only entry labels are shown.
⸻
Inputs (key)
• RSI length & thresholds for Long/Short confirmation.
• MACD uses 12/26/9 (fixed).
• Volume multiplier (relative to SMA 20).
• Breakout buffer %, Cooldown hours, Min distance %.
• Show labels (on/off).
⸻
Usage tips
• Start with gold/major FX/indices on M30; use “Once per bar close” if you attach alerts.
• Increase the breakout buffer and volume multiplier in choppy markets.
• Tighten RSI thresholds (e.g., 55/45) if you want fewer but stronger signals.
⸻
Notes & limitations
• Pivots confirm after a few bars by definition; signals themselves are printed only on confirmed bar close and do not repaint once shown.
• This is a signal indicator, not investment advice. Always manage risk.
Kalman VWAP Filter [BackQuant]Kalman VWAP Filter
A precision-engineered price estimator that fuses Kalman filtering with the Volume-Weighted Average Price (VWAP) to create a smooth, adaptive representation of fair value. This hybrid model intelligently balances responsiveness and stability, tracking trend shifts with minimal noise while maintaining a statistically grounded link to volume distribution.
If you would like to see my original Kalman Filter, please find it here:
Concept overview
The Kalman VWAP Filter is built on two core ideas from quantitative finance and control theory:
Kalman filtering — a recursive Bayesian estimator used to infer the true underlying state of a noisy system (in this case, fair price).
VWAP anchoring — a dynamic reference that weights price by traded volume, representing where the majority of transactions have occurred.
By merging these concepts, the filter produces a line that behaves like a "smart moving average": smooth when noise is high, fast when markets trend, and self-adjusting based on both market structure and user-defined noise parameters.
How it works
Measurement blend : Combines the chosen Price Source (e.g., close or hlc3) with either a Session VWAP or a Rolling VWAP baseline. The VWAP Weight input controls how much the filter trusts traded volume versus price movement.
Kalman recursion : Each bar updates an internal "state estimate" using the Kalman gain, which determines how much to trust new observations vs. the prior state.
Noise parameters :
Process Noise controls agility — higher values make the filter more responsive but also more volatile.
Measurement Noise controls smoothness — higher values make it steadier but slower to adapt.
Filter order (N) : Defines how many parallel state estimates are used. Larger orders yield smoother output by layering multiple one-dimensional Kalman passes.
Final output : A refined price trajectory that captures VWAP-adjusted fair value while dynamically adjusting to real-time volatility and order flow.
Why this matters
Most smoothing techniques (EMA, SMA, Hull) trade off lag for smoothness. Kalman filtering, however, adaptively rebalances that tradeoff each bar using probabilistic weighting, allowing it to follow market state changes more efficiently. Anchoring it to VWAP integrates microstructure context — capturing where liquidity truly lies rather than only where price moves.
Use cases
Trend tracking : Color-coded candle painting highlights shifts in slope direction, revealing early trend transitions.
Fair value mapping : The line represents a continuously updated equilibrium price between raw price action and VWAP flow.
Adaptive moving average replacement : Outperforms static MAs in variable volatility regimes by self-adjusting smoothness.
Execution & reversion logic : When price diverges from the Kalman VWAP, it may indicate short-term imbalance or overextension relative to volume-adjusted fair value.
Cross-signal framework : Use with standard VWAP or other filters to identify convergence or divergence between liquidity-weighted and state-estimated prices.
Parameter guidance
Process Noise : 0.01–0.05 for swing traders, 0.1–0.2 for intraday scalping.
Measurement Noise : 2–5 for normal use, 8+ for very smooth tracking.
VWAP Weight : 0.2–0.4 balances both price and VWAP influence; 1.0 locks output directly to VWAP dynamics.
Filter Order (N) : 3–5 for reactive short-term filters; 8–10 for smoother institutional-style baselines.
Interpretation
When price > Kalman VWAP and slope is positive → bullish pressure; buyers dominate above fair value.
When price < Kalman VWAP and slope is negative → bearish pressure; sellers dominate below fair value.
Convergence of price and Kalman VWAP often signals equilibrium; strong divergence suggests imbalance.
Crosses between Kalman VWAP and the base VWAP can hint at shifts in short-term vs. long-term liquidity control.
Summary
The Kalman VWAP Filter blends statistical estimation with market microstructure awareness, offering a refined alternative to static smoothing indicators. It adapts in real time to volatility and order flow, helping traders visualize balance, transition, and momentum through a lens of probabilistic fair value rather than simple price averaging.
Average Daily Session Range PRO [Capitalize Labs]Average Daily Session Range PRO
The Average Daily Session Range PRO (ADSR PRO) is a professional-grade analytical tool designed to quantify and visualize the probabilistic range behavior of intraday sessions.
It calculates directional range statistics using historical session data to show how far price typically moves up or down from the session open.
This helps traders understand session volatility profiles, range asymmetry, and probabilistic extensions relative to prior performance.
Key Features
Asymmetric Range Modeling: Separately tracks average upside and downside excursions from each session open, revealing directional bias and volatility imbalance.
Probability Engine Modes: Choose between Rolling Window (fixed-length lookback) and Exponential Decay (weighted historical memory) to control how recent or historic data influences probabilities.
Session-Aware Statistics: Calculates values independently for each defined session, allowing region-specific insights (e.g., Tokyo, London, New York).
Dynamic Range Table: Displays key metrics such as average up/down ticks, expected range extensions, and percentage probabilities.
Adaptive Display: Works across timeframes and instruments, automatically aligning with user-defined session start and end times.
Visual Clarity: Includes clean range markers and labels optimized for both backtesting and live-chart analysis.
Intended Use
ADSR PRO is a statistical reference indicator.
It does not generate buy/sell signals or predictive forecasts.
Its purpose is to help users observe historical session behavior and volatility tendencies to support their own discretionary analysis.
Credits
Developed by Capitalize Labs, specialists in quantitative and discretionary market research tools.
Risk Warning
This material is educational research only and does not constitute financial advice, investment recommendation, or a solicitation to buy or sell any instrument.
Foreign exchange and CFDs are complex, leveraged products that carry a high risk of rapid losses; leverage amplifies both gains and losses, and you should not trade with funds you cannot afford to lose.
Market conditions can change without notice, and news or illiquidity may cause gaps and slippage; stop-loss orders are not guaranteed.
The analysis presented does not take into account your objectives, financial situation, or risk tolerance.
Before acting, assess suitability in light of your circumstances and consider seeking advice from a licensed professional.
Past performance and back-tested or hypothetical scenarios are not reliable indicators of future results, and no outcome or level mentioned here is assured.
You are solely responsible for all trading decisions, including position sizing and risk management.
No external links, promotions, or contact details are provided, in line with TradingView House Rules.
EMA HeatmapEMA Heatmap — Indicator Description
The EMA Order Heatmap is a visual trend-structure tool designed to show whether the market is currently trending bullish, trending bearish, or moving through a neutral consolidation phase. It evaluates the alignment of multiple exponential moving averages (EMAs) at three different structural layers: short-term daily, medium-term daily, and weekly macro trend. This creates a quick and intuitive picture of how well price movement is organized across timeframes.
Each layer of the heatmap is scored from bearish to bullish based on how the EMAs are stacked relative to each other. When EMAs are in a fully bullish configuration, the row displays a bright green or lime color. Fully bearish alignment is shown in red. Yellow tones appear when the EMAs are mixed or compressing, indicating uncertainty, trend exhaustion, or a change in market character. The three rows combined offer a concise view of whether strength or weakness is isolated to one timeframe or broad across the market.
This indicator is best used as a trend filter before making trading decisions. Traders may find more consistent setups when the majority of the heatmap supports the direction of their trade. Green-dominant conditions suggest a trending bullish environment where long trades can be favored. Red-dominant conditions indicate bearish momentum and stronger potential for short opportunities. When yellow becomes more prominent, the market may be transitioning, ranging, or gearing up for a breakout, making timing more challenging and risk higher.
• Helps quickly identify directional bias
• Highlights when trends strengthen, weaken, or turn
• Provides insight into whether momentum is supported by higher timeframes
• Encourages traders to avoid fighting market structure
It is important to recognize the limitations. EMAs are lagging indicators, so the heatmap may confirm a trend after the initial move is underway, especially during fast reversals. In sideways or low-volume environments, the structure can shift frequently, reducing clarity. This tool does not generate entry or exit signals on its own and should be paired with price action, momentum studies, or support and resistance analysis for precise trade execution.
The EMA Order Heatmap offers a clean and reliable way to stay aligned with the broader market environment and avoid lower-quality trades in indecisive conditions. It supports more disciplined decision-making by helping traders focus on setups that match the prevailing structural trend.
Fibonacci levels MTF 2WEEK KKKKA Fibonacci arc trading strategy uses circular arcs drawn at Fibonacci retracement levels (38.2%, 50%, 61.8%) to identify potential support and resistance zones, often intersecting with a trend line. This strategy helps traders anticipate price reversals or pullbacks, and it should be used in conjunction with other indicators
Fibonacci Retracement MTF/LOG 3 WEEK KKKKA Fibonacci arc trading strategy uses circular arcs drawn at Fibonacci retracement levels (38.2%, 50%, 61.8%) to identify potential support and resistance zones, often intersecting with a trend line. This strategy helps traders anticipate price reversals or pullbacks, and it should be used in conjunction with other indicators
Fibonacci Retracement MTF/LOG 2WEEK KKKKFibonacci retracment should be used to create a line of lines to justify the rest of indicators to reduce stress in indicators because we should not shout
TI65**TI65 (Trend Intensity 65)** is a technical indicator designed to measure the strength and momentum of a trend over two distinct periods. It compares a short-term 7-period simple moving average (SMA) with a long-term 65-period SMA, producing a ratio that helps traders identify shifts in market momentum and trend direction.
- When the **TI65 value is greater than 1**, it indicates that the short-term moving average is above the long-term average, suggesting increasing momentum and a potentially bullish trend.
- When the **TI65 value drops below 1**, it signals weakening short-term momentum relative to the longer-term trend, often interpreted as a bearish or consolidating phase.
This indicator can be applied to both price and volume data, making it useful for identifying periods of strong volume surges or price movements. By observing changes in the TI65 ratio, traders can pinpoint low-risk entry points for trend-following strategies and quickly recognize periods of market transition.
TI65 is commonly used by momentum and breakout traders for screening strong candidates and confirming the sustainability of ongoing trends. It is simple, effective, and easily implemented via custom scripts on popular platforms like TradingView.
Dow Jones Trading System with PivotsThis TradingView indicator, tailored for the 30-minute Dow Jones (^DJI) chart, supports DIA options trading with a trend-following approach. It features a 30-period SMA (blue) and a 60-period SMA (red), with an optional 90-period SMA (orange) drawn from rauItrades' Dow SMA outfit. A bullish crossover (30 SMA > 60 SMA) displays a green "BUY" triangle below the bar for potential DIA longs, while a bearish crossunder (30 SMA < 60 SMA) shows a red "SELL" triangle above for shorts or exits. The background turns green (bullish) or red (bearish) to indicate trend bias. Pivot points highlight recent highs (orange circles) and lows (purple circles) for support/resistance, using a 5-bar lookback. Alerts notify for crossovers.
NASDAQ Trading System with PivotsThis TradingView indicator, designed for the 30-minute NASDAQ (^IXIC) chart, guides QQQ options trading using a trend-following strategy. It plots a 20-period SMA (blue) and a 100-period SMA (red), with an optional 250-period SMA (orange) inspired by rauItrades' NASDAQ SMA outfit. A bullish crossover (20 SMA > 100 SMA) triggers a green "BUY" triangle below the bar, signaling a potential long position in QQQ, while a bearish crossunder (20 SMA < 100 SMA) shows a red "SELL" triangle above, indicating a short or exit. The background colors green (bullish) or red (bearish) for trend bias. Orange circles (recent highs) and purple circles (recent lows) mark support/resistance levels using 5-bar pivot points.
Volume TI65**TI65 (Trend Intensity 65)** is a technical indicator designed to measure the strength and momentum of a trend over two distinct periods. It compares a short-term 7-period simple moving average (SMA) with a long-term 65-period SMA, producing a ratio that helps traders identify shifts in market momentum and trend direction.
- When the **TI65 value is greater than 1**, it indicates that the short-term moving average is above the long-term average, suggesting increasing momentum and a potentially bullish trend.
- When the **TI65 value drops below 1**, it signals weakening short-term momentum relative to the longer-term trend, often interpreted as a bearish or consolidating phase.
This indicator can be applied to both price and volume data, making it useful for identifying periods of strong volume surges or price movements. By observing changes in the TI65 ratio, traders can pinpoint low-risk entry points for trend-following strategies and quickly recognize periods of market transition.
TI65 is commonly used by momentum and breakout traders for screening strong candidates and confirming the sustainability of ongoing trends. It is simple, effective, and easily implemented via custom scripts on popular platforms like TradingView.
S&P Trading System with PivotsThe S&P Trading System with Pivots is a TradingView indicator designed for the 30-minute SPX chart to guide SPY options trading. It uses a trend-following strategy with:
10 SMA and 50 SMA: Plots a 10-period (blue) and 50-period (red) Simple Moving Average. A bullish crossover (10 SMA > 50 SMA) signals a potential buy (green triangle below bar), while a bearish crossunder (10 SMA < 50 SMA) signals a sell or exit (red triangle above bar).
Trend Bias: Colors the background green (bullish) or red (bearish) based on SMA positions.
Pivot Points: Marks recent highs (orange circles) and lows (purple circles) as potential resistance and support levels, using a 5-bar lookback period.
WaveTrend RBF What it does
WT-RBF extracts a “wave” of momentum by subtracting a fast Gaussian-weighted smoother from a slow one, then robust-normalizes that wave with a median/MAD proxy to produce a z-score (z). A short EMA of z forms the signal line. Optional dynamic thresholds use the MAD of z itself so overbought/oversold levels adapt to volatility regimes.
How it’s built:
Radial (Gaussian) smoothers
Causal, exponentially-decaying weights over the last radius bars using σ (sigma) to control spread.
fast = rbf_smooth(src, fastR, fastSig)
slow = rbf_smooth(src, slowR, slowSig)
wave = fast − slow (band-pass)
Robust normalization
A two-stage EMA approximates the median; MAD is estimated from EMA of absolute deviations and scaled by 1.4826 to be stdev-comparable.
z = (wave − center) / MAD
Thresholds
Dynamic OB/OS: ±2.5 × MAD(z) (or fixed levels when disabled)
Reading the indicator
Bull Cross: z crosses above sig → momentum turning up.
Bear Cross: z crosses below sig → momentum turning down.
Exits / Bias flips: zero-line crosses (below 0 → exit long bias; above 0 → exit short bias).
Overbought/Oversold: z > +thrOB or z < thrOS. With dynamics on, the bands widen/narrow with recent noise; with dynamics off, static guides at ±2 / ±2.5 are shown.
Core Inputs
Source: Price series to analyze.
Fast Radius / Fast Sigma (defaults 6 / 2.5): Shorter radius/smaller σ = snappier, higher-freq.
Slow Radius / Slow Sigma (defaults 14 / 5.0): Larger radius/σ = smoother, lower-freq baseline.
Normalization
Robust Z-Score Window (default 200): Lookback for median/MAD proxy (stability vs responsiveness).
Small ε for MAD: Floor to avoid division by zero.
Signal & Thresholds
Dynamic Thresholds (MAD-based) (on by default): Adaptive OB/OS; toggle off to use fixed guides.
Visuals
Shade OB/OS Regions: Background highlights when z is beyond thresholds.
Show Zero Line: Midline reference.
(“Plot Cross Markers” input is present for future use.)
Rolling Performance Metrics TableRolling Performance Metrics Table
A clean, customizable table overlay that displays rolling performance metrics across multiple time periods. Perfect for quickly assessing price momentum and performance trends at a glance.
FEATURES:
- Displays performance across 5 time periods: 1 Week, 3 Month, 6 Month, 1 Year, and 2 Year
- Shows historical price at the start of each period
- Calculates both absolute price change and percentage change
- Color-coded results: Green for positive performance, Red for negative performance
- Fully transparent design with no background or borders - text floats cleanly over your chart
- Customizable table position (9 placement options)
DISPLAY COLUMNS:
1. Period - The lookback timeframe
2. Price - The historical price at the start of the period
3. Change (Value) - Absolute price change from the period start
4. Change (%) - Percentage return over the period
CUSTOMIZATION:
- Adjust the number of bars for each period (default: 1 Week = 5 bars, 3 Month = 63 bars, 6 Month = 126 bars, 1 Year = 252 bars, 2 Year = 504 bars)
- Choose from 9 table positions: Top, Middle, Bottom combined with Left, Center, Right
- Default position: Middle Left
USAGE:
Perfect for traders who want to quickly assess momentum across multiple timeframes. The transparent overlay design ensures minimal obstruction of chart analysis while providing critical performance data at a glance.
NOTE:
- The table only appears on the last bar of your chart
- Customize bar counts in settings to match your specific timeframe needs (e.g., daily vs hourly charts)
- "N/A" appears when historical data is insufficient for the selected period
TTM Squeeze Pro - IntradayTTM Squeeze Pro – Intraday (AI MTF Edition)
Design Rationale
This indicator is built to help traders identify when markets are consolidating, when volatility is building (squeeze), and when a breakout or trend is starting — all across multiple timeframes.
The design combines three powerful ideas:
Volatility Compression & Expansion (TTM Squeeze Logic):
By comparing Bollinger Bands (BB) and Keltner Channels (KC), the indicator detects when volatility contracts (BB inside KC). These moments often precede explosive moves. White dots on the BB basis line mark these “squeeze” periods.
Trend Strength & Direction (ADX System):
The ADX (Average Directional Index) measures how strong a trend is.
ADX rising above the threshold → trending market.
ADX falling below the threshold → consolidation.
The system classifies each bar as Trending Up, Trending Down, Consolidating, or Neutral, depending on ADX and momentum direction.
Multi-Timeframe (MTF) Alignment:
The same logic is applied to several timeframes (1m, 3m, 5m, 15m, 30m, 1h).
A compact table at the top-right shows each timeframe’s trend and squeeze strength.
This helps traders see whether short-term and higher timeframes are aligned, improving trade confidence and timing.
The AI Enhancer automatically adjusts all parameters (ADX, BB, KC lengths, and thresholds) depending on the current chart timeframe, keeping signals consistent between scalping and swing trading setups.
Trend and squeeze strengths are normalized on a 1–9 scale, giving users a quick numerical sense of trend power and squeeze intensity. The design emphasizes clarity, speed, and adaptability — critical for intraday trading decisions.
How to Use
Identify a Squeeze Setup:
Look for white dots on the chart — this marks low volatility and potential energy buildup.
Wait for Breakout Confirmation:
When the white dots disappear, volatility expands.
Check the MTF table — if multiple timeframes show green (uptrend) or red (downtrend) in the “TR” column, momentum is aligning.
Enter the Trade:
Go long if breakout happens above BB basis and most timeframes show green.
Go short if breakout happens below BB basis and most timeframes show red.
Exit or Manage Position:
When new white dots appear → volatility contracting again → consider exiting or tightening stops.
If MTF colors become mixed → trend losing strength.
In Summary
The TTM Squeeze Pro – Intraday AI MTF Indicator blends volatility analysis, trend strength, momentum, and multi-timeframe alignment into one adaptive tool.
Its design aims to simplify complex market behavior into a visual, data-backed format — enabling traders to catch high-probability breakout trends early and avoid false moves during low-volatility phases.
Multi-Condition Alert Builder⚡ Multi-Condition Alert Builder — Modular Alert Framework
The Multi-Condition Alert Builder is a powerful, code-free alert engine for TradingView. It allows traders to build complex multi-condition Buy/Sell alerts using simple dropdown menus — no Pine Script experience required.
Combine up to five separate conditions per side and trigger alerts based on your own custom logic.
🧠 How It Works
Each “Buy” and “Sell” side includes up to five configurable slots, where you can define:
Two data sources (indicators, price, or custom inputs)
A comparison or crossover condition
A static value (optional)
Once your slots are defined, the script combines these individual conditions according to your chosen mode:
Any – triggers when any enabled condition is true
All – same bar – triggers only when all enabled conditions occur on the same bar
All – within bars – allows conditions to complete within a user-defined lookback window
This gives traders fine-grained control to design powerful, adaptive alert logic directly in the chart — no coding required.
⚙️ Key Features
🧩 Up to 5 Buy and 5 Sell Slots – Fully customizable condition slots
🧠 Combine Logic Modes – Any / All / Within Bars flexibility
🔔 Custom Alerts – Generates separate Buy, Sell, or combined alert events
⏱️ Close-Bar Confirmation Option – Avoids premature signals on open candles
💡 Visual Signals – Plots arrows on chart for clear alert visualization
🔄 Indicator-Agnostic – Works with any sources or indicators available in your chart
🧮 Combine Logic Modes Explained
Mode Description
Any Triggers an alert if any active condition is met
All – same bar Requires all active slots to confirm on the same candle
All – within bars Conditions may complete within a set lookback window
🧭 Example Use Cases
Combine RSI, MACD, and MA crossovers for precision entries
Create alert triggers for momentum confluence setups
Build “stacked signal” logic (e.g., RSI < 30 and MACD crossover within 3 bars)
Quickly prototype and test multi-factor alert conditions
🧠 Usage Tip
Once your conditions are set, simply add TradingView alerts tied to:
“BUY↟” for long signals
“SELL↡” for short signals
“ANY ALERT” to trigger on either event
The Alert Builder becomes especially powerful when combined with your favorite custom indicators — enabling smart, automated alerts without extra coding.
⚡ In Short
Build. Combine. Alert.
The Multi-Condition Alert Builder gives you total flexibility to design complex alert logic — visually, intuitively, and efficiently — right on your chart.
Bollinger Band Width Oscillator %🧠 Bollinger Band Width Oscillator %
The Bollinger Band Width Oscillator % is a volatility-focused tool that measures the relative width of Bollinger Bands and transforms it into an oscillator format. It helps traders visualize volatility expansions and contractions directly in an indicator pane — a powerful way to anticipate breakout or consolidation phases.
🔍 How It Works
Band Width %: Calculates the percentage distance between the upper and lower Bollinger Bands relative to the basis (SMA).
Smoothed Output: The raw bandwidth is smoothed using a moving average for cleaner, more stable signals.
Dynamic Volatility Zones: The script automatically computes average, high, and low volatility thresholds — each dynamically adapting to market conditions.
User-Adjustable Multipliers: Control how sensitive your high/low zones are with the High Zone Multiplier and Low Zone Multiplier inputs.
⚙️ Key Features
📊 Oscillator Format – Easy-to-read visualization of volatility compression and expansion.
🔥 High/Low Volatility Detection – Automatic labeling and color-coded alerts for shifts in volatility.
🧩 Dynamic Thresholds – Zones adjust automatically with market activity for adaptive sensitivity.
🧠 Hysteresis Logic – Prevents rapid signal flipping, improving clarity and reliability.
🎨 Custom Visuals – Adjustable smoothing and background highlights for quick interpretation.
📈 Trading Applications
Identify Breakouts: Rising bandwidth often precedes price breakouts.
Spot Consolidations: Low bandwidth indicates tightening volatility and potential range trades.
Volatility Regime Analysis: Understand market rhythm and adapt strategies accordingly.
⚡ Inputs
Parameter Description
Band Length Period for Bollinger Band calculation
Band Multiplier Standard deviation multiplier for the bands
Source Price source (default: close)
Smoothing Period for smoothing the oscillator line
High Zone Multiplier Adjusts the high-volatility threshold
Low Zone Multiplier Adjusts the low-volatility threshold
Highlight Volatility Zones Optional background color overlay
🧊 Usage Tip
Combine this indicator with momentum tools or price action analysis to confirm trade setups. Watch for transitions from low to high volatility zones — these often signal the beginning of major market moves.
Ehlers Ultrasmooth Filter (USF)# USF: Ultrasmooth Filter
## Overview and Purpose
The Ultrasmooth Filter (USF) is an advanced signal processing tool that represents the pinnacle of noise reduction technology for financial time series. Developed by John Ehlers, this filter implements a complex algorithm that provides exceptional smoothing capabilities while minimizing the lag typically associated with heavy filtering. USF builds upon the Super Smooth Filter (SSF) with enhanced noise suppression characteristics, making it particularly valuable for identifying clear trends in extremely noisy market conditions where even traditional smoothing techniques struggle to produce clean signals.
## Core Concepts
* **Maximum noise suppression:** Provides the highest level of noise reduction among Ehlers' filter designs
* **Optimized coefficient structure:** Uses carefully designed mathematical relationships to achieve superior filtering performance
* **Market application:** Particularly effective for long-term trend identification and minimizing false signals in highly volatile market conditions
The core innovation of USF is its second-order filter structure with optimized coefficients that create an exceptionally smooth frequency response. By careful mathematical design, USF achieves near-optimal noise suppression characteristics while minimizing the lag and waveform distortion that typically accompany such heavy filtering. This makes it especially valuable for identifying major market trends amid significant short-term volatility.
## Common Settings and Parameters
| Parameter | Default | Function | When to Adjust |
|-----------|---------|----------|---------------|
| Length | 20 | Controls the cutoff period | Increase for smoother signals, decrease for more responsiveness |
| Source | close | Price data used for calculation | Consider using hlc3 for a more balanced price representation |
**Pro Tip:** USF is ideal for defining major market trends - try using it with a length of 40-60 on daily charts to identify dominant market direction and ignoring shorter-term noise completely.
## Calculation and Mathematical Foundation
**Simplified explanation:**
The Ultrasmooth Filter creates an extremely clean price representation by combining current and past price data with previous filter outputs using precisely calculated mathematical relationships. This creates a highly effective "averaging" process that removes virtually all market noise while still maintaining the essential trend information.
**Technical formula:**
USF = (1-c1)X + (2c1-c2)X₁ - (c1+c3)X₂ + c2×USF₁ + c3×USF₂
Where coefficients are calculated as:
- a1 = exp(-1.414π/length)
- b1 = 2a1 × cos(1.414 × 180/length)
- c1 = (1 + c2 - c3)/4
- c2 = b1
- c3 = -a1²
> 🔍 **Technical Note:** The filter combines both feed-forward (X terms) and feedback (USF terms) components in a second-order structure, creating a response with exceptional roll-off characteristics and minimal passband ripple.
## Interpretation Details
The Ultrasmooth Filter can be used in various trading strategies:
* **Major trend identification:** The direction of USF indicates the dominant market trend with minimal noise interference
* **Signal generation:** Crossovers between price and USF generate high-reliability trade signals with minimal false positives
* **Support/resistance levels:** USF can act as strong dynamic support during uptrends and resistance during downtrends
* **Market regime identification:** The slope of USF helps identify whether markets are in trending or consolidation phases
* **Multiple timeframe analysis:** Using USF across different chart timeframes creates a cohesive picture of nested trend structures
## Limitations and Considerations
* **Significant lag:** The extreme smoothing comes with increased lag compared to lighter filters
* **Initialization period:** Requires more bars than simpler filters to stabilize at the start of data
* **Less suitable for short-term trading:** Generally too slow-responding for short-term strategies
* **Parameter sensitivity:** Performance depends on appropriate length selection for the timeframe
* **Complementary tools:** Best used alongside faster-responding indicators for timing signals
## References
* Ehlers, J.F. "Cycle Analytics for Traders," Wiley, 2013
* Ehlers, J.F. "Rocket Science for Traders," Wiley, 2001
Ehlers Even Better Sinewave (EBSW)# EBSW: Ehlers Even Better Sinewave
## Overview and Purpose
The Ehlers Even Better Sinewave (EBSW) indicator, developed by John Ehlers, is an advanced cycle analysis tool. This implementation is based on a common interpretation that uses a cascade of filters: first, a High-Pass Filter (HPF) to detrend price data, followed by a Super Smoother Filter (SSF) to isolate the dominant cycle. The resulting filtered wave is then normalized using an Automatic Gain Control (AGC) mechanism, producing a bounded oscillator that fluctuates between approximately +1 and -1. It aims to provide a clear and responsive measure of market cycles.
## Core Concepts
* **Detrending (High-Pass Filter):** A 1-pole High-Pass Filter removes the longer-term trend component from the price data, allowing the indicator to focus on cyclical movements.
* **Cycle Smoothing (Super Smoother Filter):** Ehlers' Super Smoother Filter is applied to the detrended data to further refine the cycle component, offering effective smoothing with relatively low lag.
* **Wave Generation:** The output of the SSF is averaged over a short period (typically 3 bars) to create the primary "wave".
* **Automatic Gain Control (AGC):** The wave's amplitude is normalized by dividing it by the square root of its recent power (average of squared values). This keeps the oscillator bounded and responsive to changes in volatility.
* **Normalized Oscillator:** The final output is a single sinewave-like oscillator.
## Common Settings and Parameters
| Parameter | Default | Function | When to Adjust |
| ----------- | ------- | --------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| Source | close | Price data used for calculation. | Typically `close`, but `hlc3` or `ohlc4` can be used for a more comprehensive price representation. |
| HP Length | 40 | Lookback period for the 1-pole High-Pass Filter used for detrending. | Shorter periods make the filter more responsive to shorter cycles; longer periods focus on longer-term cycles. Adjust based on observed cycle characteristics. |
| SSF Length | 10 | Lookback period for the Super Smoother Filter used for smoothing the detrended cycle component. | Shorter periods result in a more responsive (but potentially noisier) wave; longer periods provide more smoothing. |
**Pro Tip:** The `HP Length` and `SSF Length` parameters should be tuned based on the typical cycle lengths observed in the market and the desired responsiveness of the indicator.
## Calculation and Mathematical Foundation
**Simplified explanation:**
1. Remove the trend from the price data using a 1-pole High-Pass Filter.
2. Smooth the detrended data using a Super Smoother Filter to get a clean cycle component.
3. Average the output of the Super Smoother Filter over the last 3 bars to create a "Wave".
4. Calculate the average "Power" of the Super Smoother Filter output over the last 3 bars.
5. Normalize the "Wave" by dividing it by the square root of the "Power" to get the final EBSW value.
**Technical formula (conceptual):**
1. **High-Pass Filter (HPF - 1-pole):**
`angle_hp = 2 * PI / hpLength`
`alpha1_hp = (1 - sin(angle_hp)) / cos(angle_hp)`
`HP = (0.5 * (1 + alpha1_hp) * (src - src )) + alpha1_hp * HP `
2. **Super Smoother Filter (SSF):**
`angle_ssf = sqrt(2) * PI / ssfLength`
`alpha2_ssf = exp(-angle_ssf)`
`beta_ssf = 2 * alpha2_ssf * cos(angle_ssf)`
`c2 = beta_ssf`
`c3 = -alpha2_ssf^2`
`c1 = 1 - c2 - c3`
`Filt = c1 * (HP + HP )/2 + c2*Filt + c3*Filt `
3. **Wave Generation:**
`WaveVal = (Filt + Filt + Filt ) / 3`
4. **Power & Automatic Gain Control (AGC):**
`Pwr = (Filt^2 + Filt ^2 + Filt ^2) / 3`
`EBSW_SineWave = WaveVal / sqrt(Pwr)` (with check for Pwr == 0)
> 🔍 **Technical Note:** The combination of HPF and SSF creates a form of band-pass filter. The AGC mechanism ensures the output remains scaled, typically between -1 and +1, making it behave like a normalized oscillator.
## Interpretation Details
* **Cycle Identification:** The EBSW wave shows the current phase and strength of the dominant market cycle as filtered by the indicator. Peaks suggest cycle tops, and troughs suggest cycle bottoms.
* **Trend Reversals/Momentum Shifts:** When the EBSW wave crosses the zero line, it can indicate a potential shift in the short-term cyclical momentum.
* Crossing up through zero: Potential start of a bullish cyclical phase.
* Crossing down through zero: Potential start of a bearish cyclical phase.
* **Overbought/Oversold Levels:** While normalized, traders often establish subjective or statistically derived overbought/oversold levels (e.g., +0.85 and -0.85, or other values like +0.7, +0.9).
* Reaching above the overbought level and turning down may signal a potential cyclical peak.
* Falling below the oversold level and turning up may signal a potential cyclical trough.
## Limitations and Considerations
* **Parameter Sensitivity:** The indicator's performance depends on tuning `hpLength` and `ssfLength` to prevailing market conditions.
* **Non-Stationary Markets:** In strongly trending markets with weak cyclical components, or in very choppy non-cyclical conditions, the EBSW may produce less reliable signals.
* **Lag:** All filtering introduces some lag. The Super Smoother Filter is designed to minimize this for its degree of smoothing, but lag is still present.
* **Whipsaws:** Rapid oscillations around the zero line can occur in volatile or directionless markets.
* **Requires Confirmation:** Signals from EBSW are often best confirmed with other forms of technical analysis (e.g., price action, volume, other non-correlated indicators).
## References
* Ehlers, J. F. (2002). *Rocket Science for Traders: Digital Signal Processing Applications*. John Wiley & Sons.
* Ehlers, J. F. (2013). *Cycle Analytics for Traders: Advanced Technical Trading Concepts*. John Wiley & Sons.
Buy And Hold Performance Screener - [JTCAPITAL]Buy And Hold Performance Screener – is a script designed to track and display multi-asset “buy and hold” performance curves and performance statistics over defined timeframes for selected symbols. It doesn’t attempt to time entries or exits; rather, it shows what would happen if one simply bought the asset at the defined start date and held it.
The indicator works by calculating in the following steps:
Start Date Definition
The script begins by reading an input for the start date. This defines the bar from which the equity curves begin.
Symbol Definitions & Close Price Retrieval
The script allows the user to specify up to ten tickers. For each ticker it uses request.security() on the “1D” timeframe to retrieve the daily close price of that symbol.
Plot Enable Inputs
For each ticker there is an input boolean controlling whether the equity curve for that ticker should be plotted.
Asset Name Cleaning
The helper function clean_name(string asset) => … takes the asset string (e.g., “CRYPTO:SOLUSD”) and manipulates it (via string splitting and replacements) to derive a cleaned short name (e.g., “SOL”). This name is used for visuals (labels, table headers).
Equity Curve Calculation (“HODL”)
The helper function f_HODL(closez) defines a variable equity that assumes a starting equity of 1 unit at the start date and then multiplies by the ratio of each bar’s close to the prior bar’s close: i.e. daily compounding of returns.
Performance Metrics Calculation
The helper function f_performance(closez) calculates, for each symbol’s close series, the percentage change of the current close relative to its close 30 days ago, 90 days ago, 180 days ago, 1 year ago (365 days), 2 years ago (730 days) and 3 years ago (1095 days).
Equity Curve Plots
For each ticker, if the corresponding plot input is true, the script assigns a plotted variable equal to the equity curve value. Its then drawing each selected equity curve on the chart, each in a distinct color.
Table Construction
If the plottable input is true, the script constructs a table and populates it with rows and column corresponding to the assigned tickers and the set 6 timeframes used for display.
Buy and Sell Conditions:
Since this is strictly a “buy-and-hold” performance screener, there are no explicit buy or sell signals generated or plotted. The script assumes: buy at the defined start_date, hold continuously to present. There are no filters, no exit logic, no take-profit or stop-loss. The benefit of this approach is to provide a clean benchmark of how selected assets would have performed if one simply adopted a passive “buy & hold” approach from a given start date.
Features and Parameters:
start_date (input.time) : Defines the date from which performance and equity curves begin.
ticker1 … ticker10 (input.symbol) : User-selectable asset symbols to include in the screener.
plot1 … plot10 (input.bool) : Boolean flags to enable/disable plotting of each asset’s equity curve.
plottable (input.bool) : Flag to enable/disable drawing the performance table.
Colored plotting + Labels for identifying each asset curve on the chart.
Specifications:
Here is a detailed breakdown of every calculation/variable/function used in the script and what each part means:
start_date
This is defined via input.time(timestamp("1 Jan 2025"), title = "Start Date"). It allows the user to pick a specific calendar date from which the equity curves and performance calculations will start.
ticker1 … ticker10
These inputs allow the user to select up to ten different assets (symbols) to monitor. The script uses each of these to fetch daily close prices.
plot1 … plot10
Boolean inputs controlling which of the ten asset equity curves are plotted. If plotX is true, the equity curve for ticker X will be visible; otherwise it will be not plotted. This gives the user flexibility to include or exclude specific assets on the chart.
Returns the cleaned asset short name.
This provides friendly text labels like “BTC”, “ETH”, “SOL”, etc., instead of full symbol codes.
The choice of distinct colours for each asset helps differentiate curves visually when multiple assets are overlaid.
Colour definitions
Variables color1…color10 are explicitly defined via color.rgb(r,g,b) to give each asset a unique colour (e.g., red, orange, yellow, green, cyan, blue, purple, pink, etc.).
What are the benefits of combining these calculations?
By computing equity curves for multiple assets from the same start date and overlaying them, you can visualise comparative performance of different assets under a uniform “buy & hold” assumption.
The performance table adds multi-horizon returns (30 D, 90 D, 180 D, 1 Y, 2 Y, 3 Y) which helps the user see both short-term and longer-term performance without having to manually compute returns.
The use of daily close data via request.security(..., "1D") removes dependency on the chart’s timeframe, thereby standardising the comparison across assets.
The equity curve and table together provide both visual (curve) and numerical (table) summaries of performance, making it easier to spot trends, divergences, and cross-asset comparisons at a glance.
Because it uses compounding (equity := equity * (closez / closez )), the curves reflect the real growth of a 1-unit investment held over time, rather than only simple returns.
The labelling of curves and the color-coding make the multi-asset overlay easier to interpret.
Using a clean start date ensures that all curves begin at the same point (1 unit at start_date), making relative performance intuitive.
Because of this, the script is useful as a benchmarking tool: rather than trying to pick entries or exit points, you can simply compare “what if I had held these assets since Jan 1 2025” (or your chosen date), and see which assets out-/under-performed in that period. It helps an investor or trader evaluate the long-term benefits of passive vs. active management, or of allocation decisions.
Please note:
The script assumes continuous daily data and does not account for dividends, fees, slippage, or tax implications.
It does not attempt to optimise timing or provide trading signals.
Returns prior to the start date are ignored (equity only begins once time >= start_date).
For newly listed assets with fewer than 365 or 730 or 1095 days of history, the longer-horizon returns may return na or misleading values.
Because it uses request.security() without specifying lookahead, and on “1D” timeframe, it complies with standard usage but you should verify there is no look-ahead bias in your particular setup.
ENJOY!
Ehlers Phasor Analysis (PHASOR)# PHASOR: Phasor Analysis (Ehlers)
## Overview and Purpose
The Phasor Analysis indicator, developed by John Ehlers, represents an advanced cycle analysis tool that identifies the phase of the dominant cycle component in a time series through complex signal processing techniques. This sophisticated indicator uses correlation-based methods to determine the real and imaginary components of the signal, converting them to a continuous phase angle that reveals market cycle progression. Unlike traditional oscillators, the Phasor provides unwrapped phase measurements that accumulate continuously, offering unique insights into market timing and cycle behavior.
## Core Concepts
* **Complex Signal Analysis** — Uses real and imaginary components to determine cycle phase
* **Correlation-Based Detection** — Employs Ehlers' correlation method for robust phase estimation
* **Unwrapped Phase Tracking** — Provides continuous phase accumulation without discontinuities
* **Anti-Regression Logic** — Prevents phase angle from moving backward under specific conditions
Market Applications:
* **Cycle Timing** — Precise identification of cycle peaks and troughs
* **Market Regime Analysis** — Distinguishes between trending and cycling market conditions
* **Turning Point Detection** — Advanced warning system for potential market reversals
## Common Settings and Parameters
| Parameter | Default | Function | When to Adjust |
|-----------|---------|----------|----------------|
| Period | 28 | Fixed cycle period for correlation analysis | Match to expected dominant cycle length |
| Source | Close | Price series for phase calculation | Use typical price or other smoothed series |
| Show Derived Period | false | Display calculated period from phase rate | Enable for adaptive period analysis |
| Show Trend State | false | Display trend/cycle state variable | Enable for regime identification |
## Calculation and Mathematical Foundation
**Technical Formula:**
**Stage 1: Correlation Analysis**
For period $n$ and source $x_t$:
Real component correlation with cosine wave:
$$R = \frac{n \sum x_t \cos\left(\frac{2\pi t}{n}\right) - \sum x_t \sum \cos\left(\frac{2\pi t}{n}\right)}{\sqrt{D_{cos}}}$$
Imaginary component correlation with negative sine wave:
$$I = \frac{n \sum x_t \left(-\sin\left(\frac{2\pi t}{n}\right)\right) - \sum x_t \sum \left(-\sin\left(\frac{2\pi t}{n}\right)\right)}{\sqrt{D_{sin}}}$$
where $D_{cos}$ and $D_{sin}$ are normalization denominators.
**Stage 2: Phase Angle Conversion**
$$\theta_{raw} = \begin{cases}
90° - \arctan\left(\frac{I}{R}\right) \cdot \frac{180°}{\pi} & \text{if } R eq 0 \\
0° & \text{if } R = 0, I > 0 \\
180° & \text{if } R = 0, I \leq 0
\end{cases}$$
**Stage 3: Phase Unwrapping**
$$\theta_{unwrapped}(t) = \theta_{unwrapped}(t-1) + \Delta\theta$$
where $\Delta\theta$ is the normalized phase difference.
**Stage 4: Ehlers' Anti-Regression Condition**
$$\theta_{final}(t) = \begin{cases}
\theta_{final}(t-1) & \text{if regression conditions met} \\
\theta_{unwrapped}(t) & \text{otherwise}
\end{cases}$$
**Derived Calculations:**
Derived Period: $P_{derived} = \frac{360°}{\Delta\theta_{final}}$ (clamped to )
Trend State:
$$S_{trend} = \begin{cases}
1 & \text{if } \Delta\theta \leq 6° \text{ and } |\theta| \geq 90° \\
-1 & \text{if } \Delta\theta \leq 6° \text{ and } |\theta| < 90° \\
0 & \text{if } \Delta\theta > 6°
\end{cases}$$
> 🔍 **Technical Note:** The correlation-based approach provides robust phase estimation even in noisy market conditions, while the unwrapping mechanism ensures continuous phase tracking across cycle boundaries.
## Interpretation Details
* **Phasor Angle (Primary Output):**
- **+90°**: Potential cycle peak region
- **0°**: Mid-cycle ascending phase
- **-90°**: Potential cycle trough region
- **±180°**: Mid-cycle descending phase
* **Phase Progression:**
- Continuous upward movement → Normal cycle progression
- Phase stalling → Potential cycle extension or trend development
- Rapid phase changes → Cycle compression or volatility spike
* **Derived Period Analysis:**
- Period < 10 → High-frequency cycle dominance
- Period 15-40 → Typical swing trading cycles
- Period > 50 → Trending market conditions
* **Trend State Variable:**
- **+1**: Long trend conditions (slow phase change in extreme zones)
- **-1**: Short trend or consolidation (slow phase change in neutral zones)
- **0**: Active cycling (normal phase change rate)
## Applications
* **Cycle-Based Trading:**
- Enter long positions near -90° crossings (cycle troughs)
- Enter short positions near +90° crossings (cycle peaks)
- Exit positions during mid-cycle phases (0°, ±180°)
* **Market Timing:**
- Use phase acceleration for early trend detection
- Monitor derived period for cycle length changes
- Combine with trend state for regime-appropriate strategies
* **Risk Management:**
- Adjust position sizes based on cycle clarity (derived period stability)
- Implement different risk parameters for trending vs. cycling regimes
- Use phase velocity for stop-loss placement timing
## Limitations and Considerations
* **Parameter Sensitivity:**
- Fixed period assumption may not match actual market cycles
- Requires cycle period optimization for different markets and timeframes
- Performance degrades when multiple cycles interfere
* **Computational Complexity:**
- Correlation calculations over full period windows
- Multiple mathematical transformations increase processing requirements
- Real-time implementation requires efficient algorithms
* **Market Conditions:**
- Most effective in markets with clear cyclical behavior
- May provide false signals during strong trending periods
- Requires sufficient historical data for correlation analysis
Complementary Indicators:
* MESA Adaptive Moving Average (cycle-based smoothing)
* Dominant Cycle Period indicators
* Detrended Price Oscillator (cycle identification)
## References
1. Ehlers, J.F. "Cycle Analytics for Traders." Wiley, 2013.
2. Ehlers, J.F. "Cybernetic Analysis for Stocks and Futures." Wiley, 2004.
Ehlers Autocorrelation Periodogram (EACP)# EACP: Ehlers Autocorrelation Periodogram
## Overview and Purpose
Developed by John F. Ehlers (Technical Analysis of Stocks & Commodities, Sep 2016), the Ehlers Autocorrelation Periodogram (EACP) estimates the dominant market cycle by projecting normalized autocorrelation coefficients onto Fourier basis functions. The indicator blends a roofing filter (high-pass + Super Smoother) with a compact periodogram, yielding low-latency dominant cycle detection suitable for adaptive trading systems. Compared with Hilbert-based methods, the autocorrelation approach resists aliasing and maintains stability in noisy price data.
EACP answers a central question in cycle analysis: “What period currently dominates the market?” It prioritizes spectral power concentration, enabling downstream tools (adaptive moving averages, oscillators) to adjust responsively without the lag present in sliding-window techniques.
## Core Concepts
* **Roofing Filter:** High-pass plus Super Smoother combination removes low-frequency drift while limiting aliasing.
* **Pearson Autocorrelation:** Computes normalized lag correlation to remove amplitude bias.
* **Fourier Projection:** Sums cosine and sine terms of autocorrelation to approximate spectral energy.
* **Gain Normalization:** Automatic gain control prevents stale peaks from dominating power estimates.
* **Warmup Compensation:** Exponential correction guarantees valid output from the very first bar.
## Implementation Notes
**This is not a strict implementation of the TASC September 2016 specification.** It is a more advanced evolution combining the core 2016 concept with techniques Ehlers introduced later. The fundamental Wiener-Khinchin theorem (power spectral density = Fourier transform of autocorrelation) is correctly implemented, but key implementation details differ:
### Differences from Original 2016 TASC Article
1. **Dominant Cycle Calculation:**
- **2016 TASC:** Uses peak-finding to identify the period with maximum power
- **This Implementation:** Uses Center of Gravity (COG) weighted average over bins where power ≥ 0.5
- **Rationale:** COG provides smoother transitions and reduces susceptibility to noise spikes
2. **Roofing Filter:**
- **2016 TASC:** Simple first-order high-pass filter
- **This Implementation:** Canonical 2-pole high-pass with √2 factor followed by Super Smoother bandpass
- **Formula:** `hp := (1-α/2)²·(p-2p +p ) + 2(1-α)·hp - (1-α)²·hp `
- **Rationale:** Evolved filtering provides better attenuation and phase characteristics
3. **Normalized Power Reporting:**
- **2016 TASC:** Reports peak power across all periods
- **This Implementation:** Reports power specifically at the dominant period
- **Rationale:** Provides more meaningful correlation between dominant cycle strength and normalized power
4. **Automatic Gain Control (AGC):**
- Uses decay factor `K = 10^(-0.15/diff)` where `diff = maxPeriod - minPeriod`
- Ensures K < 1 for proper exponential decay of historical peaks
- Prevents stale peaks from dominating current power estimates
### Performance Characteristics
- **Complexity:** O(N²) where N = (maxPeriod - minPeriod)
- **Implementation:** Uses `var` arrays with native PineScript historical operator ` `
- **Warmup:** Exponential compensation (§2 pattern) ensures valid output from bar 1
### Related Implementations
This refined approach aligns with:
- TradingView TASC 2025.02 implementation by blackcat1402
- Modern Ehlers cycle analysis techniques post-2016
- Evolved filtering methods from *Cycle Analytics for Traders*
The code is mathematically sound and production-ready, representing a refined version of the autocorrelation periodogram concept rather than a literal translation of the 2016 article.
## Common Settings and Parameters
| Parameter | Default | Function | When to Adjust |
|-----------|---------|----------|---------------|
| Min Period | 8 | Lower bound of candidate cycles | Increase to ignore microstructure noise; decrease for scalping. |
| Max Period | 48 | Upper bound of candidate cycles | Increase for swing analysis; decrease for intraday focus. |
| Autocorrelation Length | 3 | Averaging window for Pearson correlation | Set to 0 to match lag, or enlarge for smoother spectra. |
| Enhance Resolution | true | Cubic emphasis to highlight peaks | Disable when a flatter spectrum is desired for diagnostics. |
**Pro Tip:** Keep `(maxPeriod - minPeriod)` ≤ 64 to control $O(n^2)$ inner loops and maintain responsiveness on lower timeframes.
## Calculation and Mathematical Foundation
**Explanation:**
1. Apply roofing filter to `source` using coefficients $\alpha_1$, $a_1$, $b_1$, $c_1$, $c_2$, $c_3$.
2. For each lag $L$ compute Pearson correlation $r_L$ over window $M$ (default $L$).
3. For each period $p$, project onto Fourier basis:
$C_p=\sum_{n=2}^{N} r_n \cos\left(\frac{2\pi n}{p}\right)$ and $S_p=\sum_{n=2}^{N} r_n \sin\left(\frac{2\pi n}{p}\right)$.
4. Power $P_p=C_p^2+S_p^2$, smoothed then normalized via adaptive peak tracking.
5. Dominant cycle $D=\frac{\sum p\,\tilde P_p}{\sum \tilde P_p}$ over bins where $\tilde P_p≥0.5$, warmup-compensated.
**Technical formula:**
```
Step 1: hp_t = ((1-α₁)/2)(src_t - src_{t-1}) + α₁ hp_{t-1}
Step 2: filt_t = c₁(hp_t + hp_{t-1})/2 + c₂ filt_{t-1} + c₃ filt_{t-2}
Step 3: r_L = (M Σxy - Σx Σy) / √
Step 4: P_p = (Σ_{n=2}^{N} r_n cos(2πn/p))² + (Σ_{n=2}^{N} r_n sin(2πn/p))²
Step 5: D = Σ_{p∈Ω} p · ĤP_p / Σ_{p∈Ω} ĤP_p with warmup compensation
```
> 🔍 **Technical Note:** Warmup uses $c = 1 / (1 - (1 - \alpha)^{k})$ to scale early-cycle estimates, preventing low values during initial bars.
## Interpretation Details
- **Primary Dominant Cycle:**
- High $D$ (e.g., > 30) implies slow regime; adaptive MAs should lengthen.
- Low $D$ (e.g., < 15) signals rapid oscillations; shorten lookback windows.
- **Normalized Power:**
- Values > 0.8 indicate strong cycle confidence; consider cyclical strategies.
- Values < 0.3 warn of flat spectra; favor trend or volatility approaches.
- **Regime Shifts:**
- Rapid drop in $D$ alongside rising power often precedes volatility expansion.
- Divergence between $D$ and price swings may highlight upcoming breakouts.
## Limitations and Considerations
- **Spectral Leakage:** Limited lag range can smear peaks during abrupt volatility shifts.
- **O(n²) Segment:** Although constrained (≤ 60 loops), wide period spans increase computation.
- **Stationarity Assumption:** Autocorrelation presumes quasi-stationary cycles; regime changes reduce accuracy.
- **Latency in Noise:** Even with roofing, extremely noisy assets may require higher `avgLength`.
- **Downtrend Bias:** Negative trends may clip high-pass output; ensure preprocessing retains signal.
## References
* Ehlers, J. F. (2016). “Past Market Cycles.” *Technical Analysis of Stocks & Commodities*, 34(9), 52-55.
* Thinkorswim Learning Center. “Ehlers Autocorrelation Periodogram.”
* Fab MacCallini. “autocorrPeriodogram.R.” GitHub repository.
* QuantStrat TradeR Blog. “Autocorrelation Periodogram for Adaptive Lookbacks.”
* TradingView Script by blackcat1402. “Ehlers Autocorrelation Periodogram (Updated).”






















