Breakout Failure RadarBreakout Failure Radar
Follow the breakout. Keep the original level. Recognize when the structure fails.
Breakout Failure Radar tracks what happens after a price-channel breakout. It freezes the original breakout level and volatility reference, then monitors whether price holds a retest or closes back through the failure threshold.
READ THE COLORS
Blue B+ / B− — Breakout detected
A new upward or downward breakout enters observation.
Green R+ / R− — Retest held
Price touches the frozen retest zone and closes back on the breakout side. Monitoring continues.
Orange F+ / F− — Breakout failed
Price closes beyond the failure threshold on the opposite side of the original level.
Gray square — Window complete
The observation window ends without a defined failure. This does not indicate a profitable trade.
The + and − signs always refer to the original breakout direction. F+ identifies a failed upward breakout; F− identifies a failed downward breakout.
HOW A BREAKOUT IS DETECTED
The default channel uses the highest high and lowest low of the previous 20 completed candles. The current candle is excluded.
An upward breakout requires:
• A close more than 0.10 ATR14 above the upper channel.
• The previous close to have been at or below its own previous upper channel.
Downward breakouts use the opposite conditions.
The channel boundary and ATR are frozen when the breakout is confirmed. Later price movements do not move these reference values.
RETEST OR FAILURE?
The default observation window covers the next five candles, excluding the breakout candle.
The retest zone extends 0.25 frozen ATR on either side of the original level. A held retest requires the candle’s range to intersect this zone and its close to finish more than 0.10 frozen ATR on the original breakout side.
A failure occurs when price closes more than 0.10 frozen ATR on the opposite side of the original level.
A held retest does not end the observation. The same breakout can hold a retest and still fail later.
WORKED EXAMPLE
Hypothetical prices using the default settings.
An upward breakout freezes a level of 100 and an ATR of 4. Price closes at 102, satisfying the breakout conditions.
• Retest zone: 99 to 101.
• Held retest: The candle touches this zone and closes above 100.40.
• Failure: A subsequent candle closes below 99.60 within the observation window.
• Still unresolved: A close at 99.80 is below the original level but has not crossed the failure threshold.
The buffers distinguish a small move around the level from a confirmed condition. They do not guarantee that price will continue or reverse.
MONITORING RULES
• Only one breakout is monitored at a time. Additional breakouts during an active observation are ignored.
• A held retest is reported only once per setup.
• A gap that skips the entire retest zone does not count as a touch.
• Failure takes priority over window completion on the final observation candle.
• A first held retest and window completion can occur on the same final candle.
• A new observation can start no earlier than the candle after the previous observation ends.
• A rejected crossing is not automatically activated later; a fresh channel crossing is required.
DISPLAY AND ALERTS
The frozen level and retest zone are displayed through the observation’s final candle. Historical markers remain on the candles where their conditions were confirmed.
The status panel shows:
• Original breakout direction and latest status.
• Frozen breakout level.
• Number of candles monitored.
• Distance from the latest confirmed close to the frozen level, measured in frozen ATR. Positive values indicate the original breakout side.
• Whether a held retest occurred during the observation.
Five alert conditions are available:
1. New breakout under observation.
2. Retest held.
3. Upward breakout failed.
4. Downward breakout failed.
5. Monitoring window complete.
Choose Once Per Bar Close when creating alerts.
CONFIRMED-CANDLE BEHAVIOR
State changes and event markers are confirmed at candle close. The script does not use future candles, backdated signals or lookahead requests.
Historical data corrections, changes to chart history and different input settings can still change historical results. Use standard candles for interpreting the price-based rules.
RESEARCH AND LIMITATIONS
The default rules were examined on daily BTC, ETH, SOL, BNB and XRP USD histories from January 2021 through September 10, 2026.
The proportion of completed observations meeting the failure definition was:
• 2021–2023: 44.93% across 276 observations.
• 2024–2025: 46.63% across 178 observations.
• 2026: 55.38% across 65 observations.
These figures describe how frequently the chosen failure condition occurred. They are not prediction accuracy or trading win rates.
Average price movement after a warning changed direction between the examined periods. The study therefore did not establish a stable advantage from automatically trading against failed breakouts.
The analysis does not model portfolio exposure, execution costs, funding, stop-losses or actual fills. The five cryptocurrencies are a selected and correlated sample.
The indicator can calculate on stocks and other timeframes, but this research covers cryptocurrency daily candles with the default settings only.
WHAT MAKES THIS TOOL DISTINCT
The implementation combines a Donchian-style channel and Wilder ATR with frozen reference levels, a defined observation window and continued monitoring after a held retest. Each component serves the specific purpose of tracking how an individual breakout develops.
It operates independently of Crypto Breakout Compass and does not import that indicator’s signals.
Breakout Failure Radar is a market-structure monitoring tool. A failure warning identifies a condition that has already occurred; it is not an automatic instruction to enter the opposite trade. 지표

Crypto Breakout CompassCRYPTO BREAKOUT COMPASS
A clear framework for reading crypto breakouts — from market context to confirmed signals.
Crypto Breakout Compass highlights price-channel breaks that also meet trend, volatility and candle-strength conditions. Its purpose is to make breakout selection visible and explainable. It is a chart-analysis indicator, not an automated trading strategy.
THE SIGNAL PATH
Price-channel break → Trend alignment → Volatility & candle checks → Confirmed close → B+ or B−
Each filter has a specific job: the channel identifies a break, the EMAs establish direction, ATR limits volatility and extension, and candle location checks whether the move held into the close. A shared cooldown limits repeated alerts.
1. READ THE CHART
• Teal channel: highest high of the previous 20 completed candles.
• Red channel: lowest low of the previous 20 completed candles.
• Orange line: EMA50. Blue line: EMA200.
• Teal / red background: confirmed bullish / bearish trend alignment.
• B+: confirmed bullish breakout. B−: confirmed bearish breakout.
• Status panel: last confirmed trend, ATR percentage and current gate status.
The current candle is excluded from the channel calculation. A colored background alone is not a breakout signal.
2. WHAT QUALIFIES AS A SIGNAL?
Bullish — B+
The close moves above the upper channel, while the preceding close was at or below its own upper channel. Price must close above EMA50, EMA50 must be above EMA200, and EMA200 must be higher than five bars earlier. The close must finish in the top 30% of the candle.
Bearish — B−
The close moves below the lower channel, while the preceding close was at or above its own lower channel. Price must close below EMA50, EMA50 must be below EMA200, and EMA200 must be lower than five bars earlier. The close must finish in the bottom 30% of the candle.
Shared checks
• ATR14 must be positive and no more than 12% of the closing price.
• The close must extend no more than 1 ATR beyond the broken channel.
• At least 10 bars must separate signals, across both directions.
• The candle must be closed and the warmup complete.
A rejected breakout is not automatically accepted later. A fresh channel crossing is required. Zero-range candles receive a neutral close location and cannot meet the default candle-strength threshold.
3. WORKED EXAMPLES
Hypothetical prices, using the default settings. These illustrate the rules, not actual trades or forecast returns.
Example A — bullish qualification
Upper channel = 100 | ATR = 4
Candle: high 103, low 98, close 102
EMA50 = 99 | EMA200 = 95 and rising
The close is 2 points above the channel: 2 ÷ 4 = 0.5 ATR. Its location within the candle is (102 − 98) ÷ (103 − 98) = 80%, inside the top 30%. ATR is approximately 3.92% of close, below the 12% cap. If the previous-close crossing condition, warmup and cooldown are also satisfied, B+ appears at candle close.
Example B — bearish qualification
Lower channel = 100 | ATR = 4
Candle: high 102, low 97, close 98
EMA50 = 105 | EMA200 = 110 and falling
The close is 0.5 ATR below the channel and sits 20% of the way up the candle, inside the bottom 30%. ATR is approximately 4.08% of close. If the remaining conditions are satisfied, B− appears at candle close.
Example C — an extended move is rejected
Upper channel = 100 | ATR = 4 | Close = 106
The extension is 6 ÷ 4 = 1.5 ATR, exceeding the default 1 ATR limit. No B+ is printed, even if the trend is bullish. This illustrates the extension filter; it does not imply the price cannot continue higher.
4. QUICK START & ALERTS
Start with regular 1D cryptocurrency candles and the default inputs. The default warmup requires at least 205 previous bars. Separate alert conditions are available for bullish and bearish breakouts; choose “Once Per Bar Close” when creating an alert.
The research covers daily candles only. Other intervals display “Unvalidated timeframe”. Changing inputs also moves beyond the tested defaults. Bearish markers describe price direction; they do not imply that short selling is available on a spot market.
5. CONFIRMATION & DATA BEHAVIOR
Markers and saved status update only on confirmed candle closes. Channel lines and EMAs can move while a candle is open. The script uses no future bars, pivot backdating or lookahead requests. Historical data corrections, feed changes, available history and input changes can still affect historical signals.
The indicator runs entirely on TradingView chart data and requires no API key. Prices and day boundaries can differ between exchanges and USD/USDT pairs.
6. WHAT THE RESEARCH DOES — AND DOES NOT — SHOW
Fixed default rules were examined on historical daily BTC, ETH, SOL, BNB and XRP USD series from January 2021 through September 10, 2026. No parameter search was performed for this study.
The event study measures directional price change from the next daily open after a signal to the close of the tenth following candle. A simple 0.30 percentage-point round-trip cost deduction was also examined. This is not a portfolio backtest: it does not model funding, leverage, actual fills, stops or compounding.
In the 2024–2025 validation window, 67 filtered events had a mean directional change of +1.114% and a median of −1.236%. The unfiltered channel baseline, with the same cooldown, averaged +1.240% across 159 events. The worst filtered adverse excursion within an observation window was −34.744%.
The later 2026 window contained only 15 filtered events, of which 14 were bearish. This small, directionally concentrated sample does not establish a general trading edge. The five coins are also a selected, correlated sample. The evidence is mixed, and positive average event returns should not be interpreted as verified strategy profitability.
SCOPE & ORIGINALITY
This implementation combines a prior-bar Donchian-style channel, standard EMAs and Wilder ATR with directional candle location, extension limits and a shared signal cooldown. The code was written independently for this tool. Its contribution is the explicit qualification process and closed-bar status display, not a claim to have invented the underlying indicators.
Crypto Breakout Compass does not place orders or prescribe position sizes, stop-losses or exits. Use it to inspect market structure and test hypotheses; a marker is not a guarantee of follow-through. 지표

Sweep & Reverse | Liquidity Sweep Reversal StrategyThis strategy trades the liquidity-sweep reversal pattern: price wicks through a prior swing high or low — clearing out the stops resting there — then closes back inside the range, suggesting the move beyond that level was a stop-hunt rather than a genuine breakout.
How it works:
Confirmed swing highs and lows (via pivot detection) are stored as watched levels.
A sweep triggers when a bar wicks past a level but closes back on the other side.
Longs enter on swept lows, shorts on swept highs. The stop sits just beyond the sweeping wick (with an ATR buffer); the target is set from your chosen reward:risk ratio.
Levels expire if left untouched for too long, and new levels too close to an existing one (relative to ATR) are skipped to keep zones from cluttering.
Features:
Optional volume-spike filter — only counts sweeps backed by above-average volume
Optional rejection-wick filter — requires the sweeping wick to be meaningfully larger than the bar's body, filtering out weak/low-conviction sweeps
Optional next-bar confirmation — waits one bar past the sweep and only enters if price actually continues in the reversal direction, reducing whipsaw entries
Optional session window filter (defaults to the London/NY overlap, the highest-liquidity window)
Adjustable stop distance, minimum stop size, and reward:risk ratio
Breakeven stop management once a trade moves partway to target
Long/short can be toggled independently
Every trade's entry/SL/TP lines persist on the chart after the trade closes (auto-expiring after a configurable number of bars), so past trades stay visible for review
Styled performance dashboard: trade count, win rate, net profit, live position state
Warnings:
This is fundamentally a mean-reversion pattern. In strongly trending markets, sweeps frequently continue rather than reverse — no combination of filters here eliminates that risk.
Backtest results are sensitive to pivot length, stop distance, and which filters are enabled. A high win rate on a small number of trades is not statistically meaningful — test across multiple instruments and timeframes, and evaluate profit factor and max drawdown alongside net profit, not net profit alone.
Past performance in a backtest, including this one, does not guarantee future results. This is not financial advice. 전략

