OPEN-SOURCE SCRIPT

Order Block Mitigation Strategy [algotim]

1 972
Overview
Order Block Mitigation Strategy identifies bullish and bearish order blocks from confirmed structure breaks and tracks the exact degree to which each zone has been consumed by subsequent price action. Rather than treating every order block as equally tradable, the script continuously measures how deep into a zone price has traveled and only signals reactions occurring at zones that are still statistically fresh, while allowing the trader to see heavily used zones visibly fade on the chart.

Problem Statement
Most order block tools draw a zone once and leave it static until price closes through it entirely. This binary treatment ignores a critical distinction: a zone that has been wicked into by 10% of its range carries very different odds than one that has already been penetrated 70% of the way through. Traders using static zones frequently take reaction entries at institutional levels that have already been substantially absorbed, with no way to quantify how much of the zone's liquidity remains untouched.

Methodology
Structure is established using confirmed swing pivots. A Break of Structure is only confirmed on a bar close that clears the swing level by a minimum ATR-based buffer, filtering marginal breaks. Once a break is confirmed, the script scans backward from the broken pivot for the last opposite-colored candle within a fixed window, since this candle (not the pivot bar itself) is the true origin of the displacement leg. That candle's high-low range becomes the order block, provided its range also exceeds a minimum ATR multiple.

From the moment a zone is created, the script tracks the deepest price extreme that has traded into it on every confirmed bar. This extreme can only advance in the direction of consumption, never retreat, and from it a Mitigation Percentage is calculated as the proportion of the zone's height that has been traded through. This percentage is classified into one of four bands (Fresh, Light, Moderate, Heavy) using user-defined thresholds, and a fifth state (Invalidated) removes the zone once the percentage crosses a final threshold.

The Mitigation Percentage also drives the zone's fill transparency directly, on a continuous interpolation between a fresh-zone opacity and a near-invalid opacity. A zone at 10% mitigation renders visibly more solid than one at 55%, and the fade is smooth rather than stepped between discrete color states. This means zone health can be read from the chart at a glance without a label or panel.

Entry signals are only evaluated at zones whose live Mitigation Percentage has not yet exceeded a separate, user-defined entry cap. When price trades into a qualifying zone, the closed candle is checked against a selectable rejection pattern (a dominant wick, an engulfing candle, a strong directional close, or a combination of wick and close). Optional filters can additionally require the candle to close beyond the zone's midpoint, require the candle's range to exceed an ATR multiple, and require volume above its rolling average. Each signal is issued once per zone's lifecycle.

Every signal carries a composite confidence score built from five equally weighted, disclosed factors: the ATR-normalized strength of the structure break that created the zone, the ATR-normalized size of the origin candle, the zone's freshness at the moment of the signal (the inverse of its mitigation percentage), the expansion of ATR since the zone was formed, and the ATR-normalized distance price traveled from the origin candle to the structure break. The score is displayed next to the signal marker.

Signal Workflow
Step 1: A swing high or low is confirmed once the required number of bars exist on both sides.
Step 2: A close beyond that swing level by the minimum ATR buffer confirms a Break of Structure.
Step 3: The script scans backward from the broken pivot for the last opposite-colored candle and builds the order block from its full range, provided the candle passes the minimum impulse size filter.
Step 4: On every subsequent confirmed bar, the zone's deepest intrusion is ratcheted forward and the Mitigation Percentage is recalculated, driving both the quality band and the continuous fade.
Step 5: When price re-enters a zone below the entry mitigation cap and a rejection pattern confirms on the closed candle, along with any enabled midpoint, ATR-expansion, and volume filters, a scored entry signal is generated.

Why This Indicator Is Different
Zone consumption is tracked as a continuous, monotonically increasing percentage rather than a binary tested or mitigated flag, so the trader always knows how much of a zone's original range remains untouched.
Fill transparency is interpolated in real time directly from that percentage, making zone health visible without any label, table, or dashboard.
The order block's origin candle is located by scanning back from the structure break for the true opposite-colored displacement candle, rather than defaulting to the pivot candle itself.
Entry signals are gated by a separate, independently configurable mitigation cap, so a trader can permit signals only at zones that remain within a defined freshness range.
Every signal discloses a five-factor confidence score built from break displacement, origin candle size, live freshness, ATR expansion since formation, and travel distance, so the score can be audited rather than trusted blindly.

Inputs

Detection
Swing Pivot Length
ATR Length
Min BOS Size (x ATR)
Min Impulse Candle Size (x ATR)

Zones
Maximum Zones (per side)
Zone Extension
Fixed Extension Length
Show Zone Midline
Dynamic Opacity by Mitigation %

Mitigation
Fresh Threshold %
Partial Threshold %
Heavy Threshold %
Invalidate Threshold %

Entries
Enable Entry Signals
Max Mitigation % Allowed for Entry
Rejection Pattern
Require Close Beyond Zone Midpoint
Require ATR Expansion
Require Volume Confirmation
High Confidence Threshold %

Appearance
Bullish Zone Color
Bearish Zone Color
Fresh Zone Transparency
Near-Invalid Zone Transparency
Signal Marker Size

Alerts
Enable All Alerts
Alert: New Order Block
Alert: Mitigation Milestones
Alert: Entry Signals

Alerts
Alerts are available for:
New Bullish Order Block formed
New Bearish Order Block formed
Bullish Order Block Partial Mitigation
Bearish Order Block Partial Mitigation
Bullish Order Block Heavy Mitigation
Bearish Order Block Heavy Mitigation
Bullish Order Block Invalidated
Bearish Order Block Invalidated
Bullish Rejection Entry
Bearish Rejection Entry
Premium Entry (High Confidence)

Practical Usage
Lower the Max Mitigation % Allowed for Entry to restrict signals to only the freshest zones, or raise it to also capture reaction trades at moderately used levels.
Watch the continuous fade of a zone as a visual proxy for its remaining reliability without needing to check a percentage value directly.
Use the disclosed confidence score to compare two simultaneous signals rather than treating every marker as equally weighted.
Switch Zone Extension to Until New BOS on trending instruments to stop a zone from extending once the opposing side of structure has broken.
Combine the ATR expansion and volume filters on the Entries tab when trading instruments where displacement quality varies significantly by session.

Limitations
Swing pivot confirmation introduces a lag equal to the pivot length setting, meaning a structure break can only be evaluated after that many bars have closed beyond the pivot.
The origin candle scan is bounded by a fixed lookback window, so on unusually extended displacement legs the true origin candle may fall outside that window and no zone will be created.
The confidence score is a disclosed, equally weighted composite of five factors and is not a probability of trade success.
Order blocks and their mitigation state are a price-action framework, not a standalone trading system, and should be evaluated alongside broader market context.

Notes
All detection, structure break, mitigation state, and entry logic execute strictly on confirmed bars, so no drawing, classification, or alert changes retroactively once printed.
Zone counts per direction are capped, with the oldest zone removed first once the limit is reached, keeping drawing object usage bounded regardless of session length.
alert() calls are used for every event category so a single "Any alert() function call" condition in the TradingView alert dialog captures all messages from this script.

إخلاء المسؤولية

لا يُقصد بالمعلومات والمنشورات أن تكون، أو تشكل، أي نصيحة مالية أو استثمارية أو تجارية أو أنواع أخرى من النصائح أو التوصيات المقدمة أو المعتمدة من TradingView. اقرأ المزيد في شروط الاستخدام.