Bollinger Bands Asymmetry AttributionBollinger Bands Asymmetry Attribution
Overview
Bollinger Bands Asymmetry Attribution is an open-source volatility-analysis overlay that studies how price dispersion is distributed above and below a selectable moving basis.
A conventional Bollinger Bands calculation uses one standard deviation to place symmetric upper and lower bands around a moving average. This script takes a different approach. It separates basis-relative squared deviations into upper-side and lower-side components, attributes the resulting directional dispersion to observation frequency and conditional excursion severity, and then constructs independently stabilized upper and lower wings.
The indicator is designed to answer questions such as:
- Is current dispersion concentrated above or below the basis?
- Is that asymmetry caused by price spending more observations on one side?
- Is it caused by fewer but larger excursions on one side?
- Are frequency and severity reinforcing each other or opposing each other?
- Is directional dispersion currently shifting, and which component is producing that shift?
- How stretched is the current source relative to the matching asymmetric wing?
This is a descriptive market-structure and volatility tool. It is not a trading strategy, directional forecast, reversal model, or buy/sell signal generator.
Core calculation
For each bar, the script evaluates the selected Source over the Attribution Length around the current selected basis.
For every observation in the rolling window:
Deviation = Observation - Current basis
Observations above the basis contribute to the upper squared-deviation mass.
Observations below the basis contribute to the lower squared-deviation mass.
Upper squared mass:
Sum of squared deviations where Deviation > 0
Lower squared mass:
Sum of squared deviations where Deviation < 0
The directional semivariances are then calculated across the entire observation window:
Upper semivariance = Upper squared mass / N
Lower semivariance = Lower squared mass / N
where N is the total number of valid observations in the window.
Frequency and severity attribution
Each directional semivariance can be factored exactly into two components.
For the upper side:
Upper occupancy = Upper observation count / N
Upper conditional severity =
Upper squared mass / Upper observation count
Upper semivariance =
Upper occupancy x Upper conditional severity
The same identity applies to the lower side.
In the readout:
F means observation frequency or occupancy.
S means conditional squared-excursion severity.
Frequency describes how often observations occurred on one side of the basis.
Severity describes how large the squared excursions were when observations occurred on that side.
This distinction allows two windows with similar directional semivariance to be interpreted differently.
For example:
- Frequent but relatively small upper deviations can produce upper-side dispersion.
- A small number of very large upper deviations can produce a similar amount of upper-side dispersion.
- Frequency and severity can both favor the same side.
- Frequency can favor one side while severity favors the other.
The raw mathematical identity is exact. For visual stability, the MASS, frequency, and severity diagnostics shown in the panel are smoothed independently. Therefore, the displayed smoothed values should be interpreted as stable diagnostics rather than as an algebraic identity between the visible numbers.
What makes this script different
The original contribution is not simply the use of different upper and lower band widths. Asymmetric volatility bands and directional semivariance concepts already exist.
This script extends the analysis by connecting four related layers in one coherent framework:
1. Directional dispersion mass
It measures how total basis-relative squared dispersion is divided between the upper and lower sides.
2. Level attribution
It separates each side's directional semivariance into:
- Observation frequency or occupancy
- Conditional squared-excursion severity
3. Mass Shift Attribution
It decomposes the one-bar change in directional semivariance into:
- A frequency-change contribution
- A severity-change contribution
4. Trader-facing geometry
It connects those attribution measurements to independently stabilized asymmetric wings, side-normalized stretch, wing motion, transition markers, and alerts.
The script does not combine unrelated oscillators, volume filters, trend scores, or multi-timeframe indicators. All principal outputs derive from the same basis-relative directional-dispersion framework.
Asymmetric wing construction
The primary upper and lower wings are not conventional symmetric Bollinger Bands.
The script first calculates the conditional variance for each side. When one side contains only a small number of observations, its conditional variance can become unstable or overly dependent on one data point.
To reduce this problem, the displayed geometry uses Sparse-Side Stabilization.
A side with fewer observations is partially shrunk toward the pooled variance of the full rolling window. A side with more observations retains more of its own conditional variance.
Conceptually:
Stabilized side variance =
Side weight x Side conditional variance
+
(1 - Side weight) x Pooled variance
The side weight increases with the number of observations on that side.
The stabilized upper and lower variances are converted into wing distances using their square roots, the Wing Multiplier, and optional RMA smoothing.
Upper wing = Basis + Stabilized upper distance
Lower wing = Basis - Stabilized lower distance
This stabilization affects the displayed wing geometry only. The underlying MASS, Frequency, Severity, and identity diagnostics remain based on the unshrunk directional statistics.
The optional Classic Symmetric Reference displays a conventional SMA-centered standard-deviation envelope for comparison. It is disabled by default to keep the publication chart clear.
Visual readout
The compact panel is organized into seven rows.
Header
The header shows:
- The script name
- LIVE or CLOSE execution status
- The current upper/lower dispersion-mass state
Examples:
UPPER MASS 60.2%
LOWER MASS 58.7%
MASS 51.0%/49.0%
The percentages are smoothed directional semivariance shares. They are not probabilities, expected returns, price targets, or forecasts.
MASS
MASS shows how directional semivariance is divided between the upper and lower sides.
The cyan value represents the upper share.
The magenta value represents the lower share.
The two displayed shares sum to 100%.
A larger upper share means that observations above the basis currently account for more of the smoothed basis-relative squared dispersion. A larger lower share means that observations below the basis account for more.
ATTRIB
ATTRIB describes the composition of the current asymmetry.
F = Observation frequency or occupancy
S = Conditional squared-excursion severity
The symbols have the following meanings:
F▲ = Frequency favors the upper side
F▼ = Frequency favors the lower side
F· = No material frequency bias
S▲ = Conditional severity favors the upper side
S▼ = Conditional severity favors the lower side
S· = No material severity bias
S? = Severity cannot be compared because one side has too few observations
The ATTRIB states are:
Balanced
Neither frequency nor severity exceeds the selected significance threshold.
Frequency
Observation frequency favors one side, while conditional severity is approximately balanced.
Severity
Conditional severity favors one side, while observation frequency is approximately balanced.
Reinforced
Frequency and severity favor the same side.
Offset
Frequency and severity favor opposite sides. One side may occur more often while the other side contains larger conditional excursions.
Sparse
One side does not contain enough observations for a reliable two-sided severity comparison.
No dispersion
The rolling window contains no meaningful basis-relative dispersion.
Warming
The required rolling history is not yet available.
SHIFT
SHIFT analyzes how directional dispersion changed from the previous bar to the current bar.
For either side:
Semivariance = Occupancy x Conditional severity
The one-bar product change is decomposed as:
Delta semivariance =
Delta occupancy x Average conditional severity
+
Delta conditional severity x Average occupancy
This midpoint formulation allocates the interaction between occupancy and severity equally, avoiding dependence on whether frequency or severity is applied first.
The script calculates this decomposition separately for the upper and lower sides, then evaluates the change in the upper-minus-lower directional semivariance difference.
In the SHIFT row:
F↑ means the frequency component is moving directional dispersion toward the upper side.
F↓ means the frequency component is moving directional dispersion toward the lower side.
S↑ means the severity component is moving directional dispersion toward the upper side.
S↓ means the severity component is moving directional dispersion toward the lower side.
A centered dot means the component is below the configured significance threshold.
Possible SHIFT states include:
Frequency upper or Frequency lower
The occupancy-change component is dominant.
Severity upper or Severity lower
The conditional-severity-change component is dominant.
Reinforced upper or Reinforced lower
Frequency and severity changes are both moving directional dispersion toward the same side.
Shared upper or Shared lower
Both components contribute in the same net direction without one meeting the configured dominance ratio.
Offset
Frequency and severity changes oppose each other.
Stable
The net normalized directional mass shift is below the selected threshold.
The displayed Delta value is normalized by the average total semivariance of the two compared windows. It is not a price percentage, return estimate, or directional probability.
STRETCH
STRETCH measures the current Source distance from the basis using the wing on the same side.
When Source is above the basis:
Stretch =
(Source - Basis) / Upper wing distance
When Source is below the basis:
Stretch =
-(Basis - Source) / Lower wing distance
Interpretation:
+1.00x = Source is at the upper wing
-1.00x = Source is at the lower wing
+0.50x = Source is halfway from the basis to the upper wing
-0.50x = Source is halfway from the basis to the lower wing
A value above +1.00x or below -1.00x means the selected Source is outside the corresponding asymmetric wing.
Stretch does not predict continuation or reversal. It only reports the current location relative to the side-specific dispersion geometry.
WINGS
WINGS shows the one-bar movement of the stabilized upper and lower wing distances.
U refers to the upper wing.
D refers to the lower wing.
Arrow meanings:
↗ = Expanding beyond the selected Wing Motion Threshold
↘ = Contracting beyond the selected Wing Motion Threshold
→ = Approximately stable
The ratio on the right is:
Upper wing distance / Lower wing distance
A ratio above 1.00 means the upper wing is wider.
A ratio below 1.00 means the lower wing is wider.
The ratio describes asymmetric geometry, not directional probability.
NOW
NOW reports the current side-normalized location or the most recent live transition preview.
Possible location states include:
- Upper outside
- Upper edge
- Upper half
- On basis
- Lower half
- Lower edge
- Lower outside
The C value is the realized rolling containment percentage.
Containment measures how often the selected Source was inside the displayed asymmetric wings over the configured Containment Lookback.
This is a backward-looking realized statistic. It is not a guaranteed future coverage probability.
How to use the indicator
A practical reading sequence is:
1. Read MASS
Determine whether basis-relative squared dispersion is currently concentrated more heavily above or below the basis.
2. Read ATTRIB
Determine whether the current asymmetry is associated primarily with:
- More observations on one side
- Larger excursions on one side
- Both factors reinforcing each other
- Opposing frequency and severity effects
- An insufficient side sample
3. Read SHIFT
Determine whether the directional dispersion difference is currently changing and whether frequency or severity is producing that change.
4. Read STRETCH
Locate the current Source relative to the corresponding asymmetric wing.
5. Read WINGS
Check whether the upper and lower dispersion envelopes are expanding, contracting, or remaining stable.
6. Read NOW and containment
Confirm the current location or transition and review how frequently the Source has historically remained inside the displayed wings.
Example interpretations:
UPPER MASS with Frequency attribution
Observations have occurred above the basis more often, but upper-side conditional excursion severity is not materially larger.
UPPER MASS with Severity attribution
Upper-side observations may not be more frequent, but their conditional squared excursions are larger.
UPPER MASS with Reinforced attribution
Both observation frequency and conditional severity favor the upper side.
UPPER MASS with Offset attribution
One component favors the upper side while the other favors the lower side. The total upper mass reflects the net result.
Upper mass with SHIFT moving lower
The current level remains upper-dominant, but the latest window change is moving directional dispersion back toward the lower side.
Balanced MASS with active SHIFT
The current upper/lower mass level is near balance, but the most recent change is moving that balance toward one side.
These readings provide context. They do not prescribe an entry, exit, stop, position size, or trade direction.
Markers
The script uses sparse transition markers rather than marking every bar outside a wing.
Triangle above a bar
The selected Source has moved from inside to outside the upper wing.
Triangle below a bar
The selected Source has moved from inside to outside the lower wing.
Circle on an upper or lower wing
The selected Source has returned inside after being outside that wing.
Diamond on the basis
The selected Source moved directly from outside one wing to outside the opposite wing. This is consolidated into one Cross-Wing Jump event so the same bar does not receive duplicate excursion and re-entry markers.
Optional dominance markers
These identify a confirmed transition into upper-mass or lower-mass dominance.
Markers describe transitions across the calculated geometry. They are not buy or sell signals and do not imply that price will reverse, continue, or reach a target.
Alerts
Alert conditions are available for:
- Upper asymmetric excursion started
- Lower asymmetric excursion started
- Upper asymmetric re-entry
- Lower asymmetric re-entry
- Direct cross-wing jump to the upper side
- Direct cross-wing jump to the lower side
- Upper semivariance-mass dominance started
- Lower semivariance-mass dominance started
Confirmed Events Only is enabled by default.
With this setting enabled, markers and alerts wait for the bar to close. The asymmetric wings and visual readout continue to update during the forming bar.
Main settings
Source
Selects the price or indicator series analyzed by the script.
Attribution Length
Sets the rolling observation window.
Basis Type
SMA is the conventional statistical-center setting.
EMA, RMA, and WMA are provided as basis-relative research alternatives. When one of these alternatives is selected, the directional partial moments are measured around that selected moving basis rather than around the arithmetic sample mean.
Wing Multiplier
Scales the upper and lower stabilized wing distances.
The multiplier is not a confidence level.
Sparse-Side Stabilization
Controls how strongly a side with few observations is shrunk toward pooled dispersion.
A value of zero disables shrinkage when that side contains observations.
Wing Smoothing
Applies RMA smoothing to the displayed wing distances.
Attribution Smoothing
Smooths MASS, Frequency, and Severity diagnostics to reduce one-bar flicker.
Dominance Entry and Release Thresholds
Create hysteresis around the upper-mass, balanced, and lower-mass states.
Minimum Observations Per Side
Sets the minimum sample required on both sides before Severity is compared.
Mass Shift Smoothing
Smooths the Frequency and Severity components of the one-bar SHIFT calculation.
Mass Shift Significance Threshold
Controls when a SHIFT component is displayed as materially active.
Mass Shift Driver Dominance Ratio
Controls how much larger one component must be before it is classified as the dominant SHIFT driver.
Edge Zone Starts At
Defines when STRETCH is considered near an upper or lower wing.
Containment Lookback
Sets the rolling window for realized containment.
Visual settings
Allow the user to control wing visibility, split fills, the optional state rail, dominant-wing glow, classic symmetric reference, line widths, transparency, colors, readout position, text size, and price-axis clearance.
Live-bar behavior
The script does not request higher-timeframe data, use lookahead logic, or intentionally access future bars.
Historical calculations use the chart's available data and the selected settings.
During the current forming bar:
- Wings can change
- MASS can change
- ATTRIB can change
- SHIFT can change
- STRETCH can change
- WINGS can change
- NOW can change
This is normal real-time indicator behavior.
When Confirmed Events Only is enabled, transition markers and alerts are recorded only after bar close. Disabling that setting allows intrabar events, which can appear and disappear before the bar closes.
Data Window outputs
The script provides research values in the Data Window, including:
- Semivariance Mass Bias
- Observation Frequency Bias
- Conditional Severity Bias
- Upper Semivariance Share
- Lower Semivariance Share
- Asymmetric Side-Normalized Stretch
- Upper Stabilized Wing Distance
- Lower Stabilized Wing Distance
- Realized Envelope Containment
- Side Sample Adequacy
- Smoothed Directional Mass Shift
- Flow Bridge Identity Residual
The Flow Bridge Identity Residual allows users to inspect the numerical consistency of the raw one-bar frequency/severity decomposition. Small non-zero values can occur because of floating-point arithmetic.
Limitations
This indicator is backward-looking and descriptive. It does not estimate the probability of future price direction, reversals, breakouts, continuation, or profitability.
The primary wings are not conventional Bollinger Bands and are not confidence intervals.
The Wing Multiplier does not imply a 68%, 95%, or 99% probability range.
Realized containment is calculated from past rolling observations and does not guarantee future containment.
The rolling statistics compare historical observations with the current selected basis for each calculation window. They do not compare every historical observation with the basis value that existed on that historical bar.
SMA provides the conventional arithmetic-center interpretation. EMA, RMA, and WMA create basis-relative research variants whose partial moments should not be interpreted as conventional sample semivariance around the arithmetic mean.
Conditional Severity requires observations on both sides. When one side does not meet the configured minimum sample, the script displays Sparse and S? instead of treating the missing comparison as neutral evidence.
Sparse-Side Stabilization intentionally modifies displayed wing geometry when a side has few observations. It does not modify the raw attribution statistics.
Smoothing reduces visual noise but introduces lag.
Results depend on the selected Source, length, basis, multiplier, thresholds, market, timeframe, and available data.
For conventional interpretation, use standard time-based charts. Synthetic chart types can change the input price series and therefore change calculations and alerts.
A movement outside a wing does not necessarily indicate overbought, oversold, exhaustion, breakout confirmation, reversal, or continuation.
This indicator should be used as an analytical context tool alongside the user's own market structure, execution, and risk-management process.
Open-source transparency
The script is published open-source so users can inspect the calculations, verify the attribution identities, review the stabilization logic, study the Data Window outputs, and modify the available research settings.
The indicator provides measurements and alerts only. It does not place orders, simulate performance, report a win rate, or guarantee trading results. 지표

SBP Crypto Volume Structure IndicatorSBP Crypto Volume Structure Indicator is a crypto-specific price and volume structure framework designed to organize continuous 24/7 market movement into a developing value region and a confirmed directional signal state.
The indicator is based on the idea that cryptocurrency markets frequently move through alternating phases of value formation, expansion and acceptance. Instead of treating every price movement as an independent trend signal, the framework first estimates where trading activity has been concentrated within a rolling market window. It then evaluates whether price is remaining within that developed area or establishing itself outside it.
The central component is the Value Channel.
For the active rolling window, the script divides the observed price range into multiple price rows. The volume of each completed candle is distributed across the rows covered by that candle. The rows containing the greatest concentration of accumulated volume are then expanded around the dominant area until the required core participation percentage is reached.
This calculation creates an internal upper and lower structural region representing the part of the recent market range where a significant portion of trading activity has taken place.
The Value Channel is derived from this structural region rather than from a fixed percentage of price or a conventional moving-price envelope. Its centre is based on the developing structural range, while its width is related to the distance between the upper and lower structural boundaries. A volatility floor is also applied so the channel does not become unrealistically narrow during temporarily quiet market conditions.
Because cryptocurrency markets trade continuously, abrupt changes can occur when a large candle enters the rolling window or an older high-volume move leaves it. To reduce unnecessary visual jumps, the internal structure does not relocate instantly to every newly calculated level. Instead, the framework allows the structural region and Value Channel to migrate progressively toward the latest calculated values.
The second part of the framework evaluates price acceptance.
A Buy condition is not created simply because price touches or briefly crosses the upper side of the Value Channel. The script examines whether the candle is sufficiently established above the developed value region and whether the candle body shows adequate directional quality.
Similarly, a Sale condition requires meaningful establishment below the lower Value Channel rather than a temporary wick below the region.
The directional qualification process combines several related measurements: short-term versus slower price direction, directional movement balance, recent momentum, distance from the developing centre and the position of price relative to the Value Channel. These measurements are combined internally to determine whether the apparent breakout or continuation is sufficiently supported by current market behaviour.
The signal engine recognizes several related structural situations. These include decisive movement outside the Value Channel, successful interaction with a previously crossed channel boundary and continuation after price has already established itself outside the value region.
These are not separate indicators placed together on the chart. They are stages of one process: volume distribution establishes the structural context, the Value Channel defines the active value region, directional measurements evaluate acceptance, and the final state engine decides whether a Buy or Sale condition is qualified.
The indicator also applies a strict alternating signal sequence. After a Buy has been accepted, another Buy cannot print until a valid Sale condition occurs. After a Sale, another Sale cannot print until a valid Buy occurs. This helps prevent repeated same-direction labels during one continuous movement.
Signals are evaluated on confirmed bars only. The script does not intentionally use future data or negative plot offsets.
The indicator should be used as a structural market-analysis tool rather than as a prediction of future price. Crypto assets can experience rapid volatility, gaps between liquidity conditions, liquidation-driven moves and temporary false breakouts. Users should therefore evaluate the signals together with their own risk management, timeframe selection and broader market context. 지표

Statistical Mapping - True + Midnight Open⚠️⚠️ IMPORTANT — READ BEFORE USING ⚠️⚠️
This indicator is an educational and analytical tool. It is not financial advice, not a signal service, and not a trading system. It does not tell you when to buy or sell.
Every number it shows is a HISTORICAL FREQUENCY measured on past data. It is not a probability, not a forecast, and not a guarantee. Markets change; a level that was reached on 70% of the last 90 days may be reached far less often over the next 90. Past behaviour never guarantees future behaviour.
Do not size positions off these levels alone. Do not treat a "Reach" percentage as an edge. Use this tool to understand context — how far this market normally travels — and combine it with your own analysis, your own risk management, and your own testing.
You are solely responsible for your trading decisions and any losses that result from them.
════════════════════════════════════════
WHAT THIS IS, IN ONE PARAGRAPH
Every trading day has a shape. Price opens, usually pokes a little way in the wrong direction, then travels in the direction it is actually going to close. Statistical Mapping measures both of those distances across the last N days and draws them on your chart as five levels around today's open. It tells you, before the day develops, roughly how far this market normally pulls back and roughly how far it normally runs.
════════════════════════════════════════
THE FIVE LEVELS
Working from the top of the screen down:
+D Upside distribution objective
-M Upside manipulation area
O The anchor open
+M Downside manipulation area
-D Downside distribution objective
"Distribution" (D) is travel in the direction the period closed. "Manipulation" (M) is travel against it, before the period resolved.
So on a day that closes UP:
- the run from the open up to the high is DISTRIBUTION
- the dip from the open down to the low is MANIPULATION
And on a day that closes DOWN, the mirror image.
That is why the levels are not symmetrical, and why -M sits above the open while +M sits below it. +D and -D are objectives. +M and -M are the areas where a move typically fakes out before doing what it was going to do anyway.
════════════════════════════════════════
CALCULATION METHODS:
BOTH MEDIAN & MEAN
MEAN ONLY
MEDIAN ONLY
---------------
TIMEFRAME EXAMPLES:
1 WEEK
4 HOUR
1 HOUR
---------------
OPTION TO CHOOSE THE NEW YORK MIDNIGHT OPEN AS THE DAILY OPENING PRICE
════════════════════════════════════════
HOW IT IS CALCULATED
For each of the last N completed periods (default 90 days), the script records:
Direction = up if close > open, down if close < open
If the period closed UP:
Distribution sample = high - open
Manipulation sample = open - low
If the period closed DOWN:
Distribution sample = open - low
Manipulation sample = high - open
It then takes the mean or the median of each set of samples and projects those two distances from the CURRENT period's open:
+D = today's open + distribution
-M = today's open + manipulation
+M = today's open - manipulation
-D = today's open - distribution
Mean is the arithmetic average — it is pulled around by outlier days such as CPI, FOMC or gap opens. Median is the middle value — it ignores those outliers and is usually the tighter, more realistic number.
"Both" mode draws a shaded zone spanning from the mean to the median instead of a single line. The WIDTH of that zone is itself information: a wide zone means the sample is skewed by a handful of violent days; a narrow zone means the market has been behaving consistently.
════════════════════════════════════════
THE STATISTICS TABLE — AND WHY IT MATTERS
For each level the table reports:
Level the level name
Price where the level currently sits
Dist how far that is from the anchor open, in price
Reach see below
Hit whether the current period has already traded through the level
In **Both** mode the chart draws a ZONE from the mean to the median, and the table reports the **near edge** of that zone — whichever of the two sits closer to the anchor open. That is the first price of the zone price actually reaches, so it is the number that matters in practice. Price, Dist, Reach and Hit all use that same near edge, so every column describes the same price, and the far edge stays visible on the chart as the other side of the band. Alerts use it too.
Hover any column header for a full explanation of that column. A compact footer row shows the mapping period, anchor mode, method, how many periods were actually usable, and how the sample splits between up-closing and down-closing periods.
IF YOU RUN BOTH MAPPING PERIODS AT ONCE
The table describes ONE mapping period at a time. Two periods have entirely different levels, distances and statistics, and interleaving them would produce a table nobody could read.
By default that is MAPPING PERIOD 1 — the first of the two timeframe slots. You can point it at period 2 instead with "Show Statistics For" in the statistics table settings.
If the period you pick is not on screen — its levels are hidden because your chart timeframe is not lower than it — the table falls back to the other one rather than showing you nothing.
The footer's first cell always names the period the table is describing, right next to the anchor mode and the calculation method, so you can confirm which one you are reading at a glance. The chart draws both sets of levels regardless; only the table is limited to one.
WHAT "REACH" MEANS, PLAINLY
Reach answers one question: out of the days in your lookback, how many of them actually got this far?
Worked example. Lookback is 90 days. +D sits 419 points above today's open, and Reach shows 25.6%.
That means: on 23 of the last 90 days, price traded 419 points or more above THAT day's open at some point during the day. On the other 67 days, it never got that far.
Nothing more than that. It is a count of past days, expressed as a percentage.
Why it is useful: a level on its own is just a line. Reach tells you whether that line marks something ordinary or something rare.
Low Reach (say 15-25%) — price rarely gets here. An extended target. If price
is already here, the day has done unusual work.
High Reach (say 70-80%) — price gets here on most days. Routine. Reaching it
tells you very little on its own.
The footer shows how many periods were actually usable and the up/down split, so you can always see the sample the numbers rest on.
Reach is a count of what happened on past days. It is not a probability of it happening today, and it is not a forecast.
════════════════════════════════════════
SAMPLE SELECTION — WHICH PAST PERIODS GET MEASURED
This is the setting that decides what the statistics actually describe, and it matters more than any other.
MATCHED (the default)
Only periods from the SAME SLOT are measured.
On an intraday mapping period that means the same time of day. With a 1H mapping at 09:15, the numbers come from the 09:00-10:00 hour of each of the previous days. At 10:00 the indicator switches to the 10:00-11:00 hour of those same days. On a 1D mapping period it means the same weekday — a Thursday is measured against previous Thursdays.
ROLLING
The last N periods in a row, whatever time of day they happened to be.
WHY THIS EXISTS
Markets do not behave the same at every hour. The New York open and the middle of the Asian session are different animals. Average them together and you get a number that describes neither.
The practical consequence is specific: on a 1H mapping, a rolling average of the last 90 hours is dominated by quiet hours, because most hours are quiet. Project that at 09:30 and the levels sit far too close in — price blows through them in the first ten minutes and the map looks broken. It is not broken; it was answering the wrong question. Matched sampling asks the right one: how far does THIS hour usually travel?
The same applies on a daily mapping. Mondays and Fridays do not behave like Wednesdays.
WHAT IT DOES TO "LOOKBACK"
In Matched mode, Lookback counts OCCURRENCES of the slot rather than consecutive periods. Lookback 90 on a 1H mapping means the last 90 appearances of that hour — roughly 90 trading days, not 90 hours. That is a much longer reach into history, which has one consequence worth knowing about, below.
WHEN IT DOES NOT APPLY
A 1W mapping period contains one of each slot, so there is nothing to match against. The indicator uses Rolling there and says so on the chart rather than pretending otherwise.
HONEST LIMITATION
Reaching back 90 occurrences of a slot means reaching back 90 days of data. On coarser mapping periods — 30m, 1H, 4H, 1D — that fits comfortably. On finer ones, 15m and below, it needs more intraday history than the script is given, so the sample comes up short.
The indicator does not hide this. The footer shows the real count as, for example, "n 46/90", and a notice explains that fewer samples were available and why. The levels remain valid; they simply rest on a smaller sample, and you can decide whether that is enough. Lowering Lookback removes the notice.
The table footer names the active slot, so you can always see exactly which pool the numbers came from — "1H 09:00" rather than just "1H".
ONE THING TO SET ONCE
That slot label has a time zone setting, in the statistics table section. It defaults to New York, which is the reference most index-futures and FX traders keep their charts on. If your chart is set to anything else, change it to match.
This is not laziness — Pine scripts genuinely cannot read TradingView's chart Time Zone setting. TradingView treats it as a display preference and gives scripts no access to it. So if you have changed your chart away from Exchange time, the label has no way of knowing until you tell it.
The practical case: MNQ trades on CME, whose exchange time zone is Chicago. A chart left on Exchange time therefore runs an hour behind New York. Set this to whatever your chart shows, once, and forget it.
It affects the LABEL ONLY. Slot grouping, every level, every statistic and every Reach figure are completely unaffected — changing time zone shifts every bar by the same amount, so exactly the same periods are grouped together either way.
════════════════════════════════════════
WHICH LEVELS GET REACHED ON WHICH KIND OF DAY
This falls straight out of how the levels are built, and it is worth understanding because it is most of what makes the tool useful.
+M and -M sit close to the open, because a typical day's counter-move is small. They get reached on most days — including slow, quiet, range-bound ones. Look at your own Reach column and they will usually be the two highest numbers in the table. That is exactly why price touching +M or -M, on its own, tells you very little. It is the normal texture of a day, not an event.
+D and -D sit much further out, because they represent a full typical day's directional travel. Price only gets there when the day has already moved further from its open than an average day manages. In practice that means TRENDING DAYS and HIGH-VOLATILITY DAYS — expansion sessions, news days, days that pick a direction in the morning and hold it. On a quiet range day price frequently never comes close to either one.
So the two pairs are answering different questions:
Price at +M / -M -> ordinary. The day is doing what days do.
Price at +D / -D -> this day is not ordinary. It has already
behaved like a trend or expansion day.
That second line is the practical one. Reaching a distribution level is itself information about the character of the session, before you form any view about what happens next.
Two honest caveats. First, this is a description of what the levels mean, not a prediction — nothing here says today will be a trend day. Second, "volatile" and "trending" are not the same thing and the tool does not distinguish them: a violent chop that swings 400 points in one direction and back can reach +D just as a smooth trend can. The level tells you the distance was covered, not how or in what order.
════════════════════════════════════════
HOW THIS DIFFERS FROM ADR / AVERAGE DAILY RANGE
ADR takes the average of (high - low) over N days and usually draws a band above and below either the open or the previous close. It answers one question: how big is a typical day?
Statistical Mapping answers a different and, I would argue, more useful set of questions.
WHERE IT GOES FURTHER THAN ADR
1. It compares like with like. ADR averages the last N days as one undifferentiated pool. On an intraday mapping period this indicator averages only the SAME TIME OF DAY — the 09:00 hour against previous 09:00 hours — and on a daily period only the same weekday. No ADR variant does this, and it is the difference between a projection that survives the New York open and one that price walks through in the first ten minutes.
2. It separates the range into direction. ADR gives you one number for the whole candle. Stat Map splits that candle into the part that travelled with the close and the part that travelled against it, and measures them separately. That is the difference between "the day is usually 300 points" and "the day usually pulls back 90 points before running 210".
3. It is asymmetric, and deliberately so. Because up-days and down-days are measured on their own terms, the upside and downside levels are not mirror images. ADR bands almost always are.
4. It offers the median, not just the mean. A single CPI day can inflate an ADR reading for weeks. The median is immune to that. Being able to flip between the two — and to see the gap between them in "Both" mode — is a diagnostic in its own right.
5. It reports how often each level was actually reached. This is the big one. ADR draws a line and stops. Stat Map tells you the historical frequency behind every line it draws.
6. It supports a NY Midnight anchor. For 24-hour markets the exchange's own daily open is often an arbitrary moment. Many traders work from 00:00 New York instead. The script rebuilds whole days around that time and recomputes every statistic from scratch, rather than just shifting a line.
7. It works on any mapping period, not only daily. Set it to 1W and you get the same decomposition for the weekly candle.
WHERE ADR IS THE BETTER TOOL, OR WHERE THIS ONE IS WEAKER
Being straight about this matters more than selling it.
1. It is more complicated. ADR is one number and anyone can use it in thirty seconds. This has five levels with a specific meaning each, and it will confuse a beginner who has not read the definitions above.
2. It needs a directional close to classify a period. A day that closes exactly at its open contributes to neither sample set. This is rare but it means the sample count can be slightly below your lookback setting.
3. The classification is only known in hindsight. A period is labelled up or down by its CLOSE. That is fine for building statistics from finished days, but it means the levels drawn on today's open are built on a mix of past up-days and past down-days — the script does not and cannot know which kind of day today will be. Both sides are drawn precisely because that is unknowable.
4. It is not adaptive within the period. The levels are fixed at the open and do not adjust as volatility develops during the session. ADR-style tools have the same limitation, but it is worth stating.
5. It says nothing about sequence or timing. It tells you how far, not when, and not in what order. A day that runs to +D at 09:45 and a day that grinds there by 15:55 look identical to this tool.
6. Regime changes take time to show up. With a 90-period lookback, a genuine shift in volatility takes weeks to be fully reflected. Shorten the lookback if you want faster adaptation — and accept a noisier, less stable reading in exchange.
Neither tool replaces the other. ADR sizes the day. This maps it.
════════════════════════════════════════
HOW TO USE IT — PRACTICAL
FOR BEGINNERS, START HERE
Put it on a 15m chart with the defaults, set Calculation method to Median, and just watch it for two weeks without trading it. Notice how often price dips to +M early and then turns. Notice how often +D holds as a high for the day. You are building an intuition for how far this market actually moves — which is the single most common thing new traders have no feel for.
There is no single "correct" way to trade this. The levels describe the shape of a period; which part of that shape is useful depends entirely on what you trade. The sections below cover the common approaches, and the range section is as important as the trend one.
INTRADAY / DAY TRADING
The manipulation levels (+M and -M) are where the tool earns its keep. If you are looking for longs and price has come down into +M, you are at the area where up-days have historically found their low. That is a location to look for your own entry trigger — not a signal by itself. The distribution levels (+D and -D) work the other way: they are where you consider taking profit rather than initiating, because price reaching there means the day has already done a typical day's work in that direction.
The anchor open (O) is a simple bias line. Above it, you are on the bullish side of the period; below it, the bearish side.
RANGE, CONSOLIDATION AND MEAN-REVERSION
This is the other half of the tool, and it is easy to miss if you only read the section above.
Most days are not trend days. On an ordinary session price spends its time between +M and -M, oscillating around the anchor open, and never comes close to +D or -D. That is not the tool failing — it is the tool telling you what kind of day it is.
For anyone trading ranges, consolidations, or short mean-reversion, the useful structure is the inner three levels and nothing else:
-M the upper edge of the ordinary daily range
O the middle, and the level price returns to most often
+M the lower edge of the ordinary daily range
Look at the Reach figures for +M and -M on your instrument. They are typically the two highest numbers in the table — commonly 55-80%. That is the whole point: these are levels price reaches on most days, including quiet ones. Approaches built around them are naturally higher-frequency and lower reward-to-risk than approaches built around +D and -D, which is a trade-off, not a flaw. Fading -M back toward the open, or buying +M back toward the open, is a coherent way to use this.
The anchor open is the natural target for that kind of trade, and often the natural invalidation for the opposite one.
TWO HONEST WARNINGS ABOUT THIS
First, and this matters: Reach measures how often price GOT to a level. It does not measure how often price REVERSED there. Those are completely different questions and this indicator only answers the first. A 75% Reach on -M means price traded there on three days in four — it says nothing whatever about what happened next. Do not read a high Reach as a high win rate.
Second, the trades that make range approaches work are the same trades that get destroyed on trend days. The day you fade -M is the day price runs to +D. That is precisely why the distribution levels are on the chart at the same time: if price is pushing through -M with conviction rather than stalling at it, the map is telling you this may not be a range day. Use the whole structure, not half of it.
SCALPING
Use the Reach column as a filter. If price is sitting just past a level with a 20% reach, the market is already in unusual territory for the session and further continuation in that direction has historically been the exception, not the rule. Conversely a level with 70% reach is barely a level at all — price gets there on most days and it is poor evidence of anything.
Also watch the Hit column. Once +D is ticked for the day, the remaining upside to a typical day's extension is spent.
SWING TRADING
Put 1W in mapping period 1, untick period 2, and drop the chart to 1D or 4H. (Slot
1 rather than slot 2 on purpose: alerts only ever fire from slot 1 — see ALERTS
below.) You now get the same decomposition for the weekly candle: how far a week typically pulls back before running, and how far it typically runs. Weekly +M often lines up with the sort of pullback entry swing traders wait for.
You can also run both at once — 1D and 1W together — on a 1H or 4H chart, to see where the daily and weekly structures agree.
CHOOSING MEAN vs MEDIAN
Median for normal conditions and for tighter, more conservative targets. Mean when you want the levels to account for the fat tail — around known event risk, for example. Both, when you want to see how far apart they are, because that gap is a direct read on how outlier-driven the recent sample has been.
════════════════════════════════════════
IMPORTANT BEHAVIOUR YOU SHOULD KNOW ABOUT
THE TIMEFRAME RULE — please read this one, it is the most common confusion
Your chart timeframe must be STRICTLY LOWER than the mapping period.
Mapping 1D -> chart must be 4H, 1H, 15m, 5m, 1m ...
Mapping 1W -> chart must be 1D, 4H, 1H ...
On a 1D chart the 1D levels will NOT appear. This is correct and intended: a period cannot be projected forward across a chart bar that already contains it. The script tells you so in a message at the bottom of the chart rather than failing silently. If you find that message annoying once you understand the rule, you can switch it off in the settings.
NY MIDNIGHT ANCHOR PRECISION
Days are rebuilt from 1-hour data, inside that data's own context rather than from your chart's bars. 00:00 New York falls on an hourly boundary for the futures, forex and crypto markets this mode is intended for, so the reconstruction is exact.
Because the reconstruction never touches chart bars, the anchor and every level are identical on every chart timeframe. A 5m chart, a 1H chart and a 4H chart all show the same prices.
The anchor mode applies to the 1D mapping only. Any other mapping period always uses that period's own true open.
DAYLIGHT SAVING TIME
Handled automatically, and worth explaining because it is a common source of doubt.
The script uses America/New_York, which is a full timezone rule rather than a fixed UTC offset. The anchor therefore tracks local New York clock time all year — EST in winter, EDT in summer — and its position relative to UTC shifts on its own at each changeover. You never need to adjust anything.
The two changeover days are 23 and 25 hours long. Days are rebuilt by watching the New York calendar date change, not by counting a fixed number of bars, so those two days are measured correctly as well: one simply contains one hour less of data, the other one hour more.
WHY THERE IS NO CUSTOM TIMEZONE OPTION
This is deliberate, for three reasons.
First, a technical one. Days are reconstructed from 1-hour bars, which is exact only because midnight New York lands on an hourly boundary. Several timezones are offset by a half or quarter hour — India, Iran, Nepal, parts of Australia — and there midnight falls in the middle of an hourly bar. The reconstruction would be quietly wrong rather than visibly broken, which is the worst kind of wrong.
Second, a conceptual one. The New York midnight open is a specific reference point that a large amount of flow actually keys off. It is not an arbitrary parameter. A free-form timezone box would imply every choice is equally meaningful, and most are not.
Third, an honest one about method. Offering a dial that changes every number in the table invites tuning it until the levels look good on the chart in front of you. That is curve-fitting, and it makes the statistics worse while feeling like it makes them better.
If you want a different anchor, the True Daily Open mode already gives you the exchange's own reference, which is the other genuinely meaningful one.
SAMPLE SIZE
If your data history cannot supply the number of periods you asked for, the table footer shows what was actually used and a message appears on the chart. The statistics are still valid, they are just built on fewer samples. Be more sceptical of a Reach figure built on 20 periods than one built on 200.
WHAT "TRUE DAILY OPEN" MEANS ON YOUR INSTRUMENT
It is the open of the 1D candle exactly as TradingView builds it for that symbol — so it follows each market's own session definition rather than imposing one:
US stocks 09:30 New York (regular session)
Euronext stocks 09:00 local exchange time
CME index futures 18:00 New York, previous day
Other futures that product's own session start, which differs by complex (grains, energy, metals and softs do not all open at the same time)
Forex and CFDs typically 17:00 New York
Crypto 00:00 UTC
One thing worth knowing: for instruments with a pre/post market, the daily candle follows YOUR CHART'S extended-hours setting. Turn extended hours on for a US stock and the daily open becomes the pre-market open rather than 09:30. That is consistent with what you see on the chart, but it does mean two traders looking at the same stock with different session settings will see different levels. If that matters to you, fix your chart's session setting and leave it alone.
If you trade something unusual and want to be sure, put the indicator on a 1H chart and compare the O line against the open of the daily candle on a 1D chart. They should match to the tick.
THE SAME ON EVERY CHART TIMEFRAME
Everything the script draws is read from the mapping period's own context, never rebuilt from chart bars. Put a 1W mapping on a 1D chart, then a 4H, then a 1H, then a 5m: the anchor, all five levels and every statistic are the same prices every time.
That is a deliberate design decision, not a detail. Rebuilding the anchor from chart bars cannot guarantee it, because bar alignment, session definitions, holidays and gaps all differ between timeframes — and a level that moves when you change timeframe is worse than no level at all.
REPAINTING
No level moves once it is drawn. Every level is fixed the moment its period opens and stays there until the next period begins.
Being precise about how that holds, since the script does use lookahead:
1. Every statistic — the means, the medians, the Reach percentages, the
sample counts — is computed from COMPLETED periods only. The forming
period's high, low and close never enter any of them. This is the part
that would leak the future, and it does not.
2. The five levels are built from those statistics plus the current period's
OPENING price, and drawn between its start and end timestamps. All three
of those are known the instant the period begins, so reading them ahead is
not future information. This is the standard, documented way to anchor a
higher-timeframe open.
3. One further value is read: the current period's running high and low. It
feeds exactly one thing — the Hit column, which reports whether the period
SO FAR has traded through a level — and that column is only ever drawn on
the last bar, where "so far" means right now. No level, no statistic and no
alert depends on it, and nothing about it is plotted historically.
Point 3 is worth stating plainly because it is the kind of thing that deserves scrutiny in an open-source script. It is read from the period's own context rather than rebuilt from chart bars for a concrete reason: on a live chart, a script is not guaranteed to calculate over the full period, so counting back through chart bars can silently measure only a recent slice of it — and do so differently in Bar Replay than in real time.
WHEN THERE IS NOT ENOUGH HISTORY
If the symbol does not have as many completed periods as your Lookback asks for — 90 weekly periods is nearly two years, and plenty of symbols do not have that — the script does not hide anything and does not error out.
It uses every period that does exist, shows the real count in the table footer as for example "n 47/90", and puts a notice at the bottom of the chart telling you the sample is smaller than you requested. The levels remain valid; they simply rest on fewer samples, and you can decide whether that is enough for you. Lowering Lookback to a number the symbol can actually supply removes the notice.
The statistics table never disappears because of missing data. If a value genuinely cannot be computed it reads n/a, so you can always see what the script is and is not able to do.
════════════════════════════════════════
SETTINGS
1 — MAPPING PERIODS
Two independent slots, each with its own on/off toggle. Defaults are 1D on, 1W off.
Daily anchor mode: True Daily Open, or NY Midnight Open (00:00 America/New_York).
Lookback: how many completed periods feed the statistics. Default 90. In Matched sampling this counts occurrences of the current slot.
Sample Selection: Matched or Rolling. Defaults to Matched. See the section above.
Calculation method: Mean, Median, or Both. Defaults to Both.
2 — "BOTH" MODE ZONES
Fill colours for the mean-to-median zones. Sits directly under Calculation method because it only has an effect when that is set to Both.
3 — LEVEL LINES, COLOURS & LABELS
Colour, line style and thickness for each of the five levels, listed in the same top-to-bottom order they appear on the chart. Level labels can be turned off.
4 — STATISTICS TABLE
On/off; which mapping period it describes (defaults to period 1); slot label time zone (defaults to New York; set it to match your chart); position (all eight edge and corner slots, including top and bottom centre; defaults to Middle Right); text size (defaults to Normal).
5 — ALERTS
Which levels can fire, and what counts as reaching one.
6 — WARNINGS
On/off for the on-chart notices described above. The warning panel automatically places itself away from the statistics table, so the two never overlap wherever you put the table.
════════════════════════════════════════
ALERTS
Six alert conditions are available:
+D reached
-M reached
Open crossed
+M reached
-D reached
Any enabled level
ALERTS COME FROM MAPPING PERIOD 1 ONLY . Worth stating plainly, because nothing on
screen will tell you otherwise: if you untick mapping period 1 and run only period
2, these six conditions still appear in TradingView's dropdown and you can still
create the alert — it simply never fires. If you want alerts on a particular
period, put that period in SLOT 1.
Settings section 5 controls two things. First, which levels are allowed to fire — untick a level and it will never trigger, even if you created an alert for it. Second, what counts as reaching a level:
Touches the level (wick) — fires as soon as any part of the bar reaches the
level. Earlier and more sensitive.
Closes beyond the level — fires only when a bar CLOSES past it. Later, and
fewer false triggers.
TO CREATE AN ALERT
1. Set the tickboxes in section 5 the way you want them, then press Ok.
2. Right-click the chart and choose Add alert (or press Alt+A).
3. In the Condition dropdown at the top, select "Stat-Map (Gigi)".
4. In the second dropdown, pick the level you want. Use "Any enabled level" if
you would rather have one alert covering all of them.
5. Set Trigger to "Once Per Bar Close" for confirmed signals, or "Once Per Bar"
for intrabar.
6. Press Create. Repeat for each level you want separately.
The levels jumping to new prices at the start of a period never by itself sends an alert. A genuine touch on that opening bar does, though — an opening bar that runs from the anchor open straight into a level is a real event, and both the Hit column and the alerts treat it as one.
════════════════════════════════════════
Open source under the Mozilla Public License 2.0. You are welcome to read, learn from and build on the code.
Feedback and bug reports are genuinely welcome — if you find a symbol or timeframe where something looks wrong, please say so.
— Gigi_Luigino 지표

Composite Institutional Momentum Oscillator [CMO]📊 Composite Institutional Momentum Oscillator
The Composite Institutional Momentum Oscillator (CMO) is an advanced, volume-weighted momentum oscillator originally engineered for Bitcoin and Crypto markets, yet fully optimized to perform seamlessly across all asset classes and sectors—including Stocks, Forex, Indices, and Commodities. 📈
By pairing short-term price velocity with synthetic order flow delta, volume absorption metrics, and multi-timeframe alignment, CMO filters out market noise to isolate true institutional positioning and trend expansion regardless of the traded asset. 🔥
🔍 How Order Flow & Absorption Work Across Markets
Because traditional Pine Script environment variables process completed transactions bar-by-bar rather than raw Level 2 limit order books, CMO utilizes robust algorithmic estimations derived from volume and intra-bar price action:
* ⚡ Synthetic Volume Delta Estimate: Approximates aggressive market buying versus market selling pressure per bar based on the close position within the high-low candle range ($\text{bullVol} \text{ vs. } \text{bearVol}$).
* 🛡️ Stealth Absorption Detection: Identifies hidden limit-order wall absorption by tracking Volume Efficiency ($\frac{\text{Volume}}{\text{Candle Range}}$). Abnormally high volume occurring inside narrow price ranges flags institutional limit orders absorbing aggressive market flow without letting price slip.
⭐ Key Features
* 🌐 Universal Multi-Asset Optimization: Engineered around Bitcoin's high volatility dynamics, making it exceptionally sharp at detecting momentum shifts in standard equities, forex pairs, and commodities.
* ⚖️ Order Flow & Stealth Absorption Weighting: Dynamically scales momentum signals using synthetic delta and volume efficiency ratios to capture true institutional effort.
* 🚀 Dual-WMA Velocity Core: Combines fast and slow Weighted Moving Average calculations to capture responsive directional changes while reducing false breakout signals during sideways consolidation.
* ⚓ Normalized CIMA Anchor: Anchors momentum against a long-term macro cost basis (510-period default) scaled by rolling standard deviation.
* 🎯 Liquidity Sweep Detection: Automatically flags potential institutional stop-hunts when price temporarily breaches macro high/low boundaries before reclaiming them.
* 🧠 Synthetic Fear & Greed Index: Computes a real-time 0–100 market sentiment score integrating volatility ratios, relative momentum positioning, and standard 14-period RSI metrics.
* 🖥️ On-Chart Status Dashboard: Provides an active HUD readout of macro trend alignment, micro trend bias, local momentum phase, and real-time sentiment metrics.
💡 Trading Guidance (Crypto, Stocks, Forex & Commodities)
* 🟢 Bullish / Bearish Expansion: A CMO line breach above +1.0 (or below -1.0) alongside daily MTF alignment confirms high-probability institutional trend expansion.
* 🔄 Accumulation / Distribution: Oscillations between 0.05 and 1.0 signal controlled accumulation phases, while values between -0.05 and -1.0 indicate steady distribution.
* 🧹 Liquidity Sweeps: Highlighted markers identify rapid false breaches of macro highs/lows, offering high-reward mean-reversion entries in the direction of the higher-timeframe trend.
* ⚠️ Extreme Sentiment Reversals: Fear & Greed index values above 75 (Extreme Greed) or below 25 (Extreme Fear) alert traders to overextended leverage and imminent pullback potential.
⚙️ Input Settings
Parameter Default Description
MTF Trend Filter Frame 1440 (1D) Higher timeframe resolution used to establish macro directional trend bias.
Price Source ohlc4 Calculation source for momentum and volume algorithms.
Macro Baseline Lookback 510 Lookback period for institutional cost basis and standard deviation bounds.
Micro Baseline Lookback 63 Slow period for dual-WMA velocity calculations.
CMO Length 12 Fast period for dual-WMA velocity calculations.
Enable Order Flow Delta True Toggles synthetic volume delta weighting in composite momentum formulas.
Enable Stealth Absorption True Toggles volume efficiency weighting to detect hidden limit order absorption. 지표

지표

IV vs RV Volatility ConesWhat it does
It draws two cones around the same anchor price. One is built from implied volatility, read from India VIX. The other is built from realized volatility, measured on weekly bars of the chart symbol. Both are scaled to the same horizon and drawn with the same geometry, so their widths are directly comparable.
Where the implied cone is wider than the realized cone, the option market was charging for more movement than the index actually delivered. Where it is narrower, the index outran what options were priced for. That gap is the variance risk premium, and it is the whole point of the indicator.
Two cones, two jobs
The historical cone is anchored to a weekly close one horizon in the past, so the whole four-week journey sits inside it and you can see how it resolved. Price finishing outside the realized cone means the index moved further than its own recent volatility said it usually does. Price finishing outside the implied cone means it moved further than options had paid for.
The forward cone starts at the current bar and projects one horizon ahead, using the latest confirmed weekly volatility reading. It is a distribution, not a forecast of direction.
How it is calculated
Implied leg. India VIX is an annualised implied volatility quoted in percentage points. It is rescaled to the horizon by the square root of the horizon over 52.
Realized leg. Weekly log returns are measured over the lookback, then scaled to the horizon by the square root of the number of weeks. Three estimators:
Yang-Zhang, the default. It combines the weekend-gap variance, the open-to-close variance and the Rogers-Satchell range term, weighted by the standard k factor. It uses the whole weekly bar and is the most efficient and most drift-independent of the three.
Std Dev. Sample standard deviation of weekly close-to-close log returns. Simple, and blind to everything inside the week.
ATR%. Weekly Average True Range as a fraction of price, times a user-set factor. Range-aware, but the factor is a convention rather than a derivation.
Both cones use the same geometry, lognormal by default, so a difference in width is a difference in volatility and nothing else.
Reading the panel
The readout gives the one-sigma figure for each leg in percent, the resulting price cone for each, and the ratio of the two. A verdict line calls the ratio rich, fair or cheap against thresholds you set. Rich means implied is running above realized. That is the normal state for an index, so the useful signal is the size of the gap and its direction of travel, not its sign.
Timeframes
All volatility maths runs in the weekly context, so the values are identical on a 15-minute chart and a weekly chart. Use any timeframe up to Weekly. Above Weekly the indicator disables itself and says so, because a weekly request from a monthly chart returns partial bars.
Alerts
Four are provided: implied crossing above the rich threshold, implied crossing below the cheap threshold, and price closing outside the realized cone in either direction.
Limitations, stated plainly
India VIX measures implied volatility on NIFTY 50. Point the implied source at something else and you are comparing one instrument's implied volatility against another's realized volatility, which means nothing. The input exists so you can pair a different index with its own volatility index, not so you can run this on any symbol.
One sigma is a description of a distribution, not a boundary. Roughly one period in three should finish outside a well-calibrated one-sigma cone. Bands being broken is expected behaviour, not a signal.
Square-root-of-time scaling assumes weekly returns are independent. Real index returns cluster in volatility, so the scaling understates the tails during a stress regime and overstates them coming out of one.
The implied leg uses a single at-the-money-ish volatility number and ignores skew, so it will understate downside and overstate upside relative to what the option surface actually prices.
Realized volatility is backward-looking by construction. It tells you what just happened, not what is about to.
This plots volatility. It produces no directional signal, no entries and no exits.
Not financial advice. For education and research only. 지표

TF: Trend Participation Monitor (TPM)TradingFlow: Trend Participation Monitor (TPM)
TradingFlow: Trend Participation Monitor (TPM) combines price behavior and relative volume in a separate pane to show recent directional pressure and whether that pressure is improving or deteriorating relative to its recent average.
TPM is designed to track relatively short-term changes in price/volume pressure. The time horizon depends on the chart timeframe and lookback settings.
TPM separates the level of pressure from the change in pressure. Positive pressure can be weakening, while negative pressure can be recovering. This helps traders distinguish the direction of recent price/volume behavior from changes in its strength.
TPM is a pressure monitor, not a predictive reversal indicator or a standalone entry and exit system.
Price and Participation Model
The model combines two components with equal weight: directional price efficiency and relative-volume-weighted bar pressure.
Price efficiency compares net price movement with the total distance traveled by consecutive closes. Bar pressure combines the close-to-close move, normalized by the previous bar's ATR, with the close's position within the candle range. Close-to-close movement includes gaps; closing near the high after a gap down does not automatically make the bar positive.
Relative volume compares each bar's volume with the average of preceding bars. Its contribution is capped to limit the influence of isolated volume spikes. The result is smoothed into a pressure score bounded between -100 and +100. This is a price/volume proxy, not actual buy/sell volume or measured capital flows.
Pressure and Reference Lines
The blue line shows pressure. Values above zero indicate positive pressure within the model, while values below zero indicate negative pressure. The gray line is a slower average of that pressure, providing a reference for recent change.
Recent Change Histogram
The histogram equals half the difference between pressure and its reference. It measures pressure relative to its recent average, rather than price direction or the change from just one bar ago.
With default settings, a change score must remain at or above +5, or at or below -5, for two consecutive bars to receive a confirmed directional color.
Four-Shade Color System
Purple represents confirmed improvement; gold represents confirmed deterioration.
Gray: the threshold or confirmation requirement has not been met.
Darker shades indicate columns growing away from zero; lighter shades indicate columns shrinking toward zero or remaining unchanged, compared with the preceding bar. Gray does not mean price is stable, and a lighter gold column can still represent confirmed deterioration even as its magnitude decreases.
Compact Dashboard and Activity Context
The compact table shows the displayed bar status, recent condition, and pressure/change values. The optional detailed view adds volume, rolling relative volume, estimated stock traded value, optional free-float turnover, and data status.
Estimated traded value uses typical price multiplied by volume. Turnover requires a manually supplied free-float figure in millions of shares. Both are stock-only context measurements and do not contribute additional votes to the pressure score. A fixed float figure may not represent historical share counts accurately.
Closed-Bar Display and Alerts
By default, the indicator holds the last completed bar's readings while the current candle forms. Disabling this option displays provisional live values and colors that may change before the bar closes. Alerts remain restricted to bar close and identify newly confirmed improvement or deterioration. They confirm observed pressure changes; they do not identify the start of a price trend.
Volume Data Handling
Missing or invalid volume, a zero-volume evaluated bar, and insufficient usable activity suppress pressure output and alerts. The pressure window needs at least two bars with usable positive volume weights. After missing data, a valid recovery window is required before output resumes. Small positive volume is supported, but thin trading can still produce noisy readings.
How to Read the Chart
Positive pressure with purple columns means pressure is positive and sufficiently above its reference. Positive pressure with gold columns means it remains positive but has weakened relative to that reference.
Negative pressure with purple columns indicates recovery within negative pressure, not a confirmed bullish reversal. A histogram near zero means pressure is close to its reference; it does not establish a sideways price trend.
Flexible Configuration
Users can adjust the activity baseline, pressure window, smoothing, reference length, ATR length, volume cap, change threshold, confirmation period, histogram colors, and dashboard display.
The defaults are intended as a starting point for daily stock charts. All lengths count chart bars. On intraday charts, relative volume uses a rolling-bar comparison, not a same-time-of-day comparison, so session openings, closings, and extended hours can affect readings. Use standard candles and consider the meaning of the symbol's volume feed.
Practical Use
TPM is best approached as a short-term reference when considering entry and exit timing. Its relatively responsive readings can change frequently within an ongoing move, so using every change to reassess an open position may encourage unnecessary second-guessing. For holding decisions, give greater weight to your trading timeframe, broader price structure, and original trade plan. A change in TPM alone is not a reason to enter or exit.
TPM can help assess changes in price/volume pressure during advances, pullbacks, and consolidations. Read it alongside price structure and market context. Smoothing and confirmation introduce delay; faster settings can increase noise. Scores are not probabilities, and TPM does not guarantee future price direction or trading profitability.
---
TradingFlow: Trend Participation Monitor (TPM)
TradingFlow: Trend Participation Monitor (TPM) 結合價格行為與相對成交量,在獨立窗格中呈現近期的方向性壓力,以及壓力相對於近期平均值正在改善還是惡化。
TPM 著重觀察相對短期的量價壓力變化,實際涵蓋的時間範圍取決於圖表週期與回看設定。
TPM 將「壓力的正負」與「壓力的變化」分開呈現。正向壓力可能正在減弱,負向壓力也可能正在回升,讓交易者能區分近期量價表現的方向與強弱變化。
TPM 是壓力觀察工具,並非預測反轉的指標,也不是獨立的進出場系統。
價格與成交參與模型
模型以相同權重結合兩個部分:價格方向效率,以及相對成交量加權的單根 K 線壓力。
價格方向效率比較價格淨變化與連續收盤價的總移動距離。單根 K 線壓力則結合「以前一根 ATR 標準化的收盤價變化」與「收盤價在當根高低區間中的位置」。收盤價之間的變化包含跳空,因此向下跳空後收在當根高點附近,不一定會得到正向判定。
相對成交量比較當根成交量與先前數根 K 線的平均成交量,並限制其權重上限,避免單次爆量過度主導結果。模型經平滑後形成介於 -100 至 +100 的壓力分數。這是根據量價推算的數值,並非實際買賣方成交量或資金流入流出。
壓力線與參考線
藍線代表壓力。高於零表示模型中的正向壓力,低於零則表示負向壓力。灰線是壓力的較慢平均值,用來比較近期變化。
近期變化柱狀圖
柱狀圖等於壓力與參考線差值的一半。它衡量壓力相對近期平均值的位置,並非直接表示價格方向,也不只是與上一根 K 線相比的變化。
預設情況下,變化分數需要連續兩根達到 +5 或以上,或 -5 或以下,才會顯示已確認的方向顏色。
四色深淺設計
紫色代表已確認的改善;金色代表已確認的惡化。
灰色:尚未符合門檻或連續確認條件。
與前一根相比,較深色表示柱體朝遠離零軸的方向增長;較淺色表示柱體朝零軸縮短或持平。灰色不代表價格穩定;淺金色即使正在縮短,仍可能處於已確認的惡化狀態。
精簡資訊表與成交背景
精簡資訊表顯示目前採用的 K 線狀態、近期狀況,以及壓力與變化分數。詳細模式另顯示成交量、滾動相對成交量、股票估算成交額、可選的流通股換手率與資料狀態。
估算成交額以典型價格乘以成交量計算。換手率需手動輸入流通股數,單位為百萬股。這兩項僅提供股票的成交背景,不會額外加入壓力分數,避免重複計入成交量。固定的流通股數也未必能準確反映歷史股數變化。
收盤顯示與提醒
預設在當根 K 線形成期間,維持上一根已收盤 K 線的讀值。關閉此選項後,會顯示即時數值與顏色,兩者在當根收盤前都可能改變。提醒仍只在收盤時觸發,用來通知新確認的改善或惡化。這些提醒確認的是已發生的壓力變化,不代表價格趨勢剛剛開始。
成交量資料處理
當成交量缺失或無效、被評估的 K 線成交量為零,或有效成交活動不足時,指標會停止顯示壓力讀值並抑制提醒。壓力窗口內至少需要兩根具有有效正成交量權重的 K 線。資料缺失後,需累積完整的有效恢復窗口才會重新輸出。極小的正成交量仍可計算,但交投清淡時的讀值可能較嘈雜。
如何閱讀圖表
正向壓力搭配紫色柱,表示壓力為正,且已充分高於參考線。正向壓力搭配金色柱,表示壓力仍為正,但相對參考線已轉弱。
負向壓力搭配紫色柱,代表負向壓力正在回升,並非已確認的多頭反轉。柱狀圖接近零,代表壓力接近參考線,不代表價格必然處於橫盤。
彈性設定
可調整成交量基準期、壓力窗口、平滑期、參考期、ATR 週期、成交量權重上限、變化門檻、確認根數、柱狀圖顏色與資訊表顯示方式。
預設參數以股票日線作為起點,所有週期均按圖表的 K 線根數計算。日內相對成交量採用滾動比較,並非與過往相同時段比較,因此開盤、收盤與延長交易時段可能影響讀值。請使用標準 K 線,並留意商品所提供的成交量資料類型。
實際使用方式
TPM 的定位較適合作為評估進出場時機的短期輔助參考。由於反應較快,即使同一段走勢仍在延續,讀值也可能頻繁變化;持倉期間若每次變化都重新判斷是否續抱,容易反覆猶豫,打亂原有節奏。是否繼續持有,應更重視自己的交易週期、較大範圍的價格結構與原先的交易計畫,不宜僅因 TPM 的變化就決定進出場。
TPM 可協助觀察上漲、回調與整理期間的量價壓力變化,適合搭配價格結構與市場背景使用。平滑與確認機制會帶來延遲;較快的設定也可能增加雜訊。分數並非機率,TPM 不保證未來價格方向或交易獲利。
---
TradingFlow: Trend Participation Monitor (TPM)
TradingFlow: Trend Participation Monitor (TPM) は、値動きと相対出来高を組み合わせ、直近の上昇・下落圧力と、その圧力が最近の平均に対して改善しているか、悪化しているかを別のペインに表示するインジケーターです。
TPM は、価格と出来高から読み取れる比較的短期の圧力変化を捉えることを目的としています。対象となる時間の長さは、チャートの時間足と計算期間の設定によって変わります。
圧力の水準と、その変化を分けて見ることで、プラス圏にありながら勢いが弱まっている状態や、マイナス圏から持ち直している状態を把握できます。
TPM は圧力の変化を観察するためのツールです。反転を予測するものではなく、単独で売買のタイミングを判断するためのシステムでもありません。
価格と出来高を組み合わせたモデル
モデルは「値動きの方向効率」と「相対出来高で加重した各足の圧力」を、同じ比率で組み合わせています。
値動きの方向効率は、期間中の始点と終点の価格差を、終値が上下に動いた距離の合計と比較します。各足の圧力は、前の足の ATR で調整した終値の変化と、その足の高値・安値の範囲内での終値の位置から計算します。終値間の変化には窓開けも含まれるため、下に窓を開けた後にその足の高値付近で引けても、必ずしもプラスの評価にはなりません。
相対出来高は、各足の出来高をそれ以前の足の平均出来高と比較したものです。単発の出来高急増に左右されすぎないよう、計算に使う重みには上限を設けています。計算結果を平滑化し、-100 から +100 の圧力スコアとして表示します。このスコアは価格と出来高に基づく推定値であり、実際の買い・売り別出来高や資金流出入を測定したものではありません。
圧力ラインと基準ライン
青いラインは圧力スコアです。ゼロより上はモデル上の上昇圧力、ゼロより下は下落圧力を示します。グレーのラインは圧力をより長い期間で平均したもので、直近の変化を判断する基準になります。
直近の変化を示すヒストグラム
ヒストグラムは、圧力スコアと基準ラインの差を 2 で割った値です。価格そのものの方向や、単純な前の足との差ではなく、圧力が最近の平均に対してどの位置にあるかを示します。
初期設定では、変化スコアが 2 本連続で +5 以上、または -5 以下になると、条件成立を示す色が付きます。
色と濃淡の見方
紫は改善条件の成立、ゴールドは悪化条件の成立を示します。
グレーは、しきい値または連続確認の条件を満たしていない状態です。
前の足と比べてゼロから離れる方向に棒が伸びると濃い色、ゼロに向かって縮むか横ばいになると薄い色で表示します。グレーは価格が安定していることを意味しません。また、薄いゴールドの棒がゼロに向かって縮んでいても、悪化の判定条件は引き続き満たしている場合があります。
コンパクトな情報テーブル
通常表示では、表示対象の足の状態、直近の判定、圧力スコアと変化スコアを確認できます。詳細表示では、出来高、相対出来高、株式の推定売買代金、任意設定の浮動株回転率、データの状態も表示します。
推定売買代金は、代表価格(高値・安値・終値の平均)に出来高を掛けて計算します。浮動株回転率を表示するには、浮動株数を百万株単位で手入力してください。いずれも株式向けの参考情報であり、圧力スコアには加算しません。なお、固定の浮動株数では、過去の株数の変化を正確に反映できない場合があります。
確定足の表示とアラート
初期設定では、現在の足が形成されている間も、直前の確定足の値を表示します。この設定をオフにすると、リアルタイムの値と色を表示しますが、どちらも足が確定するまでは変わる可能性があります。アラートは設定にかかわらず足の確定時にのみ発生し、改善または悪化の条件が新たに成立したことを通知します。すでに生じた圧力変化を確認するものであり、価格トレンドの始まりを示すものではありません。
出来高データの扱い
出来高の欠損・無効値、判定対象の足の出来高がゼロの場合、または計算に使える取引データが不足している場合は、圧力の表示とアラートを停止します。圧力の計算期間内には、有効な正の出来高ウェイトを持つ足が少なくとも 2 本必要です。データ欠損後は、所定の期間にわたって有効なデータがそろうと表示を再開します。ごく少量の出来高でも計算できますが、取引が少ない銘柄では値が不安定になることがあります。
チャートの読み方
圧力がプラスで紫の棒が出ている場合は、圧力がプラス圏にあり、基準ラインを十分に上回っている状態です。圧力がプラスでもゴールドの棒が出ている場合は、プラス圏を維持しながらも、基準ラインに対して弱まっていることを示します。
圧力がマイナスで紫の棒が出ている場合は、マイナス圏からの持ち直しを示します。上昇トレンドへの転換が確定したわけではありません。ヒストグラムがゼロ付近にある場合は、圧力が基準ラインに近い状態であり、価格が横ばいであるとは限りません。
カスタマイズ
出来高の比較期間、圧力の計算期間、平滑化期間、基準ラインの期間、ATR の期間、出来高ウェイトの上限、変化のしきい値、確認本数、ヒストグラムの色、テーブルの表示を調整できます。
初期設定は株式の日足を想定しています。各期間は、チャート上の足の本数で数えます。日中足の相対出来高は直前の一定本数との比較であり、過去の同じ時間帯との比較ではありません。そのため、寄り付き・引け・時間外取引の影響を受けます。通常のローソク足で使用し、対象銘柄の出来高データが何を表しているかも確認してください。
活用方法
TPM は、エントリーや決済のタイミングを検討する際の、短期的な補助指標としての利用を想定しています。比較的反応が速く、一つの値動きが続いている途中でも表示が頻繁に変わることがあります。保有中にその変化を追いすぎると、判断がぶれたり、当初の売買計画を必要以上に見直したりする原因になりかねません。保有を続けるかどうかは、ご自身の取引時間軸、より大きな値動きの流れ、当初の売買計画を軸に判断し、TPM の変化だけを理由に売買しないことが大切です。
TPM は、上昇局面、押し目、もみ合いの中で、価格と出来高から読み取れる圧力がどう変化しているかを確認するのに役立ちます。高値・安値の位置関係や相場全体の状況と併せて判断してください。平滑化と確認処理には遅れが伴い、反応を速くする設定ではノイズが増えることがあります。スコアは確率ではなく、将来の値動きや取引の利益を保証するものではありません。
지표

Impulse Retention Map [MQLSoftware]OVERVIEW
Impulse Retention Map shows how much of a sharp price move remains after it forms. It automatically fixes the move's origin, halfway level and closing endpoint, then follows subsequent closes to distinguish a partial retracement, a full unwind and a recovery after a deep retracement.
The question is simple: has price kept the move, given half of it back, or returned all the way to its origin? No manual anchors, external signal source or volume feed are required.
DETECTION AND ORIGINAL CONTRIBUTION
The script measures a short close-to-close displacement. With the default settings, a qualifying impulse must satisfy all of these conditions:
1. The absolute change from the close three bars earlier to the current close is at least 2.0 times ATR, with a minimum size of two price ticks. The 20-bar ATR reading is taken at the origin bar, before the three subsequent price changes being measured. The move therefore does not increase its own volatility benchmark.
2. Path efficiency is at least 0.75: the absolute net change divided by the sum of the three absolute close-to-close changes. A reading of 1 means no closing-price retracement inside the window.
3. The final close is in the directional outer 30% of the impulse window's high-low range: near the high for an upward move or near the low for a downward move.
ATR scaling, path efficiency and halfway retracements are established concepts. The contribution here is their use in one automatic, frozen displacement episode: detection uses a pre-window volatility reference, the resulting map has fixed price boundaries, and the subsequent close-based events follow an explicit lifecycle. It measures a short move's retention rather than constructing pivot-based trend waves, projecting reversal targets or evaluating signals supplied by another indicator.
A map is admitted on the first qualifying bar of a fresh directional burst, subject to spacing of at least one impulse window since the previous admission. Consecutive qualifying bars in the same direction do not create repeated maps. A burst blocked by the spacing rule is not queued for later admission. A newly admitted map replaces any still-active previous map; replacement is not treated as a successful outcome.
READING THE MAP
The three fixed references are:
100% — the close at which the impulse was detected.
50% — halfway between that close and the origin.
0% — the closing price at the beginning of the measured move.
Move retained (%) = 100 x (evaluated close - origin) / (impulse close - origin).
The same formula works for upward and downward impulses. For an upward move from 100 to 110, a later close at 107 retains 70%; a close at 112 retains 120%. Values above 100% describe extension beyond the original move. Values below 0% mean price closed beyond the origin in the opposite direction. These percentages are price-distance measurements, not success rates or probabilities.
Teal identifies upward impulses and rose identifies downward impulses. The half between the impulse close and midpoint uses the direction colour; the half between midpoint and origin uses a quieter amber tint. These are measurement areas, not prescribed entry, stop or target zones.
The UP/DOWN label reports the initial move in units of its pre-impulse ATR. The status panel shows retained movement, the lowest retained reading observed on a confirmed close since detection, the original price distance, the initial ATR multiple and the number of bars tracked. When an episode finishes, the panel shows a final snapshot until a new map is admitted.
EVENTS AND LIFECYCLE
Subsequent evaluation starts on the bar after detection. The impulse's own formation bars cannot supply a later outcome.
HALF BACK — the first subsequent close retains 50% or less, but remains above 0%.
UNWOUND — a close retains 0% or less. Tracking ends. A direct jump through the origin is recorded as UNWOUND without inventing an earlier HALF BACK event.
RECOVERED — after a HALF BACK event, a later close reaches or exceeds 100% retention. Tracking ends. This does not mean the entire intervening path held above the halfway line.
EXPIRED — the tracking limit is reached without an earlier terminal outcome; 60 bars by default. An unwind or recovery on the final allowed bar takes precedence over expiry.
REPLACED — a fresh qualifying impulse is admitted while the earlier map is still active. The earlier map stops at that bar. Its final status is available in the original impulse label's tooltip and as an event in the Data Window. Expiry also has a Data Window event; neither creates a separate outcome label on the chart.
Between events, the panel can show NEW IMPULSE, HOLDING, EXTENDED, DEEP RETRACE or REBUILDING. REBUILDING means a map that previously returned at least half has moved back above 50% but has not yet recovered the full original move.
The old episode is evaluated before a new one is admitted. Consequently, an outcome for the old map and a new impulse can occur on the same closed bar.
CONFIRMED BARS AND DISPLAY CHANGES
Detection, retained readings, outcome flags and alerts update only on confirmed chart bars. The script uses no higher-timeframe requests, future-bar data, pivots or backward-shifted event markers. A map starts at the detection bar, although its origin price comes from the earlier close. It is not drawn across the formation window as if it had been known then.
The display does evolve: an active map extends to each newly confirmed bar; finishing a map dims its existing drawings and updates its tooltip; older maps and their outcome labels are removed as the retention limits are reached. The latest reference labels move with the chart's right edge. These presentation changes do not move the recorded event bars or change a map's fixed price boundaries. They also mean the final historical appearance is not a literal recording of how bright each zone looked at every earlier moment.
Changing inputs, symbol, timeframe, feed or available history recalculates the script. Provider corrections and price adjustments can change past input data. Closed-bar processing does not prevent those external changes.
SETTINGS AND ALERTS
Detection controls the impulse window, minimum ATR-scaled move, minimum path efficiency, ATR baseline length and tracking duration. Defaults are 3 bars, 2.0 ATR, 0.75 efficiency, 20-bar ATR and a 60-bar tracking limit. The directional closing-location filter stays fixed at 70%.
Display controls how many maps remain visible (six by default), outcome labels, the status panel and its position, latest-map reference labels, and colours. Display settings do not alter detection or outcomes. The panel distinguishes initial warmup, unavailable price data, a flat price range and waiting for a qualifying move when no map has yet been created.
Five alert conditions are available: new up impulse, new down impulse, half of impulse returned, impulse fully unwound, and impulse recovered. Create the desired TradingView alert and select Once Per Bar Close. Alerts must be configured by the user; adding the indicator does not create them automatically.
USE AND LIMITATIONS
Add the indicator to a standard candlestick chart and read the latest fixed references alongside the panel. Higher movement or efficiency thresholds generally select fewer impulses. The parameters are heuristic filters, not optimized probabilities. The tool can use price data across crypto, forex, indices and stocks; it does not require traded or tick volume.
Only closes resolve the tracked outcomes. A wick through halfway or origin that closes back beyond it does not establish the corresponding close-based event. Session gaps are included in close-to-close displacement and can qualify as impulses. The script does not reconstruct intrabar order, identify participants, estimate order flow or distinguish a session gap from continuously traded movement.
Only one episode is active at a time. New impulses can replace unresolved ones, so the displayed map history is not a complete sample of every possible retracement. No aggregate win rate, trading expectancy, order fills, fees, slippage or profitability backtest is calculated. Synthetic chart types produce measurements of synthetic prices and should not be interpreted as execution-price evidence.
This is a descriptive chart-analysis tool, not a prediction of recovery or a recommendation to enter or exit a position. 지표

지표

Structure-Anchored VWAP [WillyAlgoTrader]📐 Structure-Anchored VWAP is an overlay indicator that anchors a true volume-weighted average price to market structure and re-anchors it automatically at every confirmed swing pivot, structure break, fast extreme, or one manual date — combining a pivot-based structure engine, an O(1) prefix-sum VWAP core, volume-weighted sigma bands, a retest entry model with ATR risk management, and a sectioned dashboard with session statistics.
The core insight: a VWAP anchored to the start of the current structural leg tells you the average price at which volume actually changed hands since this move began. That is the level participants in this leg are collectively break-even at. Session VWAP resets at midnight and ignores structure. Manual anchored VWAP requires you to drag it and re-drag it. This indicator keeps the anchor synchronised with the structure itself, and measures how stretched price is from that anchor in the leg's own volume-weighted standard deviations rather than in generic ATR units.
It works on any market and any timeframe. On instruments with no volume feed it falls back to time weighting automatically and says so in the dashboard.
🧩 WHY THESE COMPONENTS WORK TOGETHER
A VWAP alone has no memory of structure — it does not know whether the market is making higher highs or lower lows, so it cannot know when its own anchor has gone stale. A structure detector alone tells you HH / HL / LH / LL but gives you no price level to trade against. Deviation bands built on ATR describe candle size, not participation, so they say nothing about where volume was actually transacted. And an entry signal without a fixed stop and target is not a trade, it is an opinion.
This indicator connects all four into one chain:
Pivot structure engine → anchor selection → prefix-sum anchored VWAP → volume-weighted sigma bands → retest detection → ATR risk model → session statistics
The structure engine finds confirmed swing highs and lows, filters them by ATR amplitude and enforces strict high/low alternation, so every anchor is a real structural turn rather than a passing wick. Anchor selection decides which of those turns starts a new leg, with four different policies for four trading styles. The prefix-sum core then computes the anchored VWAP for that leg — and because it also accumulates the sum of squared prices, the same pass produces the leg's own volume-weighted standard deviation, so the bands are derived from the same data as the line instead of being bolted on. The retest engine watches the distance between price and that line, requires price to leave and come back, and only then produces an entry. The risk model turns the entry into a fixed stop and three targets, and the statistics layer records what happened to each of them.
Remove any link and the chain stops working. Without structure anchoring, the VWAP measures a leg that ended days ago. Without the ATR amplitude filter, every minor wick creates a new anchor and the line resets constantly. Without the sigma bands, "far from VWAP" has no unit. Without the retest rule, every touch of the line is a signal, including the fifty touches that happen while price is glued to it. Without the risk layer, you know where to enter but not where you are wrong.
🔍 WHAT MAKES IT ORIGINAL
1️⃣ Prefix-sum VWAP core — any anchor evaluated in O(1), including a decayed one.
Three running totals are maintained on every bar, where p is the price source and w is the bar weight:
— S_w(t) = lam × S_w(t−1) + w(t)
— S_pw(t) = lam × S_pw(t−1) + p(t) × w(t)
— S_p2(t) = lam × S_p2(t−1) + p(t)² × w(t)
The sum over any leg is then recovered without looping:
— sum = S(t) − lam^(t−a+1) × S(a−1)
With lam = 1 this is an exact cumulative anchored VWAP — every bar of the leg keeps its full weight, the same quantity the built-in Anchored VWAP tool computes. With lam < 1 the same identity still holds, which is what makes the optional Half-life mode possible without a second engine.
Why this matters: re-anchoring becomes cheap. Moving the anchor does not require replaying the whole leg bar by bar, so the indicator can afford four anchor modes and legs up to 4000 bars long without a performance penalty.
2️⃣ Volume-weighted sigma bands — dispersion of the leg, not size of the candle.
Because the squared-price sum is already accumulated, the leg's variance comes out of the same pass:
— VWAP = sum_pw / sum_w
— sigma = sqrt( max( sum_p2 / sum_w − VWAP², 0 ) )
Bands are drawn at VWAP ± multiplier × sigma. Band 1 defaults to 0.5 sigma (the value-area edge of this leg), Band 2 to 2.0 sigma and is off by default.
Why this matters: an ATR band tells you how big recent candles were. A volume-weighted sigma band tells you how widely the volume of this specific leg was distributed around its own average price. Two markets with identical ATR but different participation profiles get different bands, and the "Premium / Fair value / Discount" classification in the dashboard becomes comparable across instruments.
3️⃣ Four anchor modes — one engine, four trading styles.
— Swing (default): a new leg starts at every confirmed pivot. The anchor is the opposite extreme, so a bullish leg is anchored at the swing low that preceded it.
— Structure break : a new leg starts only when price closes beyond the previous swing. The anchor is then the extreme that preceded the break, found by scanning back from that swing. Fewer legs, each tied to an actual break of structure.
— Fast : no confirmation delay. The bar printing the highest high or lowest low of the last N bars (default 30) is treated as a new extreme, and the leg flips the moment an extreme opposite to the previous one appears. When a bar prints both a new high and a new low, the candle direction decides which one is taken.
— Manual : a single leg from a chosen date and time, which reproduces the behaviour of the built-in Anchored VWAP tool inside the same framework — useful for comparing against a manual anchor or pinning a level.
4️⃣ Structure engine with ATR amplitude filter and strict alternation.
Pivots come from equal left/right lookback (default 55/55). A new pivot of the opposite type is only accepted when it clears an ATR-scaled amplitude:
— accept a new high when: pivotHigh − lastSwingLow ≥ minSwing × ATR(atrLen)
— accept a new low when: lastSwingHigh − pivotLow ≥ minSwing × ATR(atrLen)
Default minSwing 1.5, ATR length 13. A pivot of the same type as the last one does not create a new structural point — it only supersedes the previous extreme if it is more extreme. This enforces a clean alternating high-low-high-low sequence instead of clusters of adjacent highs.
Classification against the previous extreme of the same type, with an equality tolerance (default 0.1 × ATR):
— |current − previous| ≤ eqTol × ATR → EQH or EQL
— current > previous → HH or HL
— current < previous → LH or LL
5️⃣ Retest entry model — price must leave before it can come back.
Every bar the engine measures the relationship between the bar range and the anchored VWAP:
— tol = sigma × touchTolerance (default 0.25), or ATR × 0.1 while sigma is still zero
— touch = low ≤ VWAP + tol and high ≥ VWAP − tol
— outside = bullish leg ? low > VWAP + tol : high < VWAP − tol
An "away" counter increments on every outside bar and resets to zero on every touch. A retest fires only when a touch happens while the committed away counter has already reached the threshold (default 5 bars).
Why this matters: a raw "price touched VWAP" condition fires continuously in the chop that surrounds every mean. Requiring a genuine departure first converts an omnipresent condition into a discrete, countable event.
6️⃣ Volume balance — who controlled this leg.
While the leg accumulates, every bar's weight is assigned to one of two buckets by where it closed relative to the VWAP at that moment:
— close ≥ VWAP → volUp += w
— close < VWAP → volDn += w
— balance = volUp / (volUp + volDn) × 100
The dashboard shows this as a percentage with a bar gauge, and relabels it "Bars above VWAP" automatically when the instrument has no volume data. Above 50 % means most of the leg's participation happened above its own average price.
7️⃣ Signal strength — a transparent 0-100 context score.
Four independent components, published in full so the number is auditable rather than a black box:
— 40 pts × (volume balance aligned with leg direction, 0..1). For a bearish leg the balance is inverted before scoring.
— 25 pts if price sits on the leg's own side of the VWAP.
— 20 pts if price is not stretched beyond Band 2, i.e. |distance in sigma| ≤ band 2 multiplier.
— 15 pts if the leg has already produced at least one retest.
The score is clamped to 100 and shown with a gauge. This is a context filter, not a proven edge — it says how coherent the current leg is, nothing more.
8️⃣ VWAP memory levels — dead legs leave a level behind.
When a leg ends on a genuine direction flip, its final VWAP value is written to the chart as a dashed horizontal line. That line extends forward until price trades through it, then it is either removed or faded to dotted, depending on a setting. Up to four such levels are kept (configurable), and the newest push out the oldest.
When a level is created, the bars between the anchor and the current bar are scanned first, so a level that was already traded through is never shown as untouched.
9️⃣ Single-position trade model with break-even and outcome tracking.
A retest signal opens a trade only while flat — signals never stack. On entry, the levels are fixed once and never recalculated:
— slDistance = ATR(riskAtrLen) × slMultiplier
— long: SL = entry − slDistance, TP(n) = entry + slDistance × tpMult(n)
— short: SL = entry + slDistance, TP(n) = entry − slDistance × tpMult(n)
Presets set all four multipliers at once — Conservative 2.5 / 1R / 2R / 4R, Balanced 1.5 / 1R / 2R / 3R, Aggressive 1.0 / 1.5R / 2.5R / 4R, Scalping 0.8 / 0.8R / 1.5R / 2R, or Custom.
Break-even is optional and on by default: the first touch of TP1 moves the stop to the entry price, the entry label changes to show it now acts as the stop, and the stop line dims. TP1 still counts as a win. Hit checks begin only on the bar after entry and only on confirmed bars, so the entry bar's own range cannot close the trade it just opened.
🔟 Persistent trade forensics — the chart keeps the last result.
SL and TP lines are not deleted when the trade closes. They stay until the next entry, so the last trade remains readable on the chart: any target that was reached is redrawn as a solid teal line and its label gets a check mark, while untouched targets keep their original dashed style. Labels can show the distance from entry in percent, for example "SL 78120.5 (-0.36%)".
1️⃣1️⃣ Realtime correctness — ring buffers and a commit/undo pattern.
Functions that only run on some bars cannot use the history operator safely, because the history they see is sparse and does not correspond to chart bars. All per-bar values this indicator needs later are therefore written to explicit ring buffers on every single bar, and read back by index.
On top of that, the live leg uses a commit/undo pattern: statistics are always recomputed from the last confirmed state, and the provisional point for the forming bar is popped before a new one is pushed. A bar being formed can therefore never be counted twice, no matter how many ticks arrive.
1️⃣2️⃣ Continuous curve across anchor changes.
When a new anchor appears, the previous leg is not erased — it is cut exactly at the new anchor bar and frozen. The curve therefore has no gaps at handover points, including the case where a stronger extreme of the same type supersedes the previous one.
⚙️ HOW IT WORKS — CALCULATION FLOW
Step 1 — Structure: On each confirmed bar the engine evaluates pivot highs and lows with equal left/right lookback, applies the ATR amplitude filter, enforces high/low alternation and classifies the result as HH, HL, LH, LL, EQH or EQL.
Step 2 — Weighting: The bar weight is volume, or 1.0 when the instrument has no volume. If spike clamping is on, the weight is capped at N × the 50-bar median volume so a single print cannot dominate the average.
Step 3 — Accumulation: The three running totals of weight, price × weight and price² × weight are advanced, decayed by lam if Half-life weighting is selected.
Step 4 — Buffering: The totals plus high, low, close and ATR are appended to ring buffers, one entry per bar, with the current bar's provisional entry overwritten rather than duplicated on repeat ticks.
Step 5 — Anchor decision: The active anchor mode decides whether this bar starts a new leg and where that leg's anchor sits.
Step 6 — Leg build: On a new anchor the previous leg is trimmed to the anchor bar, frozen and archived, a memory level is created if the direction actually flipped, and the new leg is replayed once from the anchor to the current bar. On every other bar the live leg simply advances by one point.
Step 7 — Readouts: VWAP, sigma, distance in sigma and percent, zone, volume balance, leg age and the strength score are computed for the current bar.
Step 8 — Signal: The retest rule is evaluated. A qualifying retest, on a confirmed and warmed-up bar, while flat, becomes an entry.
Step 9 — Risk: On entry the stop and three targets are fixed. On later confirmed bars they are tested for hits, break-even is applied after TP1, and the trade is closed by stop or final target.
Step 10 — Reporting: Lines, labels, markers, the dashboard and alerts are updated. Closed trades update the win/loss counters and the form strip.
📖 HOW TO USE
🎯 Quick start:
1. Add the indicator. Defaults are tuned for 15m to 4H swing structure.
2. Watch the coloured curve — it is the anchored VWAP of the leg the market is currently in.
3. Wait for a Long ▲ or Short ▼ marker. That is a retest of the VWAP in the direction of the leg.
4. Read the Trade section of the dashboard for the stop, the three targets and the R:R.
5. If signals are too frequent, raise "Bars away before a retest counts". If legs are too frequent, raise pivot strength or the minimum swing size.
👁️ Reading the chart:
— 🟢 Green curve = bullish leg, anchored at the swing low that started it.
— 🔴 Red curve = bearish leg, anchored at the swing high that started it.
— Shaded band around the curve = ± sigma of this leg. Price inside it is at fair value for the leg.
— 🟢 Long ▲ / 🔴 Short ▼ marker = a retest entry was taken on that bar.
— Dotted blue line = entry. Solid red line = stop. Dashed green lines = TP1, TP2, TP3.
— A target that turns solid teal with a ✓ in its label was reached.
— An orange entry label reading "→ SL (BE)" means the stop has been moved to break-even.
— Dashed horizontal level far from the curve = a memory level, the final VWAP of a finished leg.
— HH / HL / LH / LL / EQH / EQL tags mark every confirmed pivot.
📊 Dashboard fields:
— Trend : direction of the current leg.
— Signal : LONG, SHORT or Wait. A new trade can only open while flat.
— Strength : the 0-100 context score with a gauge.
— Last event : the most recent new leg or retest.
— Timeframe : the chart resolution.
— Mode : active anchor mode and weighting, plus a note when the symbol has no volume.
— Anchor : structure tag and price of the bar the leg is anchored to.
— Leg age : bars since the anchor and the price move from it.
— VWAP : the anchored VWAP on the current bar.
— Price vs VWAP : distance in sigma and in percent.
— Zone : Premium above Band 2, Discount below it, Fair value in between.
— Vol above VWAP : share of the leg's weight transacted above the VWAP, with a gauge.
— SL / TP1 / TP2 / TP3 : the fixed levels of the open trade. A ✓ marks a reached target, "BE @" marks a stop moved to entry.
— R:R (TP1) and SL Dist % : reward-to-risk at the first target and the stop distance as a percentage of entry.
— Trades / W / L / Win rate / Form : closed trades in the loaded history, the win-loss split, the win rate with a gauge and the last ten outcomes as ▰ and ▱.
🔧 Tuning guide:
— Too many legs, the line resets constantly: raise pivot strength (55/55 → 80/80) or the minimum swing size (1.5 → 3.0).
— Legs appear too late: lower pivot strength, or switch the anchor mode to Fast for immediate flips.
— Too many entries: raise "Bars away before a retest counts" and lower the touch tolerance.
— The line drifts too far from price on long legs: switch Weighting to Half-life. This is no longer a textbook VWAP, and the dashboard says so.
— Comparing against the built-in Anchored VWAP tool: set the mode to Manual with the same anchor time, price source to hl2, weighting to Cumulative, and turn volume clamping off.
— Stops feel too tight or too wide: change the Risk Preset before touching individual multipliers.
⚙️ KEY SETTINGS
⚙️ Main Settings:
— Pivot strength left / right (default 55 / 55): bars required on each side of a swing. Right is the confirmation delay.
— Minimum swing size (default 1.5 × ATR): amplitude filter for new pivots. 0 disables it.
— ATR Length (default 13): ATR used by the swing filter and the equality tolerance.
— Re-anchor on (default Swing): Swing, Structure break, Fast or Manual.
— Fast mode: extreme lookback (default 30): lookback for the Fast mode only.
— Equal high/low tolerance (default 0.1 × ATR): threshold for EQH and EQL tags.
— Manual anchor : date and time for the Manual mode, shown in the chart's timezone.
📐 Anchored VWAP:
— Price source (default hl2): hl2 matches the built-in tool, hlc3 weights closes more, close is the most reactive.
— Weighting (default Cumulative): Cumulative is a true VWAP, Half-life fades older bars.
— Half-life (default 21 bars): only used by Half-life weighting.
— Clamp volume spikes (default on, 4 × median): caps outlier volume bars.
— Max leg length (default 4000 bars): keeps very old anchors bounded.
📏 Deviation Bands:
— Band 1 (default on, 0.5 sigma): inner band.
— Band 2 (default off, 2.0 sigma): outer band, also defines the Premium and Discount zones.
— Fill transparency (default 90).
🎯 Signals & Levels:
— Bars away before a retest counts (default 5).
— Touch tolerance (default 0.25 sigma).
— VWAP memory levels (default on, max 4, crossed levels removed).
🛡️ Risk Management:
— Risk Preset (default Balanced): Conservative, Balanced, Aggressive, Scalping or Custom.
— ATR Length (SL) (default 13).
— SL ×ATR / TP1 / TP2 / TP3 ×Risk (defaults 1.5 / 1.0 / 2.0 / 3.0): used by the Custom preset.
— Break-Even After TP1 (default on).
— Show SL/TP Lines, Labels, % Distance (all on by default).
— Entry / SL / TP Line Style (defaults Dotted / Solid / Dashed).
🎨 Visual:
— Theme (default Auto): Auto detects the chart background, Dark and Light force it.
— Show Buy/Sell Signals, HH/HL/LH/LL, Leg Background, Watermark .
— SL/TP Label Font Size (default Small).
— Finished legs kept on chart (default 30).
📊 Dashboard:
— Position (default Top Right) and four independent section switches: Market, VWAP, Trade, Stats.
🔔 ALERTS
— 🟢 LONG — VWAP retest entry, with price, VWAP, SL, TP1, TP2, TP3 and R:R
— 🔴 SHORT — same payload, short side
— 🛑 SL HIT — entry and stop price. Reported as 🛡️ BE STOP-OUT when the stop had already been moved to break-even
— 🛡️ BREAK-EVEN — stop moved to entry after TP1 (optional)
— 🎯 TP1 HIT, 🎯🎯 TP2 HIT, 🏆 TP3 HIT — first touch of each target (optional)
— 🟢 New bullish leg / 🔴 New bearish leg — a new anchor was set (optional)
— 🔵 Close above VWAP / 🔵 Close below VWAP — the close crossed the anchored VWAP (optional)
Entry alerts support both plain text and a JSON webhook payload. All alerts fire on bar close.
⚠️ IMPORTANT NOTES
— 🚫 No repainting of confirmed values. Every structure event, entry, stop, target and alert is evaluated only when barstate.isconfirmed is true. Pivots use equal left and right lookback, so the swing point is in the past by the "right" value at the moment it becomes known — that is delayed confirmation, not a look into the future. Stop and target hits are tested only from the bar after entry. Alerts fire once per bar close.
— 📐 What does update intrabar. The VWAP value of the leg currently in progress moves while the bar is forming, because that is what an anchored average does. Values on closed bars never change. A commit/undo pattern makes sure a forming bar is never counted twice in the statistics.
— 📐 The unfinished leg can be shortened. When a stronger extreme of the same type is confirmed, the current leg is cut at that point and a new leg starts there. Legs that have already been archived are never modified.
— 📊 The statistics are not a backtest. Trades, win rate and the form strip are counted over the history currently loaded on the chart and reset when the chart reloads or a setting changes. They describe how this rule set behaved on the visible data. Past performance does not guarantee future results.
— 🧮 The strength score is a context filter. Its four components and weights are published above precisely so it can be judged on its merits. It measures the internal coherence of the current leg, not the probability of any outcome.
— ⚖️ Half-life weighting is not a VWAP. When that mode is selected the line is an exponentially weighted average, useful on instruments without volume, but it is no longer the textbook volume-weighted average price. The dashboard states the active mode at all times.
— 🌐 Universal compatibility. Works on stocks, futures, forex, crypto and indices, on every timeframe. Where no volume data exists the weighting falls back to time and the dashboard relabels the volume-balance row accordingly.
— 🛠️ Decision support, not automation. This is an anchored VWAP and structure analysis tool with a risk framework attached. It marks anchors, measures distance in the leg's own units, detects retests and lays out stops and targets — trade decisions remain yours. 지표

DCA HelperDisciplines your DCA strategy by splitting your buy zone into N pre-calculated levels. Triggers buy signals only when price touches a level within the discount zone.
How it works:
The indicator automatically divides the discount zone (bottom 20% of a 50-bar range) into N equal parts. Each part is a potential DCA entry (L1, L2, ..., LN). Signals fire ONLY when price touches a specific level — never in "no man's land" between levels.
Entry filters (all must pass):
Price below both MA(50) AND MA(200) → double trend confirmation
RSI(14) below 35 → oversold filter
Price within bottom 20% of range (discount zone)
Price sustained in discount for 3 consecutive bars (anti-spike)
20-bar cooldown between signals
Within 0.5% of a level (no in-between triggers)
Chart visualization:
🟩 Light green box = discount zone (where levels operate)
🟦 Blue dashed box = full high/low range (context)
➕ White dotted line = 50% equilibrium level
🟧 Orange line = average DCA price
🔷 Green "DCA" diamond below bar = each executed level
🟢➖🟢 Horizontal green lines = the N levels, labeled L1 price (% vs current), L2 ..., etc.
Level color: more intense the deeper (better price)
Info table (top-right):
Now: current price
Avg: current average + # buys/N
Complete: average if ALL N levels fill (ideal position avg)
L1, L2, ..., LN: each level price + % vs current, colored by risk:
🟢 Green = close (entry ready)
🟠 Orange = medium
🔴 Red = far below (better discount but more waiting)
Configurable inputs:
DCA levels (1-10) — number of staggered buys
Trigger proximity to level (%) — max distance for level trigger
Filter MA length (fast/slow)
RSI buy level
Range lookback
Discount threshold
Sustained bars
Min bars between signals
How to use for real DCA:
1.
Check the "Complete" row in the table → that's your avg if you split position across N levels
2.
Decide total size (e.g., $10k) and divide into N parts
3.
Set alerts on "DCA" diamonds for each level
4.
Buy the corresponding part when each level triggers 지표

Balanced Price Range (M1D)Balanced Price Range
Marks one thing and refuses to mark anything else: the band of untraded price left where two opposing fair value gaps overlap, when price displaced straight back through the first gap without ever testing it. If the gap was tested first, no zone is drawn — that is an inversion, and it is a different event.
Most tools that draw a balanced price range take any bullish gap and any bearish gap, intersect them, and paint the overlap. That also fires on inversions, because an inverted gap and a fresh opposing gap produce the same geometry. This one starts from what happened at the first gap and works forward, so the two are never confused.
What separates a BPR from an inversion
A fair value gap is read over three candles and has to clear a minimum size in ticks to be watched at all. Once it is being watched, the first candle to reach its consequent encroachment decides everything, and there are only three outcomes.
The candle reaches the midpoint and closes on the respecting side of it, or closes inside the gap: the gap has been tested. It held, or price accepted inside it, and either way something happened there. It is dropped from this tool for good and can never produce a zone.
The candle reaches the midpoint and, on that same candle, closes its body clean past the far edge: no test. Nothing ever held inside it. The gap was transited in one move, and it stays in play.
The candle trades into the gap but never reaches the midpoint, then closes back outside: a probe. Nothing was proven at the midpoint, so the gap stays in play — but the wick counts, and the section on the drawn zone explains what it does.
That first distinction is the whole indicator. A tested gap that later fails is an inversion; an untested gap that is displaced straight through is what this draws.
The pivot is the window
Two opposing gaps that merely overlap are not a balanced price range. The formation is a tight swing — an inverted V or U for a bearish zone, a V or U for a bullish one — and the displacement back begins as the swing completes.
So a pivot has to sit between the gap forming and the gap being broken, and the break has to follow that pivot closely. Both are settings: the pivot length, where three candles give the sharp V and five the rounded U, and the number of bars the close-through may lag the pivot. A gap that drifts sideways for a dozen bars before finally reversing has a pivot in it somewhere too, and it is not this formation.
There is no separate shape filter, and that is deliberate rather than an omission. A fair value gap is by definition a leg that moved faster than two-sided trade could occur, so two opposing gaps with a pivot between them and no test in between already describe the V. Adding a shape test on top of that would reject valid formations without catching anything the existing conditions miss.
The same fact explains the tool's behaviour: these are uncommon on high timeframes and get more frequent as you drop down, because the speed requirement is harder to satisfy the more time a candle covers.
The zone is the untraded air, not the intersection
The overlap of the two gaps is only the candidate band. What gets drawn is the part of it with no wick lying in it.
If a wick from the bars between the two gaps reaches into the candidate band, that part has been traded and is removed, and the wick's own extreme becomes the edge of the zone. A wick taking a third of the band leaves two thirds drawn. A wick clean through it leaves nothing, and no zone appears.
Only the bars strictly between the first gap completing and the candle that broke it can trim. The breaking candle transits the whole band by definition and the second gap's own candles are the displacement, so counting either would erase every zone.
The box still starts at the candle that formed the first gap, so it stays attached to its origin rather than floating in mid-chart at the wick that trimmed it, and it runs to the live candle the way a breaker or an inversion does. A minimum size in ticks applies after the trim, so a band cut down to almost nothing does not paint.
Polarity follows the newer gap. The most recent displacement is the one describing how the market is currently delivering, so a bullish gap broken downward produces a bearish zone, and the reverse for a bullish one.
Midpoint and labels
Each zone can carry its consequent encroachment — the midpoint of the drawn band, taken after the trim rather than from the raw overlap. A range has an equilibrium; a price delivery array has a consequent encroachment, and they are not the same object.
Names sit beside the box on its centre line, just past the right edge, so a name stays readable when its zone is only a few pixels tall and never crosses the midpoint line.
The two parent gaps can be shown faintly behind the zone. It is off by default: the trimmed band is the point of the tool, and drawing both parents puts back the clutter it exists to remove.
Invalidation
A zone is spent when a candle body closes clean beyond its far edge against its direction. On the default setting it is removed, the same rule this stack applies to any spent inventory. It can instead be faded and kept, which holds the record of where delivery already happened.
Live zones are capped per side, oldest removed first, so a long session cannot fill the chart.
The console
A small table, verdict first: whether there is support, resistance, both or nothing live. Under it, the count on each side, and a respected count.
Respected means price returned into the zone and has not closed through it. It is counted only across what is currently drawn, so the number always describes the boxes in front of you rather than a hidden history, and an invalidated zone leaves the count together with its box. A watching row shows how many untested gaps are still able to become a zone.
Every row carries its rule in the cell tooltip.
Alerts
Four. Bullish zone formed, bearish zone formed, and first touch on each side. The formation alerts fire on the close that completes the second gap; the touch alerts fire the first time price returns into a drawn zone.
Method and repainting
Everything is read from the chart timeframe. There are no higher-timeframe requests anywhere in the script, so there is no lookahead to configure wrongly and no future data to leak.
Every detection is gated to a confirmed bar close. The test call, the break, the second gap and the invalidation are all judged on closed candles, so nothing appears mid-bar and then withdraws.
One characteristic is inherent to pivots and worth stating plainly rather than leaving to be discovered: a swing is only confirmed once the bars to its right have printed. On the three-candle setting that is one bar, on five it is two. A zone therefore confirms a bar or two after the move that created it. That is lag, not repainting — nothing moves once drawn.
Zones and midpoint lines extend rightward to the current bar while they are live. That is the box tracking the present, not its history changing.
What it will not do
It places no entries, exits, stops or targets, and it does not size a position. It draws no bias, no trend and no projection.
It does not read structure beyond the pivots it uses, and it does not label market phases. Whether a drawn zone is worth trading is a judgement about context this script does not have — the session, the higher-timeframe draw, and what the day has already done.
A gap that gets tested draws nothing. Two opposing gaps overlapping without a pivot between them draw nothing. A candidate band that a wick has already run through draws nothing. Only the finished sequence produces a zone, so an empty chart through a slow session is the tool working rather than failing.
Settings
Pivot length; minimum parent gap in ticks; minimum zone size after the wick trim; maximum bars from the pivot to the close-through; maximum bars from the break to the opposing gap; the per-side cap on live zones; behaviour on invalidation, remove or fade and keep; the consequent encroachment midline; the parent gaps behind the zone; how far right the drawings extend past the live candle; the console; and label text size.
Disclaimer
This is a decision-support tool for discretionary ICT trading. It is not financial advice, and no market's past behaviour is indicative of future results. 지표

Range Budget - Anchored Extension and Daily Range Exhaustion============================================================
DESCRIPTION
============================================================
Range Budget measures how much of a typical daily range has
already been delivered, and how far the current directional
leg has travelled, so that a level can be assessed on distance
as well as location.
The problem it addresses is a common one in level-based
trading. A level is identified in advance, price arrives, and
the setup is taken without accounting for how far price
travelled to get there. A level reached after a move that has
already covered a full day's range is a materially different
proposition from the same level reached after a quiet drift,
even though the level itself is identical. This script
quantifies that difference.
WHAT IT CALCULATES
Anchor and extension
The anchor is a chosen session open: the CME open at 18:00,
midnight, 08:30, or the regular session open at 09:30, all in
the selected timezone. The anchor is detected by tracking
minutes elapsed since the anchor time with wraparound across
midnight; a decrease in that value marks a new anchor period.
An optional gap check re-anchors at the Sunday reopen rather
than carrying the prior Friday value through the weekend.
Extension is the signed distance in points from the anchor
open to the current close. Session high and session low are
tracked from the anchor forward.
Leg travel
Up leg is the distance from the session low to the current
close. Down leg is the distance from the session high to the
current close. These are reported separately from extension
because extension understates a move that opened, reversed,
and then ran. A session that opens, falls forty points and
rallies eighty shows an extension of plus forty while the leg
being entered is eighty points old. The two readings answer
different questions: extension describes location relative to
the open, leg travel describes how much of the current move
has already occurred.
Daily range statistic
The denominator is a trailing statistic of daily high minus
low, taken from completed daily bars only. A one-bar offset is
applied inside the higher timeframe request so the forming day
is excluded from its own benchmark. The statistic is constant
intraday by construction.
Three methods are available. The default is the median rather
than the mean. Daily range distributions are right skewed and
a single outlier session, or a holiday half-day, shifts a mean
for the entire length of the window while barely moving a
median. Mean and exponential options are provided for users
who prefer them.
Range basis can be set to the full exchange day or to the
regular session only, which changes both the statistic and the
current day measurement consistently.
Budget and projections
Budget is today's realised daily range expressed as a
percentage of the denominator, displayed as a ten segment
gauge. Projections are drawn at the day low plus the
denominator and the day high minus the denominator. Room
reports the distance in points from current price to each
projection. This formulation is used in preference to
projecting symmetrically from the open because it accounts for
what the session has already delivered rather than assuming
the open sits at the centre of the eventual range.
Regime ratio
A rolling median range over a short window is divided by the
same statistic over the long window. Volatility expands far
faster than a fixed lookback adapts, so on the first day of a
changed environment the long window is still describing the
previous one. The ratio detects that condition immediately
rather than after the window has turned over. Values above the
expansion threshold indicate the short window is the more
representative reading.
State
The state row combines budget and regime. Budget beyond one
hundred percent is ambiguous in isolation: it can mean the day
is finished, or it can mean the denominator is stale. When
budget exceeds the exhaustion threshold and the regime ratio
is simultaneously elevated, the state reports expansion rather
than exhaustion, because the appropriate reading in that case
is a trending environment rather than a completed one.
Pullback levels
Optional retracement levels are drawn at configurable
percentages of the leg delivered since the anchor, measured
back from the extreme in the direction of travel.
WHAT IT DRAWS
A vertical line marking the anchor boundary, with a
configurable number of prior boundaries retained as session
separators.
A horizontal line at the anchor open, plus dotted session high
and low lines, each labelled with price and points from the
open. These are drawn for the current anchor period only and
are rebuilt at each new anchor, so historical periods do not
accumulate on the chart.
Three compact daily candles to the right of the last bar
showing the forming day and the two prior days. They are drawn
at true price levels, so they also serve as visual references
for the previous day high, low and close. The forming day
carries a dashed border and updates live.
Optional projection and retracement lines, both off by
default.
A panel reporting anchor open, extension, session range, up
and down leg with their share of the denominator, the budget
gauge, room to each projection, the denominator with its
method and window stated, the regime ratio, and the state.
Leg cells are colour graded against the exhaustion thresholds.
SETTINGS NOTES
Three separate lookback windows are used and they drive
different things. The slow window drives the denominator, the
gauge, the projections and room. The fast window drives only
the regime ratio. The context window drives only the minimum,
maximum and quartile rows, where responsiveness does not
matter.
A manual denominator override is provided. It exists for the
first session after a clear regime break, when the operator
knows the environment has changed and the window has not yet
caught up.
READING IT
The leg readings graded against the denominator are the
primary output. A leg at or beyond one hundred percent means a
full typical day's range has been delivered in one direction.
Room reports whether a target has space remaining even if the
directional read is correct.
The denominator is a range statistic, not a displacement
statistic. It describes the height of the envelope a session
typically builds, not how far price travels within it, and net
close to close movement is normally much smaller. A setup
requiring a large fraction of the typical envelope in a single
directional leg is an expansion day proposition rather than a
normal day proposition.
LIMITATIONS
This is a context readout. It produces no entries, no
directional bias and no filtering output, and it is not
intended to confirm or reject a setup on its own.
Leg readings measure distance, not recency or velocity. A leg
reset occurs whenever a new session extreme is made, so a leg
built slowly overnight and a leg built rapidly in the last
half hour produce identical readings.
No time of day weighting is applied. A given percentage of
range consumed early in a session and the same percentage late
in a session are not equivalent situations, and the script
does not currently distinguish them.
The denominator lags a genuine volatility regime change by at
least one session. The regime ratio shortens that lag but does
not eliminate it.
Compact daily candles are drawn at true price levels, so on a
strongly zoomed intraday chart the prior days may fall outside
the visible price scale. 지표

지표

Macro Risk Sentinel🛡️ Macro Risk Sentinel: Smart Crash Detector & Trend Filter
The Macro Risk Sentinel is a powerful risk management tool built to protect your trading from sudden market dumps. Instead of relying on lagging price indicators, this script looks under the hood of the market—tracking hidden credit health and volatility data—to spot panic before it destroys your chart.
Whether you trade manually or run automated algorithmic swing trading strategies, the Sentinel acts as a safety switch.
⚙️ How It Works: The "Smart Recovery" System
Most crash indicators lock you out of the market for way too long, making you miss the most profitable part of the rebound. We fixed this with our built-in Smart Recovery logic.
🔴 Red Zone (Lockdown): Real market panic detected. The indicator turns your chart background red, signaling a strict "Risk-Off" state. It's time to cut longs or pause your trading bots.
🟡 Yellow Zone (Caution): Early warning signs. The market is getting choppy. This is your cue to tighten stop-losses and reduce position sizes.
🚀 Smart Unlock: The game-changer. While in a lockdown, the Sentinel constantly monitors the market in the background. As soon as volatility drops and a healthy price trend begins, it fires a "Smart Unlock" signal. You get the green light to jump back in exactly as the new uptrend starts, without waiting for a blind timer to run out.
✨ Key Features
Under-the-Hood Data: Driven by real market stress metrics (Volatility and High-Yield Credit ratios), not just simple moving averages.
100% Backtest Safe (No Repaint): Built with strict causal logic and zero lookahead bias. What you see on historical bars is exactly what would have printed live, making it perfectly safe to build automated strategies around.
Clean Live Dashboard: A simple, non-intrusive panel on your chart shows the current market state, the recovery conditions, and the lockdown countdown at a glance.
Visual Clarity: Intuitive background colorings and clear chart markers (Crash ⛔, Smart Recovery 🚀) so you never have to second-guess the market environment.
Fully Customizable: Easily tweak the trigger thresholds and lockdown duration to match your specific trading style and risk tolerance.
🎯 Perfect For:
Algorithmic traders who need a "kill switch" for their automated systems.
Swing traders tired of getting caught and holding bags during sudden market crashes.
Systematic traders looking to automate their risk-on/risk-off rules based on hard data. 지표

DAO GAM Reversal StructureBX Reversal Structure - Adaptive Top and Bottom is a market-structure indicator designed to identify potential horizontal reversal structures formed by two significant swing areas, referred to as A and B.
The indicator analyzes both top structures and bottom structures.
For a top structure, the script looks for an upward price phase followed by a meaningful rejection. It uses the high and close of the final bullish anchor candle to define a price zone around the swing high.
For a bottom structure, the logic is reversed. The script looks for a downward price phase followed by a meaningful recovery and uses the low and close of the final bearish anchor candle to define the swing-low zone.
When two valid zones, A and B, share an overlapping price area, the script attempts to determine a horizontal reference level called X.
The X level is selected so that it remains within the common price area of A and B while avoiding the interior of candle bodies located between the two structures. Wick interaction with X is permitted.
This approach is intended to distinguish meaningful horizontal market structures from simple price equality between two isolated swing points.
Main concepts
The indicator evaluates several structural conditions, including:
Minimum price movement into and away from each swing.
A minimum number of candles forming the directional phase before and after the swing.
Overlap between the price zones of A and B.
Candle-body interaction between A and B.
Separation between the two swing areas.
Distance and spacing between A and B.
Additional interactions with the X level after the structure is formed.
The indicator can detect:
Top structures: potential resistance or reversal structures.
Bottom structures: potential support or reversal structures.
Adaptive mode
The indicator includes an adaptive mode based on ATR (Average True Range).
Instead of relying exclusively on fixed price distances, ATR-based thresholds can automatically scale according to the volatility of the current symbol and timeframe.
This allows the indicator to be tested on different markets and timeframes, including forex, metals, cryptocurrencies, indices and other instruments available on TradingView.
A manual mode is also available for users who prefer fixed parameter values.
A, B and X
A represents the first qualified swing structure.
B represents a later qualified swing structure that shares a valid price area with A.
X is the horizontal reference level calculated from the overlapping zones of A and B.
Additional qualified interactions with the same level may be displayed as C, D, E or subsequent touches.
For top structures, X acts as a horizontal resistance reference.
For bottom structures, X acts as a horizontal support reference.
Line behavior
After a valid A-B structure is detected, the X line is extended to the right.
The visual line stops when a future candle body reaches the X level. Candle wicks alone do not necessarily stop the line.
The script may also generate a CHECK condition when price moves a specified distance beyond X within the configured monitoring period.
These signals indicate that the predefined structural condition has occurred; they are not automatic trading orders.
How to use
Users can apply the indicator directly to a chart and choose between:
AUTO (ATR): parameters adapt to current market volatility.
MANUAL: price-distance parameters are entered manually.
Because volatility and market structure differ significantly between instruments and timeframes, users should evaluate the parameters on the specific market they intend to analyze.
The indicator is intended primarily as a market-structure visualization and research tool. It can be combined with independent analysis of trend, volatility, liquidity, risk management and broader market context.
Original concept
The central idea of this indicator is that a horizontal resistance or support structure should not necessarily be defined by two identical highs or lows.
Instead, each swing is represented as a price zone between the close and the extreme of its anchor candle.
The indicator searches for the common price area between two qualifying zones and then determines a horizontal level that respects candle-body structure between them.
This zone-overlap and candle-body approach is the main structural concept used by the script.
Limitations
This indicator does not predict future market direction and does not guarantee that a detected support or resistance structure will produce a reversal.
Pivot-based structures require subsequent candles for confirmation, so signals are identified only after sufficient market data becomes available.
ATR adaptation improves portability between instruments and timeframes, but no single parameter configuration can provide identical behavior across all markets.
Low-liquidity instruments, gaps, unusually volatile market conditions and different data feeds may produce different results.
Historical structures should not be interpreted as evidence of future profitability.
Users should independently evaluate the indicator and apply appropriate risk management before making trading decisions. 지표

Modern Squeeze Momentum [GBB]MODERN SQUEEZE MOMENTUM
A rework of the Squeeze Momentum Indicator with an adaptive length, graded compression, normalised momentum, a qualified-release filter and a higher-timeframe context layer. Classic mode reproduces the original exactly.
The Squeeze Momentum Indicator (LazyBear's open-source implementation of John Carter's TTM Squeeze) is one of the most used free scripts on TradingView, and for good reason: Bollinger Bands inside Keltner Channels is a clean, intuitive way to spot compression before expansion. It also has four well-known limitations:
- The length is fixed at 20 bars regardless of the market's current cycle.
- The squeeze is binary. A hair inside the Keltner Channel counts the same as an extreme contraction.
- Momentum is in price units, so a reading of 15 on gold and 0.0004 on EURUSD tell you nothing comparable, and no fixed threshold works across symbols.
- Every squeeze release fires, whether or not price actually did anything.
This script keeps the original as its base (Layer 0) and adds five layers on top. Each layer has its own on/off switch so you can see exactly what each one changes.
HOW IT WORKS
Layer 0 - Classic base
Bollinger Bands (SMA +/- 2.0 standard deviations) and Keltner Channels (SMA +/- 1.5 x SMA of true range). Momentum is the linear regression of close minus the midpoint of the Donchian midline and the SMA, exactly as in the original.
Layer 1 - Adaptive length
Instead of a fixed 20, the length follows the dominant cycle measured by the Ehlers Homodyne Discriminator on (high + low) / 2. The cycle estimate is smoothed with a short EMA, clamped to a 12-40 bar range, and rounded. All bands and the momentum calculation use this length, so the indicator tightens in fast markets and widens in slow ones.
Layer 2 - Graded compression
The ratio Bollinger width / Keltner width is percentile-ranked over the last 150 bars. Three grades: light (bottom 30%), medium (bottom 15%), tight (bottom 5%). The zero-line dot grows and changes colour with the grade, and a duration counter tracks how many bars the squeeze has lasted. With this layer off, the classic binary test (BB inside KC) is used.
Layer 3 - Normalised momentum
Momentum is divided by the Keltner range, so the histogram is in "Keltner-range units". A reading of 1.0 means the same thing on BTC 1h, gold 15m and EURUSD 1h. Reference lines at +/-0.5 and +/-1.0 are drawn for orientation. The momentum threshold used in Layer 4 is set in the same units.
Layer 4 - Qualified release
A raw release is simply the squeeze ending. A qualified release additionally requires, on the release bar:
- momentum direction agrees with the bar direction (close vs open),
- absolute momentum is at or above the threshold (default 0.5),
- the squeeze lasted at least the minimum number of bars (default 3),
- close breaks the high (long) or low (short) of the range that formed during the squeeze.
Qualified releases are drawn as solid triangles (green up, red down). Unqualified releases are drawn as small grey dots so you can see what the filter removed. Turn the layer off and every release fires, as in the original.
Layer 5 - Context
HTF wash: the full layer stack is evaluated on a higher timeframe (default 4x the chart timeframe, or pick your own). When the higher timeframe is in a squeeze, the pane background is tinted, darker for tighter grades. Only closed higher-timeframe bars are used, lookahead is off. If the chosen HTF is not above the chart timeframe, a label says so and the wash is disabled.
Stats table: running counts on the loaded bars. Number of squeezes, raw vs qualified releases, hit rate (did close move in the release direction after H bars) and range multiple (the H-bar range after a qualified release, in ATR, relative to the H-bar range of all bars). H defaults to 10 bars.
READING THE PANE
- Histogram: the four original states are kept. Positive and rising, positive and falling, negative and falling, negative and rising, each in its own colour.
- Zero-line dot: small blue-grey = no squeeze; yellow / orange / red and increasingly large = light / medium / tight squeeze.
- Triangles: qualified release, long below the histogram, short above.
- Grey dots: releases that did not pass the filter.
- Background tint: the higher timeframe is in a squeeze.
- Reference lines: +/-0.5 and +/-1.0 Keltner-range units (only drawn when Layer 3 is on).
Three palettes: GBB (default), LazyBear (original colours) and Mono.
CLASSIC MODE
One switch in the General group turns Layers 1-4 off, sets the fixed length, and reproduces the original Squeeze Momentum Indicator histogram and squeeze dot. Combine it with the LazyBear palette if you want the familiar look. It is there so you can check for yourself what the added layers do and do not change.
ALERTS
Five alert conditions, all evaluated on confirmed bars only:
- Squeeze started (message includes the grade)
- Squeeze released (raw)
- Qualified release - long
- Qualified release - short
- HTF squeeze started / released
REPAINTING
Releases, markers, alerts and table counts are evaluated on confirmed bars. The higher-timeframe layer uses closed HTF bars only. The adaptive length and the percentile rank depend on recent history, so values on the current bar can move until it closes, like any indicator that uses the live bar.
SETTINGS OVERVIEW
- General: Classic mode.
- Adaptive length (Layer 1): on/off, min and max length, fixed length for when the layer is off.
- Bands: BB and KC multipliers.
- Compression (Layer 2): percentile ranking on/off, rank window, light / medium / tight percentiles, minimum squeeze bars.
- Momentum (Layer 3): normalisation on/off, momentum threshold.
- Release (Layer 4): qualified filter on/off, require range break, show unqualified releases.
- Context (Layer 5): HTF wash on/off, HTF selection, stats table on/off, stats horizon.
- Visual: palette.
CREDITS
- John Carter for the TTM Squeeze concept.
- LazyBear for the open-source Squeeze Momentum Indicator that this script extends. Layer 0 and Classic mode are his logic.
- John F. Ehlers for the Homodyne Discriminator (Rocket Science for Traders).
Open source. No hype, just data. Nothing here is a trade recommendation; a squeeze tells you volatility contracted, not which way it will expand. 지표

TMA Volatility BandsTMA Volatility Bands
TMA Volatility Bands is a trend and volatility indicator built around a smoothed Triangular Moving Average (TMA) and dynamically calculated deviation bands.
The indicator is designed to show the current market trend, volatility range, and potential reversal areas through a structured set of expanding TMA bands.
The TMA acts as the central trend reference, while the surrounding bands expand according to the current deviation of price from the TMA. This creates three volatility levels on both sides of the TMA, helping visualize how far price has moved from its smoothed average.
Main Settings
TMA Trend Line
The central TMA provides a smooth representation of the underlying price trend and reduces short-term market noise.
Dynamic Volatility Bands
Three band levels are calculated above and below the TMA. The bands automatically adapt to changing price volatility, creating a dynamic market range.
Multi-Level Band Structure
The first band represents the primary volatility boundary, while the middle and outer bands extend progressively farther from the TMA. This makes it easier to identify stronger extensions in price movement.
Trend Strength Gradient
The TMA changes color according to the direction and strength of its movement relative to ATR-based volatility. Stronger TMA movement produces a stronger color transition, while weaker movement moves toward a neutral color.
Buy and Sell Signals
The indicator includes automatic reversal-style signals based on price extending beyond the primary volatility band and then forming an opposite-direction candle.
A Buy signal appears when the previous candle moves below the lower primary band and the current candle closes bullish.
A Sell signal appears when the previous candle moves above the upper primary band and the current candle closes bearish.
Adjustable Settings
TMA Period controls the smoothing and responsiveness of the central TMA.
Band Deviation controls the distance of the primary volatility bands from the TMA.
Price Source allows the calculation to use the selected price source.
Trend Threshold controls the sensitivity of the TMA trend-strength gradient.
TMA Volatility Bands is designed to provide a clean visual framework for analyzing trend direction, volatility expansion, price extensions, and potential reversal areas.
The signals should be used as part of a broader trading strategy and confirmed with price action, market structure, or other analysis tools.
지표

Parabolic SAR Constraint Kinematics & Run GeometryOverview
Parabolic SAR Constraint Kinematics & Run Geometry studies how a continuing Parabolic SAR step is formed and how the surrounding run develops. It keeps TradingView's ta.sar() as the plotted SAR series and adds measurements of the run's Extreme Point, remaining Arc, acceleration-factor progression, and prior-two-bar price constraint.
The central distinction is between the free parabolic candidate and the candidate after the two-bar constraint. The script measures how much movement the constraint removes, how much movement remains, and how frequently material constraints occur within a fully observed run. A synchronization check compares the reconstructed candidate with ta.sar() before exposing the related constraint percentages.
The PSAR formula itself is standard. The added functionality is the coordinated measurement of its step mechanics, run-relative geometry, observation completeness, and bounded run history. The indicator does not adapt the PSAR formula, filter its side changes, optimize parameters, or rank trading opportunities.
Chart layers
The default display contains the canonical SAR dots, an Extreme Point trace, a translucent SAR-to-Extreme-Point Arc, small side-change markers, yellow material-constraint halos, and a compact upper-right panel.
Cyan and pink distinguish the tracked SAR-below and SAR-above run states. Green and amber distinguish the corresponding Extreme Point traces. Colors and visibility are configurable. These colors describe tracked states; they do not prescribe an action.
The Extreme Point is the highest observed high in a SAR-below run or the lowest observed low in a SAR-above run. It is updated according to the selected confirmation setting.
Optional layers include the free candidate point, the constraint bridge, an Arc midline, the current run's origin line, descriptive event markers, and completed-run summaries. These additional layers are disabled by default to avoid crowding the chart. The bridge compares the free candidate with the plotted SAR on materially constrained bars after the synchronization check; the reconstructed guarded candidate can differ from the plotted SAR by the permitted tolerance.
Reading the compact panel
The default layout remains a three-row grid. Abbreviated captions and reduced spacing save horizontal space without changing the measurements or their numeric precision.
STATE: BELOW or ABOVE means the tracked SAR side relative to price. FULL means the run's beginning was observed; PARTIAL means tracking began during an existing run. TIGHT identifies the contracted-Arc state. SYNTHETIC identifies a non-standard chart.
RUN: An example such as "11b ✳3 ∥4" means 11 bars in the tracked run, three Extreme Point updates, and four bars since the last Extreme Point update. The star identifies updates; the parallel strokes identify elapsed bars without an update.
ARC: Current normalized SAR-to-Extreme-Point distance, followed by Arc Retention.
STEP: Absolute one-bar SAR movement, followed by that movement as a percentage of the remaining Arc. This percentage is a geometric ratio, not a return or probability; it is not capped at 100%.
MOTION: Mechanical state, TX percentage, observed AF, and synchronization symbol. TX means Step Transmission. For example, "FREE TX100.0% AF0.08" indicates an observed FREE state, transmission of 100.0% of the reconstructed free step, and an observed AF of 0.08.
CODE: The four-axis run signature and completed-run count. CODE is the compact label for the run signature, not a trading signal. The suffix n20 means 20 completed full runs are retained for the duration/brief-run history. When the signature display is disabled, HIST shows the sample count, average duration in bars, and brief-run share instead.
Hovering over the cells reveals definitions, the processing scope, reconstruction error, constraint percentages, recent recorded signature states, and rolling history summaries. The panel shows the latest execution state; moving the cursor over an older bar does not make the panel display that bar's historical state. Extended Data Window output can be enabled for historical numeric inspection inside the research window.
Arc and distance units
Arc = abs(Current SAR - Tracked Extreme Point)
Arc Retention = 100 x Current Arc / Widest Arc recorded in the same tracked run
A lower retention value means the current Arc is narrower relative to that run's widest recorded Arc. It does not establish that a price reversal is approaching.
Distance units are selectable: ATR at run start, percent from run origin, minimum ticks, or raw price. The ATR-style normalizer smooths true range using RMA, SMA, EMA, or WMA. The range used for normalization is captured when tracking of the run begins, and percent distances use the absolute close captured as the run origin. In a PARTIAL run, these references belong to the first tracked bar, not the unknown actual beginning of the run.
Normalization and optional marker spacing do not alter the canonical SAR calculation.
Tight Arc and re-expansion
After the configured minimum run age, TIGHT is entered when Arc Retention is at or below the selected contraction threshold. Defaults are five bars and 35% retention.
The contracted state is released only after a new Extreme Point appears and retention reaches the contraction threshold plus the selected hysteresis, capped at 100%. Default hysteresis is 20 percentage points, giving a default release level of 55%.
The two thresholds reduce repeated state changes near a single boundary. TIGHT is a latched run state, so a retention value above the entry threshold does not by itself end that state. Neither contraction nor re-expansion forecasts a future market event.
Observed acceleration factor
Observed AF = min(Starting AF + Recorded EP Updates x AF Increment, Effective Maximum AF)
AF Progress = 100 x (Observed AF - Starting AF) / (Effective Maximum AF - Starting AF)
Defaults are 0.02 for the starting factor, 0.02 for the increment, and 0.20 for the maximum. If the entered maximum is below the starting factor, the effective maximum is raised to the starting factor. When both are equal, AF progress is represented as 100%.
The observed AF is reconstructed from the tracked Extreme Point sequence. It is not an independently exposed internal AF series supplied by ta.sar(). Partial-run values do not recover unobserved pre-window updates.
Free candidate and two-bar constraint
The reconstruction is attempted on eligible continuing bars of FULL runs, with the required prior values available and the current raw SAR side agreeing with the tracked run.
Free Candidate = Previous SAR + Previous Observed AF x (Previous Tracked EP - Previous SAR)
For a SAR-below run:
Guarded Candidate = min(Free Candidate, Previous Low, Low Two Bars Ago)
For a SAR-above run:
Guarded Candidate = max(Free Candidate, Previous High, High Two Bars Ago)
The resulting guarded candidate is compared with the current ta.sar() value. The default permitted difference is two minimum ticks; the tolerance is adjustable and includes a small numerical floor.
If the reconstruction is outside tolerance, the state becomes CHECK and Constraint Load and TX are unavailable. If the bar is not eligible, the state is INIT. A successful check establishes agreement within the selected tolerance on that bar, not exact recovery of every internal PSAR state or independent validation of the model.
Constraint Load and Step Transmission
Free Step = abs(Free Candidate - Previous SAR)
Removed Distance = abs(Free Candidate - Guarded Candidate)
Constraint Load = 100 x Removed Distance / Free Step
TX measures the guarded directional step as a percentage of the free directional step. Direction here means the mechanical direction of the tracked PSAR run, not a proposed trade.
TX = 100 x Guarded Directional Step / Free Directional Step
The displayed constraint percentages require synchronization and a valid positive denominator. They are bounded between 0% and 100%. In ordinary eligible cases, they describe the removed and transmitted portions of the reconstructed step. A zero or invalid denominator produces unavailable data rather than an invented percentage.
A measurable constraint requires both a removed distance of at least one quarter of a minimum tick and Constraint Load of at least 1%. A material constraint additionally requires the user-selected materiality threshold, which defaults to 12.5%.
MOTION states and symbols
INIT: The current bar is not eligible for the continuing-run reconstruction, including during partial tracking or at the start of a run.
CHECK: The guarded candidate differs from ta.sar() by more than the permitted tolerance.
FREE: The measurable-constraint conditions are not satisfied. This includes effects below the residual or load thresholds, not necessarily a mathematically exact zero effect.
TRACE: A measurable constraint exists, but its load is below the materiality threshold.
BRAKE: A material constraint exists and the guarded directional step remains greater than one quarter of a minimum tick.
PINNED: A material constraint exists and the guarded directional step is at or below that quarter-tick threshold.
The check mark means agreement within tolerance; the exclamation mark means outside tolerance; the ellipsis means not yet eligible. None is a confidence rating or market recommendation.
Yellow halos and run occupancy
A yellow halo identifies a bar meeting the synchronized material-constraint conditions. It marks a mechanical effect on the PSAR step, not an entry, exit, reversal prediction, target, or stop.
Run Constraint Occupancy = 100 x Materially Constrained Counted Bars / Synchronized Counted Bars
The counts follow the selected confirmation setting and exclude the side-change bar. Under the default setting, they are committed at bar close. The percentage measures how frequently the guardrail materially affected the eligible observations in that run, not the probability of a future outcome.
Run signature: A, F, P, C
An example code is A3·F2·P2·C0.
A is Arc Retention.
F is observed AF Progress.
P is Extreme-Point Pause Share: 100 x Bars Since Latest EP / (Run Age - 1), with zero used at age one.
C is current Constraint Load.
A, F, and P use four fixed percentage bands:
1: below 25%
2: 25% to below 50%
3: 50% to below 75%
4: 75% or higher
C uses:
C0: valid load below 1%
C1: 1% to below 25%
C2: 25% to below 50%
C3: 50% to below 75%
C4: 75% or higher
C-: Constraint Load is unavailable
C- can occur because the bar is ineligible, synchronization fails, or the denominator is invalid. When no complete signature can be formed, placeholder bands are shown. C is based on the numeric load, whereas MOTION also applies the quarter-tick residual test and the selected materiality threshold; the two displays need not change together.
A3·F2·P2·C0 therefore describes retention from 50% to below 75%, AF progress from 25% to below 50%, pause share from 25% to below 50%, and valid constraint load below 1%.
These are fixed ranges, not sample quartiles, learned regimes, rankings, or probabilities. The code helps compare similarly structured observations without implying similar future outcomes. Up to three recent distinct synchronized signature observations are available in the tooltip; this is not an automatic historical pattern search.
FULL, PARTIAL, and completed-run history
A FULL run begins at an observed SAR side change inside the research window. A PARTIAL run was already underway when tracking began. Only completed FULL runs enter the rolling history.
The memory setting defaults to 20 and accepts 3 to 100 runs. Duration and brief-run history retain the latest completed full runs. The brief threshold defaults to four bars or fewer.
Constraint-occupancy history accepts only completed full runs with a valid occupancy value. Runs without that value are skipped for this particular average, so its sample can differ from the duration/brief-run sample.
Optional completed-run labels also show EP updates, time at the maximum observed AF stage, constraint occupancy, and tight-Arc episode count. These summaries describe completed observations, not simulated transactions.
Research window and runtime
Recent bars is the default scope. The custom research window defaults to 3,000 bars and can be set from 500 to 50,000. All available bars removes that custom limit, subject to the history available on the chart.
The boundary is fixed when the script loads or recalculates. Subsequent realtime bars are included; the window is not a continuously sliding hard cap. Reloading or changing an input rebuilds it.
Before the boundary, canonical ta.sar() and the selected normalizer still evaluate to provide continuous underlying series. The window limits custom run analysis, reconstruction, history, events, and plotted research output; it is not Pine's native calc_bars_count restriction and does not prevent every underlying calculation from running on earlier bars.
Larger windows and All available bars can increase runtime. Use a smaller window if a runtime warning occurs. This is a research and resource setting, not an access restriction.
Controls and alerts
Users can change the research scope, PSAR factors, confirmation behavior, normalization, history length, constraint threshold, synchronization tolerance, visual layers, marker limits, panel layout and position, right-edge clearance, text size, bold formatting, and colors.
Alerts are disabled by default. Available conditions report a SAR side change, Arc contraction, Arc re-expansion, the onset of a material constraint, an age milestone, the observed AF maximum, an EP pause, or completion of a brief full run. They do not specify trading actions.
Extended Data Window output is also disabled by default. Enabling it exposes additional numeric series without changing the underlying measurement rules.
Suggested research workflow
Start on a standard candlestick or bar chart with default settings. Identify the SAR dots, Extreme Point trace, and Arc before reading the panel. Check FULL or PARTIAL, inspect ARC and STEP, and then use MOTION and its tooltip to examine the reconstructed constraint.
For a worked mechanical example, a free directional step of ten ticks reduced to six ticks has a four-tick removed distance: Constraint Load is 40% and TX is 60%, provided the guarded candidate synchronizes and the other eligibility conditions hold. This example explains the arithmetic; it does not describe a trading result.
Use CODE to compare descriptive states, or enable the candidate point and bridge for closer mechanical inspection. Keep the symbol, timeframe, PSAR factors, distance unit, and observation policy consistent when comparing records.
Realtime behavior and limitations
Confirm state changes at bar close is enabled by default. Run changes, EP updates, descriptive event records, and history counters are committed under that setting. The active ta.sar() point, current geometry, constraint calculations, halos, and current displayed signature can nevertheless change before the bar closes. The panel can retain a committed run state while live geometric values update. Disabling confirmation allows more provisional intrabar behavior.
The script is not described as completely non-repainting. Use closed bars for reproducible comparisons.
Non-standard chart types supply synthetic or transformed OHLC. The panel marks them as SYNTHETIC; their measurements describe that generated chart series, not standard market bars.
PSAR can change sides frequently in irregular or sideways markets. A synchronized reconstruction is only a numerical consistency check within tolerance. Changing the available history, research boundary, settings, or timeframe can change the tracked run statistics. Extreme parameter values may produce more unavailable or CHECK observations. Defaults are general research settings, not optimized values.
This open-source indicator is a descriptive visualization and numerical research tool. It makes no claims about forecast accuracy, trading performance, or a predictive edge, and it does not provide individualized recommendations or trading instructions. 지표

quantedOptions Levels [qO]Official quantedOptions Levels Script.
quantedOptions Levels draws options-positioning levels on any chart from one pasted line of text: the call wall and put wall, the gamma flip, the builder's call-side and put-side gamma maxima (Gamma C / P), the largest positive and negative delta-exposure strikes (DEX C / P), the five largest net-gamma strikes, a shaded zone between the walls, and the strike profile itself as a ladder on the right edge of the chart, one bar per strike sized by net gamma.
HOW TO USE
1. Copy a levels line from a quantedOptions dashboard (quantedTrader for QQQ, SPY and other tickers; quantedGamma for SPX) with "Copy for TradingView".
2. Open this indicator's settings and paste the line into "Paste from quantedOptions".
3. The levels appear with a header showing the ticker, expiry cohort, time and the price at that time. Levels are a snapshot of that moment. Paste again to refresh.
CONVERSION
On the ticker's own chart the levels are drawn as they are. On a related instrument they are rescaled live: QQQ levels on NQ, MNQ or NDX; SPY on ES, MES or SPX; SPX on ES or MES; IWM on RTY or M2K; DIA on YM or MYM; GLD on GC or MGC; SLV on SI or SIL; USO on CL, MCL or QM. Ratios are sampled only on bars where the ETF traded, so an overnight futures move does not shift the lines. Cash-index levels on their futures use the basis instead of a ratio. "Fixed ratio" lets you set your own factor; "Off" draws everything 1:1. Each label shows the level in the chart's price and the original strike.
DISPLAY
Levels that share a strike are drawn once with the names joined, so nothing overlaps. Each group of levels can be switched off. Glow, line start, ladder length and label size are adjustable. Three alert conditions are included: price crossing the call wall, the put wall and the gamma flip.
TRY IT
Paste this line to see the indicator work on a QQQ chart, or on NQ to see the conversion. It is QQQ's front expiry at 11:00 Central on 2026-09-04:
qo1|QQQ|2026-09-04|11:00|717.62|0DTE|net=291.1|cw=720|pw=718|flip=724.53|gc=720|gp=718|dc=715|dp=720|top=720,718,717,722,716|p=682:-0.6,683:-0.7,684:-1.5,685:-2.3,686:-0.8,687:-1.3,688:-1.9,689:-1.7,690:-3.8,691:-2.7,692:-2.0,693:-1.5,694:-3.0,695:-6.4,696:-2.2,697:-3.6,698:-3.6,699:-2.8,700:-20.7,701:-2.8,702:-5.3,703:-9.8,704:-5.8,705:-32.5,706:-7.9,707:-16.1,708:-29.6,709:-19.8,710:-51.3,711:-36.0,712:-35.6,712.5:-26.0,713:-58.2,714:-7.7,715:49.9,716:-135.7,717:-232.0,717.5:5.9,718:-308.2,719:45.3,720:432.7,721:88.5,722:186.0,722.5:111.9,723:36.0,724:83.5,725:126.5,726:20.3,727:19.1,727.5:7.2,728:27.4,729:6.7,730:44.2,731:11.2,732:10.9,732.5:1.5,733:3.6,734:3.3,735:40.7,736:3.4,737:2.2,737.5:0.7,738:0.8,739:2.1,740:4.5,741:4.8,742:0.5,742.5:0.5,743:0.6,744:0.5,745:1.5,746:0.5,747:0.5,748:1.4,749:0.2,750:2.7,751:1.8,752:0.2,753:0.3
NOTES
Nothing is sent anywhere. The only input is the text you paste, and the only data requested are the reference prices of the related tickers for conversion. The levels are derived from listed options open interest and Greeks. They describe where positioning sits; they are not a signal. 지표
