PRO SMC Full Suite BY Mashrur“PRO SMC Full Suite BY Mashrur”
A Pine Script (v5) indicator for TradingView, focused on Smart Money Concepts (SMC). It overlays on price charts and provides visual tools for identifying key institutional trading behaviors.
🎯 Purpose
This script is designed to help traders analyze and trade using SMC principles by automatically detecting:
Order Blocks (OBs)
Fair Value Gaps (FVGs)
Breaks of Structure (BoS)
Liquidity Sweeps (Buy/Sell Side Liquidity Grabs)
Mitigation Entries
⚙️ Inputs / Settings
Show Fair Value Gaps: Toggle FVGs on/off
Higher Timeframe (HTF): Choose HTF for OB analysis
Use HTF OBs: Switch between current TF OBs and HTF OBs
Show Order Blocks: Toggle OBs on/off
Show OB Mitigation Entries: Toggle mitigation entry signals on/off
🧠 Core Logic Overview
🔹 1. Swing Points Detection
Identifies swing highs/lows using a 3-bar pattern (pivot-based structure).
🔹 2. Break of Structure (BoS)
A bullish BoS happens when price closes above the last swing high.
A bearish BoS occurs when price closes below the last swing low.
🔹 3. Order Block Detection
Upon BoS, the script marks the previous candle as the Order Block.
Uses either:
Current TF OBs (based on price action)
HTF OBs (based on candle body direction)
🔹 4. Mitigation Entry Logic
A mitigation occurs when price returns to the OB and reacts with confirmation:
Bullish: price dips into OB and closes above
Bearish: price wicks into OB and closes below
Plots entry markers for these mitigations.
🔹 5. Liquidity Sweeps
Detects equal highs/lows (liquidity zones)
Marks Buy SL when price dips below an equal low then closes above
Marks Sell SL when price breaks above an equal high then closes below
🔹 6. Fair Value Gaps (FVGs)
FVG Up: Gap between candle 3 and candle 1 (low > high )
FVG Down: Gap between candle 3 and candle 1 (high < low )
Plots highlighted boxes on these gaps
📊 Visual Elements
Boxes: For OB zones and FVGs
Shapes:
Labels: OB Buy/Sell entries
Triangles: Buy SL / Sell SL liquidity sweeps
Lines: Equal Highs and Lows
🔔 Alerts
Built-in alerts to notify when:
OB entries are confirmed
Liquidity sweeps happen
Helps in automation or active monitoring
✅ Ideal For
Traders using SMC, ICT concepts, Wyckoff, or institutional trading models
Anyone wanting to automate detection of structural elements on their chart
ابحث في النصوص البرمجية عن "BOS"
FluidTrades - SMC Lite
Price action and supply and demand is a key strategy use in trading. We wanted it to be easy and efficient for user to identify these zones, so the user can focus less on marking up charts and focus more on executing trades.
This indicator shows you supply and demand zones by using pivot points to show you the recent highs and the recent lows.
Features
This indicator includes some features relevant to SMC , these are highlighted below:
Full internal & swing market structure labeling in real-time
Swing Structure: Displays the swing structure labels & solid lines on the chart (BOS).
Supply & demand ( bullish & bearish )
Swing Points: Displays swing points labels on chart such as HH, HL, LH, LL.
Options to style the indicator to more easily display these concepts
White OB (supply): search for short opportunities
Blue OB (demand): search for long opportunities
Break of structure ( BOS )
For markets to move up and down a break in market structure must occur. A break in market structure occurs when the market begins to shift direction and break the previous HH and HL or HL and LL of the market. We also integrated the feature that you can see the BOS lines. In the indicator settings you can adjust the color of the label.
Settings
SwingHigh/Low Length: Allows the user to select Historical (default) or Present, which displays only recent data on the chart.
Supply/demand box width: Allows user to change the size of the supply and demand box
History to keep: allows the user to select how many most recent supply & demand box appear on the chart.
Visual settings
Show zig zag : allow user to see market patters within the market
Show price action labels: allow user to turn on/off the (swing points)
Supply box color : allow users to change the color of their supply box
Demand box color : allow users to change the color of their supply box
Bos label color : allow users to change the color of their BOS label
Poi label color : allow user to change the color of their POI label
Price action label : allow users to change the color of their swing points labels
Zig zag color : allow users to change the color of the zig/zag market patters
Warning
Never blindly take a trade on a supply/demand box - wait for a proper market structure to occur before considering a trade.
Order Blocks + Order-Flow ProxiesOrder Blocks + Order-Flow Proxies
This indicator combines structural analysis of order blocks with lightweight order-flow style proxies, providing a tool for chart annotation and contextual study. It is designed to help users visualize where significant structural shifts occur and how simple volume-based signals behave around those areas. The script does not guarantee profitable outcomes, nor does it issue financial advice. It is intended purely for research, learning, and discretionary use.
Conceptual Background
Order Blocks
An “order block” is a term often used to describe a zone on the chart where price left behind a significant reversal or imbalance before continuing strongly in the opposite direction. In practice, this can mean the last bullish or bearish candle before a strong breakout. Traders sometimes study these regions because they believe that unfilled resting orders may exist there, or simply because they mark important pivots in price structure. This indicator detects such moments by scanning for breaks of structure (BOS). When price pushes above or below recent swing levels with sufficient displacement, the script identifies the prior opposite candle as the potential order block.
Break of Structure
A break of structure in this context is defined when the closing price moves beyond the highest high or lowest low of a short lookback window. The script compares the magnitude of this break to an ATR-based displacement filter. This helps ensure that only meaningful moves are marked rather than small, random fluctuations.
Order-Flow Proxies
Traditional order flow analysis may use bid/ask data, footprint charts, or volume profiles. Because TradingView scripts cannot access true order-book data, this indicator instead uses proxy signals derived from standard chart data:
Delta (proxy): Estimated imbalance of buying vs. selling pressure, approximated using bar direction and volume.
Imbalance ratio: Normalizes delta by total volume, ranging between -1 and +1 in theory.
Cumulative Delta (CVD): Running sum of delta over time.
Effort vs. Result (EvR): A comparison between volume and actual bar movement, highlighting cases where large effort produced little result (or vice versa).
These are not real order-flow measurements, but rather simple mathematical constructs that mimic some of its logic.
How the Script Works
Detecting Break of Structure
The user specifies a swing length. When price closes above the recent high (for bullish BOS) or below the recent low (for bearish BOS), a potential shift is recorded.
To qualify, the breakout must exceed a displacement filter proportional to the ATR. This helps filter out weak moves.
Locating the Order Block Candle
Once a BOS is confirmed, the script looks back within a short window to find the last opposite-colored candle.
The high/low or open/close of that candle (depending on user settings) is marked as the potential order block zone.
Drawing and Maintaining Zones
Each order block is represented as a colored rectangle extending forward in time.
Bullish zones are teal by default, bearish zones are red.
Zones extend until invalidated (price closing or wicking beyond them, depending on user preference) or until a user-defined lifespan expires.
A pruning mechanism ensures that only the most recent set number of zones remain, preventing chart overload.
Monitoring Touches
The script checks whether the current bar’s range overlaps any existing order block.
If so, the “closest” zone is considered touched, and a label may appear on the chart.
Confirmation Filters
Touches can optionally be confirmed by order-flow proxies.
For a bullish confirmation, the following must align:
Imbalance ratio above threshold,
Delta EMA positive,
Effort vs. Result positive.
For a bearish confirmation, the opposite holds true.
Optionally, a higher-timeframe EMA slope filter can gate these confirmations. For example, a bullish confirmation may only be accepted if the higher-timeframe EMA is sloping upward.
Alerts
Users may create alerts based on conditions such as “bullish touch confirmed” or “bearish touch confirmed.”
Alerts can be gated to only fire after bar close, reducing intrabar noise.
Standard alertcondition calls are provided, and optional inline alert() calls can be enabled.
Inputs and Customization
Structure & OB
Swing length: Defines how many bars back to check for BOS.
ATR length & displacement factor: Adjust sensitivity for structural breaks.
Body vs. wick reference: Choose whether zones are based on candle bodies or full ranges.
Invalidation rule: Pick between wick breach or close beyond the level.
Lifespan (bars): Limit how long a zone remains active.
Max keep: Cap the number of zones stored to reduce clutter.
Order-Flow Proxies
Delta mode: Choose between “Close vs Previous Close” or “Body” for delta calculation.
EMA length: Smooths the delta/imbalance series.
Z-score lookback: Defines the averaging window for EvR.
Confirmation thresholds: Adjust the imbalance levels required for long/short confirmation.
Higher Timeframe Filter
Enable HTF gate: Optional filter requiring higher-timeframe EMA slope alignment.
HTF timeframe & EMA length: Configurable for context alignment.
Style
Colors and transparency for bullish and bearish zones.
Border color customization.
Alerts
Enable inline alerts: Optional direct calls to alert().
Alerts on bar close only: Helps avoid multiple firings during bar formation.
Practical Use
This tool is best seen as a way to annotate charts and to study how simple volume-derived signals behave near important structural levels. Some users may:
Observe whether order blocks line up with later price reactions.
Study how imbalance or cumulative delta conditions align with these zones.
Use it in a discretionary workflow to highlight areas of interest for deeper analysis.
Because the proxies are based only on candle OHLCV data, they are approximations. They cannot replace true depth-of-market analysis. Similarly, order block detection here is one specific algorithmic interpretation; other traders may define order blocks differently.
Limitations and Disclaimers
This indicator does not predict future price movement.
It does not access real order book or tick-by-tick data. All signals are derived from bar OHLCV.
Past performance of signals or zones does not guarantee future results.
The script is for educational and informational purposes only. It is not financial advice.
Users should test thoroughly, adjust parameters to their own instruments and timeframes, and use it in combination with broader analysis.
Summary
The Order Blocks + Order-Flow Proxies script is an experimental study tool that:
Detects potential order blocks using a displacement-filtered break of structure.
Marks these zones as boxes that persist until invalidation or expiry.
Provides lightweight order-flow-style proxies such as delta, imbalance, CVD, and effort vs. result.
Allows confirmation of zone touches through these proxies and optional higher-timeframe context.
Offers flexible customization, alerting, and chart-style options.
It is not a trading system by itself but rather a framework for studying price/volume behavior around structurally significant areas. With careful exploration, it can give users new ways to visualize market structure and to understand how simple flow-like measures behave in those contexts.
Order Blocks + Order-Flow ProxiesOrder Blocks + Order-Flow Proxies
This indicator combines structural analysis of order blocks with lightweight order-flow style proxies, providing a tool for chart annotation and contextual study. It is designed to help users visualize where significant structural shifts occur and how simple volume-based signals behave around those areas. The script does not guarantee profitable outcomes, nor does it issue financial advice. It is intended purely for research, learning, and discretionary use.
Conceptual Background
Order Blocks
An “order block” is a term often used to describe a zone on the chart where price left behind a significant reversal or imbalance before continuing strongly in the opposite direction. In practice, this can mean the last bullish or bearish candle before a strong breakout. Traders sometimes study these regions because they believe that unfilled resting orders may exist there, or simply because they mark important pivots in price structure. This indicator detects such moments by scanning for breaks of structure (BOS). When price pushes above or below recent swing levels with sufficient displacement, the script identifies the prior opposite candle as the potential order block.
Break of Structure
A break of structure in this context is defined when the closing price moves beyond the highest high or lowest low of a short lookback window. The script compares the magnitude of this break to an ATR-based displacement filter. This helps ensure that only meaningful moves are marked rather than small, random fluctuations.
Order-Flow Proxies
Traditional order flow analysis may use bid/ask data, footprint charts, or volume profiles. Because TradingView scripts cannot access true order-book data, this indicator instead uses proxy signals derived from standard chart data:
Delta (proxy): Estimated imbalance of buying vs. selling pressure, approximated using bar direction and volume.
Imbalance ratio: Normalizes delta by total volume, ranging between -1 and +1 in theory.
Cumulative Delta (CVD): Running sum of delta over time.
Effort vs. Result (EvR): A comparison between volume and actual bar movement, highlighting cases where large effort produced little result (or vice versa).
These are not real order-flow measurements, but rather simple mathematical constructs that mimic some of its logic.
How the Script Works
Detecting Break of Structure
The user specifies a swing length. When price closes above the recent high (for bullish BOS) or below the recent low (for bearish BOS), a potential shift is recorded.
To qualify, the breakout must exceed a displacement filter proportional to the ATR. This helps filter out weak moves.
Locating the Order Block Candle
Once a BOS is confirmed, the script looks back within a short window to find the last opposite-colored candle.
The high/low or open/close of that candle (depending on user settings) is marked as the potential order block zone.
Drawing and Maintaining Zones
Each order block is represented as a colored rectangle extending forward in time.
Bullish zones are teal by default, bearish zones are red.
Zones extend until invalidated (price closing or wicking beyond them, depending on user preference) or until a user-defined lifespan expires.
A pruning mechanism ensures that only the most recent set number of zones remain, preventing chart overload.
Monitoring Touches
The script checks whether the current bar’s range overlaps any existing order block.
If so, the “closest” zone is considered touched, and a label may appear on the chart.
Confirmation Filters
Touches can optionally be confirmed by order-flow proxies.
For a bullish confirmation, the following must align:
Imbalance ratio above threshold,
Delta EMA positive,
Effort vs. Result positive.
For a bearish confirmation, the opposite holds true.
Optionally, a higher-timeframe EMA slope filter can gate these confirmations. For example, a bullish confirmation may only be accepted if the higher-timeframe EMA is sloping upward.
Alerts
Users may create alerts based on conditions such as “bullish touch confirmed” or “bearish touch confirmed.”
Alerts can be gated to only fire after bar close, reducing intrabar noise.
Standard alertcondition calls are provided, and optional inline alert() calls can be enabled.
Inputs and Customization
Structure & OB
Swing length: Defines how many bars back to check for BOS.
ATR length & displacement factor: Adjust sensitivity for structural breaks.
Body vs. wick reference: Choose whether zones are based on candle bodies or full ranges.
Invalidation rule: Pick between wick breach or close beyond the level.
Lifespan (bars): Limit how long a zone remains active.
Max keep: Cap the number of zones stored to reduce clutter.
Order-Flow Proxies
Delta mode: Choose between “Close vs Previous Close” or “Body” for delta calculation.
EMA length: Smooths the delta/imbalance series.
Z-score lookback: Defines the averaging window for EvR.
Confirmation thresholds: Adjust the imbalance levels required for long/short confirmation.
Higher Timeframe Filter
Enable HTF gate: Optional filter requiring higher-timeframe EMA slope alignment.
HTF timeframe & EMA length: Configurable for context alignment.
Style
Colors and transparency for bullish and bearish zones.
Border color customization.
Alerts
Enable inline alerts: Optional direct calls to alert().
Alerts on bar close only: Helps avoid multiple firings during bar formation.
Practical Use
This tool is best seen as a way to annotate charts and to study how simple volume-derived signals behave near important structural levels. Some users may:
Observe whether order blocks line up with later price reactions.
Study how imbalance or cumulative delta conditions align with these zones.
Use it in a discretionary workflow to highlight areas of interest for deeper analysis.
Because the proxies are based only on candle OHLCV data, they are approximations. They cannot replace true depth-of-market analysis. Similarly, order block detection here is one specific algorithmic interpretation; other traders may define order blocks differently.
Limitations and Disclaimers
This indicator does not predict future price movement.
It does not access real order book or tick-by-tick data. All signals are derived from bar OHLCV.
Past performance of signals or zones does not guarantee future results.
The script is for educational and informational purposes only. It is not financial advice.
Users should test thoroughly, adjust parameters to their own instruments and timeframes, and use it in combination with broader analysis.
Summary
The Order Blocks + Order-Flow Proxies script is an experimental study tool that:
Detects potential order blocks using a displacement-filtered break of structure.
Marks these zones as boxes that persist until invalidation or expiry.
Provides lightweight order-flow-style proxies such as delta, imbalance, CVD, and effort vs. result.
Allows confirmation of zone touches through these proxies and optional higher-timeframe context.
Offers flexible customization, alerting, and chart-style options.
It is not a trading system by itself but rather a framework for studying price/volume behavior around structurally significant areas. With careful exploration, it can give users new ways to visualize market structure and to understand how simple flow-like measures behave in those contexts.
Reversal Radars — Berk v2.0 (Bottom & Top)1) Combined script (Dip+Tepe)
Title:
Reversal Radars — Berk v2.0 (Bottom & Top)
Description (EN):
What it does
Two high-probability reversal detectors in one indicator: a Bottom Reversal Radar (long bias) and a Top Reversal Radar (short/hedge bias). Each radar aggregates multiple conditions into a single score and triggers when Score ≥ Threshold.
How it works
RSI regime shift: Bottom = recovery after oversold (touched 30, crosses up 35). Top = roll-over from overbought (touched 70, crosses down 65).
MACD cross: Bull (up) for bottoms, Bear (down) for tops.
EMA8 filter: Close above (bottom) / below (top) EMA(8).
Structure break (BOS): Close above recent swing high / below recent swing low (lookbackBars, using precomputed highest/lowest to avoid inconsistencies).
EMA200 proximity: Price within a configurable band (default −5% … +2%).
Volume expansion: Volume ≥ SMA(20) × multiplier (default 1.5×).
Divergence: Pivot-confirmed (3/3) bullish (bottom) or bearish (top) RSI divergence.
Scoring: RSI shift +2, divergence +2, MACD +1, EMA8 +1, BOS +1, Volume +1, EMA200 band +1.
Signals & Alerts
Bottom: label “DÖNÜŞ↑” and alert “Dipten Dönüş — Ana Sinyal” when scoreLong ≥ thrLong.
Top: label “DÖNÜŞ↓” and alert “Tepeden Dönüş — Ana Sinyal” when scoreShort ≥ thrShort.
Use Once per bar close for stable alerts.
Inputs
lenRSI, rsiOS=30, rsiRecover=35, rsiOB=70, rsiFall=65, volLen=20, volMult=1.5, lookbackBars=5, ema200 band (−5…+2%), thrLong/thrShort, toggles for Bottom/Top.
Timeframes & tips
Best on Daily/4H. Tighten thresholds (e.g., 4) and raise volume multiplier (1.8–2.0×) on lower TFs or thin liquidity.
No-repaint note
Evaluated on bar close; pivot divergences confirm with a natural ~3-bar delay.
Disclaimer
Educational use only. Not financial advice.
Tags: reversal, divergence, rsi, macd, ema, volume, trend, screener, stocks, crypto, bist
2) Bottom-only (Dip)
Title:
Bottom Reversal Radar — Berk v1.4
Description (EN):
Purpose
Scores bottoming conditions and triggers when Score ≥ Threshold (default 3).
Components
RSI recovery after oversold (30→35), MACD bull cross, close above EMA8, BOS above recent swing high, near-EMA200 band (−5…+2%), volume ≥ SMA(20)×1.5, and pivot-confirmed (3/3) bullish RSI divergence. Weights: RSI +2, Divergence +2, others +1.
Usage
Add to chart, set alert “Dipten Dönüş — Ana Sinyal”, Once per bar close. Works on any timeframe (need ≥200 bars for EMA200). Daily/4H recommended.
No-repaint
Bar-close evaluation; divergence confirms with ~3 bars.
Tags: bottom, reversal, rsi, macd, ema, volume, divergence
3) Top-only (Tepe)
Title:
Top Reversal Radar — Berk v1.0
Description (EN):
Purpose
Detects topping risk and triggers when Score ≥ Threshold (default 3) for exits/hedges.
Components
RSI roll-over from overbought (70→65), MACD bear cross, close below EMA8, BOS below recent swing low, near-EMA200 band, volume ≥ SMA(20)×1.5, and pivot-confirmed (3/3) bearish RSI divergence. Weights: RSI +2, Divergence +2, others +1.
Usage
Add to chart, set alert “Tepeden Dönüş — Ana Sinyal”, Once per bar close. Daily/4H preferred; tighten thresholds on lower TFs.
No-repaint
Bar-close evaluation; divergence confirms with ~3 bars.
Tags: top, reversal, rsi, macd, ema, volume, divergence
Smart Moving Concepts [GILDEX]This all-in-one indicator displays real-time market structure (internal & swing BOS / CHoCH), order blocks, premium & discount zones, equal highs & lows, and much more...allowing traders to automatically mark up their charts with widely used price action methodologies. Following the release of our Fair Value Gap script, we received numerous requests from our community to release more features in the same category.
"Smart Money Concepts" (SMC) is a fairly new yet widely used term amongst price action traders looking to more accurately navigate liquidity & find more optimal points of interest in the market. Trying to determine where institutional market participants have orders placed (buy or sell side liquidity) can be a very reasonable approach to finding more practical entries & exits based on price action.
The indicator includes alerts for the presence of swing structures and many other relevant conditions.
Features
This indicator includes many features relevant to SMC, these are highlighted below:
Full internal & swing market structure labeling in real-time
Break of Structure (BOS)
Change of Character (CHoCH)
Order Blocks (bullish & bearish)
Equal Highs & Lows
Fair Value Gap Detection
Previous Highs & Lows
Premium & Discount Zones as a range
Options to style the indicator to more easily display these concepts
Settings
Mode: Allows the user to select Historical (default) or Present, which displays only recent data on the chart.
Style: Allows the user to select different styling for the entire indicator between Colored (default) and Monochrome.
Color Candles: Plots candles based on the internal & swing structures from within the indicator on the chart.
Internal Structure: Displays the internal structure labels & dashed lines to represent them. (BOS & CHoCH).
Confluence Filter: Filter non-significant internal structure breakouts.
Swing Structure: Displays the swing structure labels & solid lines on the chart (larger BOS & CHoCH labels).
Swing Points: Displays swing points labels on chart such as HH, HL, LH, LL.
Internal Order Blocks: Enables Internal Order Blocks & allows the user to select how many most recent Internal Order Blocks appear on the chart.
Swing Order Blocks: Enables Swing Order Blocks & allows the user to select how many most recent Swing Order Blocks appear on the chart.
Equal Highs & Lows: Displays EQH/EQL labels on chart for detecting equal highs & lows.
Bars Confirmation: Allows the user to select how many bars are needed to confirm an EQH/EQL symbol on chart.
Fair Value Gaps: Displays boxes to highlight imbalance areas on the chart.
Auto Threshold: Filter out non-significant fair value gaps.
Timeframe: Allows the user to select the timeframe for the Fair Value Gap detection.
Extend FVG: Allows the user to choose how many bars to extend the Fair Value Gap boxes on the chart.
Highs & Lows MTF: Allows the user to display previous highs & lows from daily, weekly, & monthly timeframes as significant levels.
Premium/Discount Zones: Allows the user to display Premium, Discount, and Equilibrium zones on the chart
Ayman – Full Smart Suite Auto/Manual Presets + PanelIndicator Name
Ayman – Full Smart Suite (OB/BoS/Liq/FVG/Pin/ADX/HTF) + Auto/Manual Presets + Panel
This is a multi-condition trading tool for TradingView that combines advanced Smart Money Concepts (SMC) with classic technical filters.
It generates BUY/SELL signals, draws Stop Loss (SL) and Take Profit (TP1, TP2) levels, and displays a control panel with all active settings and conditions.
1. Main Features
Smart Money Concepts Filters:
Order Block (OB) Zones
Break of Structure (BoS)
Liquidity Sweeps
Fair Value Gaps (FVG)
Pin Bar patterns
ADX filter
Higher Timeframe EMA filter (HTF EMA)
Two Operating Modes:
Auto Presets: Automatically adjusts all settings (buffers, ATR multipliers, RR, etc.) based on your chart timeframe (M1/M5/M15).
Manual Mode: Fully customize all parameters yourself.
Trade Management Levels:
Stop Loss (SL)
TP1 – partial profit
TP2 – full profit
Visual Panel showing:
Current settings
Filter status
Trend direction
Last swing levels
SL/TP status
Alerts for BUY/SELL conditions
2. Entry Conditions
A BUY signal is generated when all these are true:
Trend: Price above EMA (bullish)
HTF EMA: Higher timeframe trend also bullish
ADX: Trend strength above threshold
OB: Price in a valid bullish Order Block zone
BoS: Structure break to the upside
Liquidity Sweep: Sweep of recent lows in bullish context
FVG: A bullish Fair Value Gap is present
Pin Bar: Bullish Pin Bar pattern detected (if enabled)
A SELL signal is generated when the opposite conditions are met.
3. Stop Loss & Take Profits
SL: Placed just beyond the last swing low (BUY) or swing high (SELL), with a small ATR buffer.
TP1: Partial profit target, defined as a ratio of the SL distance.
TP2: Full profit target, based on Reward:Risk ratio.
4. How to Use
Step 1 – Apply Indicator
Open TradingView
Go to your chart (recommended: XAUUSD, M1/M5 for scalping)
Add the indicator script
Step 2 – Choose Mode
AUTO Mode: Leave “Use Auto Presets” ON – parameters adapt to your timeframe.
MANUAL Mode: Turn Auto OFF and adjust all lengths, buffers, RR, and filters.
Step 3 – Filters
In the Filters On/Off section, enable/disable specific conditions (OB, BoS, Liq, FVG, Pin Bar, ADX, HTF EMA).
Step 4 – Trading the Signals
Wait for a BUY or SELL arrow to appear.
SL and TP levels will be plotted automatically.
TP1 can be used for partial close and TP2 for full exit.
Step 5 – Alerts
Set alerts via BUY Signal or SELL Signal to receive notifications.
5. Best Practices
Scalping: Use M1 or M5 with AUTO mode for gold or forex pairs.
Swing Trading: Use M15+ and adjust buffers/ATR manually.
Combine with price action confirmation before entering trades.
For higher accuracy, wait for multiple filter confirmations rather than acting on the first arrow.
6. Summary Table
Feature Purpose Can Disable?
Order Block Finds key supply/demand zones ✅
Break of Structure Detects trend continuation ✅
Liquidity Sweep Finds stop-hunt moves ✅
Fair Value Gap Confirms imbalance entries ✅
Pin Bar Price action reversal filter ✅
ADX Trend strength filter ✅
HTF EMA Higher timeframe confirmation ✅
Range Breakout [sgbpulse]Range Breakout
1. Overview
The "Range Breakout " indicator is a powerful tool designed to identify and visually display price ranges on your chart using pivot points. It dynamically draws two distinct boxes – an External Range and an Internal Range – helping traders pinpoint potential support and resistance zones. Beyond its visual representation, the indicator offers a comprehensive set of 12 unique breakout alerts, providing real-time notifications for significant price movements outside these defined ranges. Additionally, it integrates RSI and MFI metrics for momentum confirmation.
2. How It Works
The indicator operates by identifying pivot points based on user-defined "left" and "right" bar lengths. A high pivot is a bar with a specified number of lower highs both to its left and right, and similarly for a low pivot.
External Range: Calculated using longer pivot lengths (default: 15 bars left, 6 bars right). This range represents broader, more significant price consolidation areas.
Internal Range: Calculated using shorter pivot lengths (default: 4 bars left, 3 bars right). This range captures tighter, more immediate price consolidations within the broader trend.
The External Range will always be greater than or equal to the Internal Range, as it's based on a wider historical context. Both ranges are displayed as transparent boxes on your chart, dynamically adjusting as new pivots are formed.
3. Key Features and Settings
Customizable Pivot Lengths:
External Range (Left/Right Bars): Adjust sensitivity for identifying the broader price range. Longer lengths lead to more stable, but less frequent, range updates.
Internal Range (Left/Right Bars): Adjust sensitivity for the tighter, more immediate price range.
Tool Tips: Minimum 6 bars for the External Range, and minimum 2 bars for the Internal Range.
Customizable Range Colors: Easily change the background colors of the External and Internal Range boxes to match your chart's aesthetic.
Dynamic Range Display: The indicator automatically updates the range boxes as new pivot highs and lows are formed, always presenting the most current valid ranges.
RSI / MFI Settings:
Timeframe Source: Select the timeframe for RSI and MFI calculation.
- Chart: Calculation based on the current chart timeframe.
- Daily: Always calculated based on the daily ("D") timeframe, even if the chart is on a lower timeframe.
RSI Length: Period length for RSI calculation (default: 14).
RSI Overbought Level: Overbought level for RSI (default: 70.0).
RSI Oversold Level: Oversold level for RSI (default: 30.0).
MFI Length: Period length for MFI calculation (default: 14).
MFI Overbought Level: Overbought level for MFI (default: 80.0).
MFI Oversold Level: Oversold level for MFI (default: 20.0).
4. Synergy of Ranges & Breakout Strength
The interaction between the External and Internal Ranges provides deep insights into price movement and breakout strength:
Immediate Direction: The movement of the Internal Range (up or down) indicates the short-term directional bias within the broader framework of the External Range.
Strength Confirmation: A breakout of the External Range, followed by a breakout of the Internal Range, confirms the strength of the move and increases confidence in the breakout.
Strong Momentum ("Leaving" Ranges Behind): When price breaks out with exceptionally strong momentum, it continues to move aggressively and does not immediately form new pivots. In such situations, the existing ranges (External and Internal) remain in place while the candles "leave them behind." A "Full Candle" breakout, where the entire candle moves past both ranges, indicates a particularly powerful and decisive move.
Momentum (RSI / MFI) as Confirmation:
- RSI (Relative Strength Index): Measures the speed and change of price movements. Extreme values (above 70 or below 30) indicate overbought/oversold conditions respectively, confirming strong momentum in a breakout.
- MFI (Money Flow Index): Similar to RSI but incorporates volume. Extreme values (above 80 or below 20) indicate strong money flow in/out, reinforcing breakout confirmation.
- Importance of Confirmation: If a breakout occurs but momentum indicators do not confirm it (for example, an upside breakout while RSI is declining), this could signal weakness in the move and the risk of a false breakout (Fakeout).
5. Visuals
The indicator provides clear visual representations on the chart:
Range Boxes:
Two dynamic boxes are drawn on the chart: one for the External Range and one for the Internal Range.
These boxes update continuously, displaying the current range boundaries based on the latest pivots. They provide an immediate visual indication of support and resistance levels.
RSI/MFI Status Labels:
Small text labels appear to the right of the current bar, vertically centered.
They display the status of RSI and MFI: RSI OB (Overbought), RSI OS (Oversold), MFI OB, MFI OS, along with the exact value.
Important: The labels remain on the chart as long as the condition holds (indicator is above/below the level), unlike alerts which mark a singular crossover event.
Plotting of Key Values:
The indicator plots six invisible series on the chart, primarily to allow the user to view the exact numerical values of:
- The upper and lower bounds of the External Range (External High, External Low).
- The upper and lower bounds of the Internal Range (Internal High, Internal Low).
- The calculated RSI and MFI values (RSI, MFI).
These values are accessible for viewing through TradingView's Data Window and also via the Status Line when hovering over the relevant candle. This enables more precise quantitative analysis of range levels and momentum.
6. Comprehensive Breakout Alerts
The "Range Breakout " indicator provides 12 distinct alert conditions for breakouts, allowing you to select the required level of confirmation for each alert. All alerts are triggered only upon a fully confirmed bar close (barstate.isconfirmed) to minimize false signals and ensure reliability.
All breakout alerts are configured to detect a Crossover/Crossunder of the levels, meaning a specific event where the price moves from one side of the range to the other.
External Range Breakout UP
- Close: Price closes above the External Range.
- Real Body: The entire "real body" of the candle (min of open/close prices) closes above the External Range.
- Full Candle: The entire candle (the lowest point of the candle) closes above the External Range.
External Range Breakout DOWN
- Close: Price closes below the External Range.
- Real Body: The entire "real body" of the candle (max of open/close prices) closes below the External Range.
- Full Candle: The entire candle (the highest point of the candle) closes below the External Range.
Internal Range Breakout UP
- Close: Price closes above the Internal Range.
- Real Body: The "real body" of the candle closes above the Internal Range.
- Full Candle: The entire candle closes above the Internal Range.
Internal Range Breakout DOWN
- Close: Price closes below the Internal Range.
- Real Body: The "real body" of the candle closes below the Internal Range.
- Full Candle: The entire candle closes below the Internal Range.
7. Ideal Use Cases
This indicator is ideal for traders who:
Want to clearly identify and monitor price consolidation zones.
Seek confirmation for breakout strategies across various timeframes.
Require reliable and automated alerts for potential entry or exit points based on range expansion.
8. Complementary Indicator
For even more comprehensive market analysis, we highly recommend using this indicator in conjunction with Market Structure Support & Resistance External/Internal & BoS .
This powerful complementary indicator automatically and accurately identifies significant support and resistance levels by locating high and low pivot points, as well as key Pre-Market High/Low levels. Its strength lies in its dynamic adaptability to any timeframe and asset, providing precise and relevant real-time levels while maintaining a clean chart. It also identifies Break of Structure (BoS) to signal potential trend changes or continuations.
Using both indicators together provides a robust framework for identifying defined ranges and potential trend shifts, enabling more informed trading decisions.
View Market Structure Support & Resistance External/Internal & BoS Indicator
9. Important Note: Trading Risk
This indicator is intended for educational and informational purposes only and does not constitute investment advice or a recommendation for trading in any form whatsoever.
Trading in financial markets involves significant risk of capital loss. It is important to remember that past performance is not indicative of future results. All trading decisions are your sole responsibility. Never trade with money you cannot afford to lose.
S&P Power Hour Liquidity Sweep StrategyThis indicator is designed for intraday traders who want to take advantage of liquidity grabs, break of structure (BOS), and optimal entry points during the most volatile hours of the trading day: the NYSE Power Hours (09:30–10:30 AM and 02:30–04:00 PM EST).
Key Features:
Power Hour Detection:
Automatically identifies the two most liquid hours of the trading session.
Liquidity Sweep Detection:
Highlights when price sweeps a recent swing high or low — a common trap before reversals.
Break of Structure (BOS):
Confirms trend shift after a liquidity sweep with smart money-style BOS markers.
Fair Value Gap (FVG) Highlighting: (Optional)
Spot institutional imbalances between candles to fine-tune trade entries.
How It Works:
Wait for price to sweep a swing high or low during the power hours.
Look for a break of structure (BOS) in the opposite direction.
Enter on the next candle or FVG retest.
The indicator will plot a yellow circle for entry, a red line for stop, and a green line for the target (based on your RR setting).
Customizable Inputs:
Swing sensitivity (lookback bars)
Risk-to-reward ratio
Optional FVG visibility
Best Used With:
Higher timeframe bias (15m/1H)
Order blocks or volume analysis
Avoiding major news events
Whether you're a scalper or precision-based intraday trader, this tool helps you spot high-probability reversal setups with clean visuals and clear confirmations.
Higher Timeframe Market StructureHTF Market Structure – ZigZag, Break of Structure & Supply/Demand
This powerful indicator is designed to identify higher-timeframe market structure using a combination of ZigZag patterns, Break of Structure (BOS) signals, and Supply/Demand zones.
Key Features:
Automatic detection of Higher Highs (HH), Higher Lows (HL), Lower Lows (LL), and Lower Highs (LH)
Internal structure shifts based on Open or High/Low logic
Supply and Demand zones plotted on the chart
Break of Structure (BOS) lines with optional alerts
Mitigation logic to mark or delete invalidated order blocks
Customizable aggregation factor to view higher time frame structure on lower time frames
How to Use:
Focus on market structure and BOS to understand the current trend.
Watch for internal shifts as early signals of potential reversals.
Use ZigZag lines to connect swing highs and lows to visualize market rhythm.
Supply zones (red) and Demand zones (green) are automatically drawn after structure breaks:
Use Demand Zones in Bullish Markets for the highest probability entries.
Use Supply Zones in Bearish Markets to align with the prevailing trend.
Best Practices:
Only use Demand Zones in Bullish markets and Supply Zones in Bearish markets for optimal results.
Look for price action or reversal signals within these zones to refine your entries.
Enable alerts to get notified on:
New order blocks
Internal shifts
BOS events
HH, HL, LL, LH formations
Liquidity sweeps
Customization Options:
Aggregation Factor: Control how many candles are grouped for structure analysis.
Zone Duration: Define how length of plotted zones.
Mitigation Settings: Automatically delete or fade zones after mitigation.
Colors: Choose custom colors for bullish and bearish zones and structure markers.
This tool is ideal for traders who rely on price action, structure, and smart money concepts. Combine it with your own S&D strategy or integrate it with other confluence tools for even better precision.
LANZ Strategy 2.0 [Backtest]🔷 LANZ Strategy 2.0 — Structural Breakout Logic with Dynamic Swing Protection
LANZ Strategy 2.0 is a precision-focused backtesting system built for intraday traders who rely on structural confirmations before the London session to guide directional bias. This tool uses smart swing detection, risk-defined position sizing, and strict time-based execution to simulate real trading conditions with clarity and control.
🧠 Core Components:
Structural Confirmation (Trend & BoS): Detects trend direction and break of structure (BoS) using a three-swing logic, aligning trade entries with valid structural movement.
Time-Based Execution: Trades are triggered exclusively at 02:00 a.m. New York time, ensuring disciplined and repeatable intraday testing.
Swing-Based SL Models: Traders can select between three stop-loss protection types:
First Swing: Most recent structural level
Second Swing: Prior level
Full Coverage: All recent swing levels + configurable pip buffer
Dynamic TP Calculation: Take-Profit is projected as a risk-based multiple (RR), fully adjustable via input.
Capital-Based Risk Management: Risk is defined as a percentage of a fixed account size (e.g., $100 per trade from $10,000), and lot size is automatically calculated based on SL distance.
Fallback Entry Logic: If structural breakout is present but trend is not confirmed, a secondary entry is triggered.
End-of-Session Management: Any open trades are automatically closed at 11:45 a.m. NY time, with optional manual labeling or review.
📊 Visual Features (Optional in Indicator Version):
(Note: Visuals apply to the indicator version of LANZ 2.0, not this backtest script)
Swing level labels (1st, 2nd) and dynamic SL/TP lines.
Real-time session coloring for clarity: Pre-London, Entry Window, and NY Close.
Outcome labels: +RR, -RR, or net % at close.
Auto-cleanup of previous drawings for a clean chart per session.
⚙️ How It Works:
Detects last trend and BoS using swing logic before 02:00 a.m. NY.
At 02:00 a.m., evaluates directional bias and executes BUY or SELL if confirmed.
Applies selected SL logic (1st, 2nd, or full swing protection).
Sets TP based on the RR multiplier.
Closes the trade either on SL, TP, or at 11:45 a.m. NY manually.
🔔 Alerts:
Time-of-day alert at 02:00 a.m. NY to monitor execution.
Can be extended to cover SL/TP triggers or new BoS events.
📝 Notes:
Designed for backtesting precision and discretionary decision-making.
Ideal for Forex pairs, indices, or assets active during the London session.
Fully customizable: session timing, swing logic, SL buffer, and RR.
👤 Credits:
Strategy built by @rau_u_lanz using Pine Script v6, combining structural logic, capital-based risk control, and London-session timing in a backtest-ready framework for traders who demand accuracy and structure.
Market Structure- ZigZag, Break of Structure & Order BlocksDescription:
This script is an all-in-one market structure tool designed for traders who follow price action, Smart Money Concepts (SMC), or institutional order flow. It combines Order Block detection , Break of Structure (BOS) , Internal Structure Shifts (CHoCH) , and a ZigZag swing framework to provide a clear and actionable view of market behavior.
Key Features:
Order Blocks (OB) :
-Detects Bullish (Green) and Bearish (Red) order blocks upon valid market structure shifts.
-Optional deletion of mitigated (touched) blocks to keep charts clean.
-Customizable block duration, fill color, and border color.
Break of Structure (BOS) :
-Marks BOS with horizontal dotted lines when price breaks previous swing highs/lows.
-Confirms new trends and structural shifts.
Internal Structure Shifts (CHoCH-like) :
-Detects early internal changes in direction before BOS.
-User-selectable logic: based on candle Open or High/Low.
-Plotted as small black triangle markers.
ZigZag Swings :
-Connects confirmed internal shifts with black zigzag lines.
-Visually simplifies trend structure and major swing points.
-Tracks last swing highs/lows for BOS validation.
Alerts :
-Bullish/Bearish Engulfments (OB signals)
-Internal Structure Shifts
-Bullish/Bearish Break of Structure
-OB Mitigation Events
Inputs & Settings :
-Show/Hide Bullish or Bearish Order Blocks
-Calculate internal shifts by: Open or High/Low
-Set order block fill and border colors
-Enable or disable automatic deletion of mitigated blocks
-Set duration for order block display
This tool is designed to support price action trading by visually mapping key structural changes and zones of interest directly on your chart. It is not intended to function as a standalone trading strategy , but rather as a supplementary tool to inform your own analysis and discretion.
ICT Gold Trading ToolFirst, I recall the original code had elements like Break of Structure, Fair Value Gaps, Premium/Discount Zones, Liquidity Pools, and Buy/Sell signals. The user had previous feedback pointing out issues in the code, like incorrect timeframe usage for BOS and FVG inaccuracies. They also suggested improvements, which were incorporated into a revised version.
So, the brief note should highlight the main components of the tool without getting too technical. The user probably wants this for a quick overview, maybe to share with others or for their own reference. They might be a trader familiar with ICT concepts, so using terms like BOS or FVG is okay without explaining each one.
I need to mention that the tool combines multiple ICT strategies into one indicator. It uses higher timeframes for BOS, which is important for structure. FVG detection was corrected in the revised code, so I should note that it identifies 3-candle patterns. The zones and liquidity pools help in identifying market extremes and areas where price might reverse. The buy/sell signals are based on a combination of BOS and zones, which adds confluence.
Also, the user might appreciate knowing that the tool is customizable with inputs for periods, making it adaptable to different trading styles. Emphasizing that it's for visual assistance and not standalone signals is crucial to remind users to use additional analysis.
TJR SEEK AND DESTROYTJR SEEK AND DESTROY – Intraday ICT Trading Tool
Built for day traders, TJR SEEK AND DESTROY combines Smart Money concepts like order blocks, fair value gaps, and liquidity sweeps with structure breaks and daily bias to pinpoint high-probability trades during US market hours (9:30–16:00). Ideal for scalping or intraday strategies on stocks, futures, or forex.
What Makes It Unique?
Unlike standalone ICT indicators, this script integrates:
Order Blocks with volume and range filters for precise support/resistance zones.
Fair Value Gaps (FVG) to spot pre-market price imbalances.
Break of Structure (BOS) and Liquidity Sweeps for trend and reversal signals.
A 1H MA-based Bias to align trades with the day’s direction.
BUY/SELL Labels triggered only when bias, BOS, and sweeps align, reducing noise.
How Does It Work?
Order Blocks: Marks zones with high volume (>1.5x 20-period SMA) and low range (<0.5x ATR20) as teal boxes—potential reversal points.
Fair Value Gap: Compares the prior day’s close to the current open (pre- or post-9:30), shown as a purple line and label (e.g., "FVG: 0.005").
Pivot Point: Calculates (prevHigh + prevLow + prevClose) / 3 from the prior day, plotted as an orange line for equilibrium.
Break of Structure: Detects crossovers of 5-bar highs/lows (gray lines), marked with red triangles.
Liquidity Sweeps: Tracks breaches of the prior day’s high/low (yellow lines), marked with yellow triangles.
Daily Bias: Uses 1H close vs. 20-period MA (blue line) for bullish (green background), bearish (red), or neutral (gray) context.
Signals: BUY (green label) when bias is bullish, price breaks up, and sweeps the prior high; SELL (red label) when bias is bearish, price breaks down, and sweeps the prior low.
How to Use It
Setup: Apply to 1M–15M charts for US session trading (9:30–16:00 EST).
Trading:
Wait for a BUY label after a yellow sweep triangle above the prior day’s high in a green (bullish) background.
Wait for a SELL label after a yellow sweep triangle below the prior day’s low in a red (bearish) background.
Use order blocks (teal boxes) as support/resistance for stop-loss or take-profit.
Markets: Best for SPY, ES futures, or forex pairs with US session volatility.
Underlying Concepts
Order Blocks: High-volume, low-range bars suggest institutional activity.
FVG: Gaps between close and open indicate imbalance to be filled.
BOS & Sweeps: Price breaking key levels signals momentum or stop-hunting.
Bias: 1H MA filters trades by broader trend.
Chart Setup
Displays order blocks (teal boxes), pivot (orange), open (purple), bias (colored background), BOS/sweeps (triangles), and signals (labels). Keep other indicators off for clarity.
Trading IQ - ICT LibraryLibrary "ICTlibrary"
Used to calculate various ICT related price levels and strategies. An ongoing project.
Hello Coders!
This library is meant for sourcing ICT related concepts. While some functions might generate more output than you require, you can specify "Lite Mode" as "true" in applicable functions to slim down necessary inputs.
isLastBar(userTF)
Identifies the last bar on the chart before a timeframe change
Parameters:
userTF (simple int) : the timeframe you wish to calculate the last bar for, must be converted to integer using 'timeframe.in_seconds()'
Returns: bool true if bar on chart is last bar of higher TF, dalse if bar on chart is not last bar of higher TF
necessaryData(atrTF)
returns necessaryData UDT for historical data access
Parameters:
atrTF (float) : user-selected timeframe ATR value.
Returns: logZ. log return Z score, used for calculating order blocks.
method gradBoxes(gradientBoxes, idColor, timeStart, bottom, top, rightCoordinate)
creates neon like effect for box drawings
Namespace types: array
Parameters:
gradientBoxes (array) : an array.new() to store the gradient boxes
idColor (color)
timeStart (int) : left point of box
bottom (float) : bottom of box price point
top (float) : top of box price point
rightCoordinate (int) : right point of box
Returns: void
checkIfTraded(tradeName)
checks if recent trade is of specific name
Parameters:
tradeName (string)
Returns: bool true if recent trade id matches target name, false otherwise
checkIfClosed(tradeName)
checks if recent closed trade is of specific name
Parameters:
tradeName (string)
Returns: bool true if recent closed trade id matches target name, false otherwise
IQZZ(atrMult, finalTF)
custom ZZ to quickly determine market direction.
Parameters:
atrMult (float) : an atr multiplier used to determine the required price move for a ZZ direction change
finalTF (string) : the timeframe used for the atr calcuation
Returns: dir market direction. Up => 1, down => -1
method drawBos(id, startPoint, getKeyPointTime, getKeyPointPrice, col, showBOS, isUp)
calculates and draws Break Of Structure
Namespace types: array
Parameters:
id (array)
startPoint (chart.point)
getKeyPointTime (int) : the actual time of startPoint, simplystartPoint.time
getKeyPointPrice (float) : the actual time of startPoint, simplystartPoint.price
col (color) : color of the BoS line / label
showBOS (bool) : whether to show label/line. This function still calculates internally for other ICT related concepts even if not drawn.
isUp (bool) : whether BoS happened during price increase or price decrease.
Returns: void
method drawMSS(id, startPoint, getKeyPointTime, getKeyPointPrice, col, showMSS, isUp, upRejections, dnRejections, highArr, lowArr, timeArr, closeArr, openArr, atrTFarr, upRejectionsPrices, dnRejectionsPrices)
calculates and draws Market Structure Shift. This data is also used to calculate Rejection Blocks.
Namespace types: array
Parameters:
id (array)
startPoint (chart.point)
getKeyPointTime (int) : the actual time of startPoint, simplystartPoint.time
getKeyPointPrice (float) : the actual time of startPoint, simplystartPoint.price
col (color) : color of the MSS line / label
showMSS (bool) : whether to show label/line. This function still calculates internally for other ICT related concepts even if not drawn.
isUp (bool) : whether MSS happened during price increase or price decrease.
upRejections (array)
dnRejections (array)
highArr (array) : array containing historical highs, should be taken from the UDT "necessaryData" defined above
lowArr (array) : array containing historical lows, should be taken from the UDT "necessaryData" defined above
timeArr (array) : array containing historical times, should be taken from the UDT "necessaryData" defined above
closeArr (array) : array containing historical closes, should be taken from the UDT "necessaryData" defined above
openArr (array) : array containing historical opens, should be taken from the UDT "necessaryData" defined above
atrTFarr (array) : array containing historical atr values (of user-selected TF), should be taken from the UDT "necessaryData" defined above
upRejectionsPrices (array) : array containing up rejections prices. Is sorted and used to determine selective looping for invalidations.
dnRejectionsPrices (array) : array containing down rejections prices. Is sorted and used to determine selective looping for invalidations.
Returns: void
method getTime(id, compare, timeArr)
gets time of inputted price (compare) in an array of data
this is useful when the user-selected timeframe for ICT concepts is greater than the chart's timeframe
Namespace types: array
Parameters:
id (array) : the array of data to search through, to find which index has the same value as "compare"
compare (float) : the target data point to find in the array
timeArr (array) : array of historical times
Returns: the time that the data point in the array was recorded
method OB(id, highArr, signArr, lowArr, timeArr, sign)
store bullish orderblock data
Namespace types: array
Parameters:
id (array)
highArr (array) : array of historical highs
signArr (array) : array of historical price direction "math.sign(close - open)"
lowArr (array) : array of historical lows
timeArr (array) : array of historical times
sign (int) : orderblock direction, -1 => bullish, 1 => bearish
Returns: void
OTEstrat(OTEstart, future, closeArr, highArr, lowArr, timeArr, longOTEPT, longOTESL, longOTElevel, shortOTEPT, shortOTESL, shortOTElevel, structureDirection, oteLongs, atrTF, oteShorts)
executes the OTE strategy
Parameters:
OTEstart (chart.point)
future (int) : future time point for drawings
closeArr (array) : array of historical closes
highArr (array) : array of historical highs
lowArr (array) : array of historical lows
timeArr (array) : array of historical times
longOTEPT (string) : user-selected long OTE profit target, please create an input.string() for this using the example below
longOTESL (int) : user-selected long OTE stop loss, please create an input.string() for this using the example below
longOTElevel (float) : long entry price of selected retracement ratio for OTE
shortOTEPT (string) : user-selected short OTE profit target, please create an input.string() for this using the example below
shortOTESL (int) : user-selected short OTE stop loss, please create an input.string() for this using the example below
shortOTElevel (float) : short entry price of selected retracement ratio for OTE
structureDirection (string) : current market structure direction, this should be "Up" or "Down". This is used to cancel pending orders if market structure changes
oteLongs (bool) : input.bool() for whether OTE longs can be executed
atrTF (float) : atr of the user-seleceted TF
oteShorts (bool) : input.bool() for whether OTE shorts can be executed
@exampleInputs
oteLongs = input.bool(defval = false, title = "OTE Longs", group = "Optimal Trade Entry")
longOTElevel = input.float(defval = 0.79, title = "Long Entry Retracement Level", options = , group = "Optimal Trade Entry")
longOTEPT = input.string(defval = "-0.5", title = "Long TP", options = , group = "Optimal Trade Entry")
longOTESL = input.int(defval = 0, title = "How Many Ticks Below Swing Low For Stop Loss", group = "Optimal Trade Entry")
oteShorts = input.bool(defval = false, title = "OTE Shorts", group = "Optimal Trade Entry")
shortOTElevel = input.float(defval = 0.79, title = "Short Entry Retracement Level", options = , group = "Optimal Trade Entry")
shortOTEPT = input.string(defval = "-0.5", title = "Short TP", options = , group = "Optimal Trade Entry")
shortOTESL = input.int(defval = 0, title = "How Many Ticks Above Swing Low For Stop Loss", group = "Optimal Trade Entry")
Returns: void (0)
displacement(logZ, atrTFreg, highArr, timeArr, lowArr, upDispShow, dnDispShow, masterCoords, labelLevels, dispUpcol, rightCoordinate, dispDncol, noBorders)
calculates and draws dispacements
Parameters:
logZ (float) : log return of current price, used to determine a "significant price move" for a displacement
atrTFreg (float) : atr of user-seleceted timeframe
highArr (array) : array of historical highs
timeArr (array) : array of historical times
lowArr (array) : array of historical lows
upDispShow (int) : amount of historical upside displacements to show
dnDispShow (int) : amount of historical downside displacements to show
masterCoords (map) : a map to push the most recent displacement prices into, useful for having key levels in one data structure
labelLevels (string) : used to determine label placement for the displacement, can be inside box, outside box, or none, example below
dispUpcol (color) : upside displacement color
rightCoordinate (int) : future time for displacement drawing, best is "last_bar_time"
dispDncol (color) : downside displacement color
noBorders (bool) : input.bool() to remove box borders, example below
@exampleInputs
labelLevels = input.string(defval = "Inside" , title = "Box Label Placement", options = )
noBorders = input.bool(defval = false, title = "No Borders On Levels")
Returns: void
method getStrongLow(id, startIndex, timeArr, lowArr, strongLowPoints)
unshift strong low data to array id
Namespace types: array
Parameters:
id (array)
startIndex (int) : the starting index for the timeArr array of the UDT "necessaryData".
this point should start from at least 1 pivot prior to find the low before an upside BoS
timeArr (array) : array of historical times
lowArr (array) : array of historical lows
strongLowPoints (array) : array of strong low prices. Used to retrieve highest strong low price and see if need for
removal of invalidated strong lows
Returns: void
method getStrongHigh(id, startIndex, timeArr, highArr, strongHighPoints)
unshift strong high data to array id
Namespace types: array
Parameters:
id (array)
startIndex (int) : the starting index for the timeArr array of the UDT "necessaryData".
this point should start from at least 1 pivot prior to find the high before a downside BoS
timeArr (array) : array of historical times
highArr (array) : array of historical highs
strongHighPoints (array)
Returns: void
equalLevels(highArr, lowArr, timeArr, rightCoordinate, equalHighsCol, equalLowsCol, liteMode)
used to calculate recent equal highs or equal lows
Parameters:
highArr (array) : array of historical highs
lowArr (array) : array of historical lows
timeArr (array) : array of historical times
rightCoordinate (int) : a future time (right for boxes, x2 for lines)
equalHighsCol (color) : user-selected color for equal highs drawings
equalLowsCol (color) : user-selected color for equal lows drawings
liteMode (bool) : optional for a lite mode version of an ICT strategy. For more control over drawings leave as "True", "False" will apply neon effects
Returns: void
quickTime(timeString)
used to quickly determine if a user-inputted time range is currently active in NYT time
Parameters:
timeString (string) : a time range
Returns: true if session is active, false if session is inactive
macros(showMacros, noBorders)
used to calculate and draw session macros
Parameters:
showMacros (bool) : an input.bool() or simple bool to determine whether to activate the function
noBorders (bool) : an input.bool() to determine whether the box anchored to the session should have borders
Returns: void
po3(tf, left, right, show)
use to calculate HTF po3 candle
@tip only call this function on "barstate.islast"
Parameters:
tf (simple string)
left (int) : the left point of the candle, calculated as bar_index + left,
right (int) : :the right point of the candle, calculated as bar_index + right,
show (bool) : input.bool() whether to show the po3 candle or not
Returns: void
silverBullet(silverBulletStratLong, silverBulletStratShort, future, userTF, H, L, H2, L2, noBorders, silverBulletLongTP, historicalPoints, historicalData, silverBulletLongSL, silverBulletShortTP, silverBulletShortSL)
used to execute the Silver Bullet Strategy
Parameters:
silverBulletStratLong (simple bool)
silverBulletStratShort (simple bool)
future (int) : a future time, used for drawings, example "last_bar_time"
userTF (simple int)
H (float) : the high price of the user-selected TF
L (float) : the low price of the user-selected TF
H2 (float) : the high price of the user-selected TF
L2 (float) : the low price of the user-selected TF
noBorders (bool) : an input.bool() used to remove the borders from box drawings
silverBulletLongTP (series silverBulletLevels)
historicalPoints (array)
historicalData (necessaryData)
silverBulletLongSL (series silverBulletLevels)
silverBulletShortTP (series silverBulletLevels)
silverBulletShortSL (series silverBulletLevels)
Returns: void
method invalidFVGcheck(FVGarr, upFVGpricesSorted, dnFVGpricesSorted)
check if existing FVGs are still valid
Namespace types: array
Parameters:
FVGarr (array)
upFVGpricesSorted (array) : an array of bullish FVG prices, used to selective search through FVG array to remove invalidated levels
dnFVGpricesSorted (array) : an array of bearish FVG prices, used to selective search through FVG array to remove invalidated levels
Returns: void (0)
method drawFVG(counter, FVGshow, FVGname, FVGcol, data, masterCoords, labelLevels, borderTransp, liteMode, rightCoordinate)
draws FVGs on last bar
Namespace types: map
Parameters:
counter (map) : a counter, as map, keeping count of the number of FVGs drawn, makes sure that there aren't more FVGs drawn
than int FVGshow
FVGshow (int) : the number of FVGs to show. There should be a bullish FVG show and bearish FVG show. This function "drawFVG" is used separately
for bearish FVG and bullish FVG.
FVGname (string) : the name of the FVG, "FVG Up" or "FVG Down"
FVGcol (color) : desired FVG color
data (FVG)
masterCoords (map) : a map containing the names and price points of key levels. Used to define price ranges.
labelLevels (string) : an input.string with options "Inside", "Outside", "Remove". Determines whether FVG labels should be inside box, outside,
or na.
borderTransp (int)
liteMode (bool)
rightCoordinate (int) : the right coordinate of any drawings. Must be a time point.
Returns: void
invalidBlockCheck(bullishOBbox, bearishOBbox, userTF)
check if existing order blocks are still valid
Parameters:
bullishOBbox (array) : an array declared using the UDT orderBlock that contains bullish order block related data
bearishOBbox (array) : an array declared using the UDT orderBlock that contains bearish order block related data
userTF (simple int)
Returns: void (0)
method lastBarRejections(id, rejectionColor, idShow, rejectionString, labelLevels, borderTransp, liteMode, rightCoordinate, masterCoords)
draws rejectionBlocks on last bar
Namespace types: array
Parameters:
id (array) : the array, an array of rejection block data declared using the UDT rejection block
rejectionColor (color) : the desired color of the rejection box
idShow (int)
rejectionString (string) : the desired name of the rejection blocks
labelLevels (string) : an input.string() to determine if labels for the block should be inside the box, outside, or none.
borderTransp (int)
liteMode (bool) : an input.bool(). True = neon effect, false = no neon.
rightCoordinate (int) : atime for the right coordinate of the box
masterCoords (map) : a map that stores the price of key levels and assigns them a name, used to determine price ranges
Returns: void
method OBdraw(id, OBshow, BBshow, OBcol, BBcol, bullishString, bearishString, isBullish, labelLevels, borderTransp, liteMode, rightCoordinate, masterCoords)
draws orderblocks and breaker blocks for data stored in UDT array()
Namespace types: array
Parameters:
id (array) : the array, an array of order block data declared using the UDT orderblock
OBshow (int) : the number of order blocks to show
BBshow (int) : the number of breaker blocks to show
OBcol (color) : color of order blocks
BBcol (color) : color of breaker blocks
bullishString (string) : the title of bullish blocks, which is a regular bullish orderblock or a bearish orderblock that's converted to breakerblock
bearishString (string) : the title of bearish blocks, which is a regular bearish orderblock or a bullish orderblock that's converted to breakerblock
isBullish (bool) : whether the array contains bullish orderblocks or bearish orderblocks. If bullish orderblocks,
the array will naturally contain bearish BB, and if bearish OB, the array will naturally contain bullish BB
labelLevels (string) : an input.string() to determine if labels for the block should be inside the box, outside, or none.
borderTransp (int)
liteMode (bool) : an input.bool(). True = neon effect, false = no neon.
rightCoordinate (int) : atime for the right coordinate of the box
masterCoords (map) : a map that stores the price of key levels and assigns them a name, used to determine price ranges
Returns: void
FVG
UDT for FVG calcualtions
Fields:
H (series float) : high price of user-selected timeframe
L (series float) : low price of user-selected timeframe
direction (series string) : FVG direction => "Up" or "Down"
T (series int) : => time of bar on user-selected timeframe where FVG was created
fvgLabel (series label) : optional label for FVG
fvgLineTop (series line) : optional line for top of FVG
fvgLineBot (series line) : optional line for bottom of FVG
fvgBox (series box) : optional box for FVG
labelLine
quickly pair a line and label together as UDT
Fields:
lin (series line) : Line you wish to pair with label
lab (series label) : Label you wish to pair with line
orderBlock
UDT for order block calculations
Fields:
orderBlockData (array) : array containing order block x and y points
orderBlockBox (series box) : optional order block box
vioCount (series int) : = 0 violation count of the order block. 0 = Order Block, 1 = Breaker Block
traded (series bool)
status (series string) : = "OB" status == "OB" => Level is order block. status == "BB" => Level is breaker block.
orderBlockLab (series label) : options label for the order block / breaker block.
strongPoints
UDT for strong highs and strong lows
Fields:
price (series float) : price of the strong high or strong low
timeAtprice (series int) : time of the strong high or strong low
strongPointLabel (series label) : optional label for strong point
strongPointLine (series line) : optional line for strong point
overlayLine (series line) : optional lines for strong point to enhance visibility
overlayLine2 (series line) : optional lines for strong point to enhance visibility
displacement
UDT for dispacements
Fields:
highPrice (series float) : high price of displacement
lowPrice (series float) : low price of displacement
timeAtPrice (series int) : time of bar where displacement occurred
displacementBox (series box) : optional box to draw displacement
displacementLab (series label) : optional label for displacement
po3data
UDT for po3 calculations
Fields:
dHigh (series float) : higher timeframe high price
dLow (series float) : higher timeframe low price
dOpen (series float) : higher timeframe open price
dClose (series float) : higher timeframe close price
po3box (series box) : box to draw po3 candle body
po3line (array) : line array to draw po3 wicks
po3Labels (array) : label array to label price points of po3 candle
macros
UDT for session macros
Fields:
sessions (array) : Array of sessions, you can populate this array using the "quickTime" function located above "export macros".
prices (matrix) : Matrix of session data -> open, high, low, close, time
sessionTimes (array) : Array of session names. Pairs with array sessions.
sessionLines (matrix) : Optional array for sesion drawings.
OTEtimes
UDT for data storage and drawings associated with OTE strategy
Fields:
upTimes (array) : time of highest point before trade is taken
dnTimes (array) : time of lowest point before trade is taken
tpLineLong (series line) : line to mark tp level long
tpLabelLong (series label) : label to mark tp level long
slLineLong (series line) : line to mark sl level long
slLabelLong (series label) : label to mark sl level long
tpLineShort (series line) : line to mark tp level short
tpLabelShort (series label) : label to mark tp level short
slLineShort (series line) : line to mark sl level short
slLabelShort (series label) : label to mark sl level short
sweeps
UDT for data storage and drawings associated with liquidity sweeps
Fields:
upSweeps (matrix) : matrix containing liquidity sweep price points and time points for up sweeps
dnSweeps (matrix) : matrix containing liquidity sweep price points and time points for down sweeps
upSweepDrawings (array) : optional up sweep box array. Pair the size of this array with the rows or columns,
dnSweepDrawings (array) : optional up sweep box array. Pair the size of this array with the rows or columns,
raidExitDrawings
UDT for drawings associated with the Liquidity Raid Strategy
Fields:
tpLine (series line) : tp line for the liquidity raid entry
tpLabel (series label) : tp label for the liquidity raid entry
slLine (series line) : sl line for the liquidity raid entry
slLabel (series label) : sl label for the liquidity raid entry
m2022
UDT for data storage and drawings associated with the Model 2022 Strategy
Fields:
mTime (series int) : time of the FVG where entry limit order is placed
mIndex (series int) : array index of FVG where entry limit order is placed. This requires an array of FVG data, which is defined above.
mEntryDistance (series float) : the distance of the FVG to the 50% range. M2022 looks for the fvg closest to 50% mark of range.
mEntry (series float) : the entry price for the most eligible fvg
fvgHigh (series float) : the high point of the eligible fvg
fvgLow (series float) : the low point of the eligible fvg
longFVGentryBox (series box) : long FVG box, used to draw the eligible FVG
shortFVGentryBox (series box) : short FVG box, used to draw the eligible FVG
line50P (series line) : line used to mark 50% of the range
line100P (series line) : line used to mark 100% (top) of the range
line0P (series line) : line used to mark 0% (bottom) of the range
label50P (series label) : label used to mark 50% of the range
label100P (series label) : label used to mark 100% (top) of the range
label0P (series label) : label used to mark 0% (bottom) of the range
sweepData (array)
silverBullet
UDT for data storage and drawings associated with the Silver Bullet Strategy
Fields:
session (series bool)
sessionStr (series string) : name of the session for silver bullet
sessionBias (series string)
sessionHigh (series float) : = high high of session // use math.max(silverBullet.sessionHigh, high)
sessionLow (series float) : = low low of session // use math.min(silverBullet.sessionLow, low)
sessionFVG (series float) : if applicable, the FVG created during the session
sessionFVGdraw (series box) : if applicable, draw the FVG created during the session
traded (series bool)
tp (series float) : tp of trade entered at the session FVG
sl (series float) : sl of trade entered at the session FVG
sessionDraw (series box) : optional draw session with box
sessionDrawLabel (series label) : optional label session with label
silverBulletDrawings
UDT for trade exit drawings associated with the Silver Bullet Strategy
Fields:
tpLine (series line) : tp line drawing for strategy
tpLabel (series label) : tp label drawing for strategy
slLine (series line) : sl line drawing for strategy
slLabel (series label) : sl label drawing for strategy
unicornModel
UDT for data storage and drawings associated with the Unicorn Model Strategy
Fields:
hPoint (chart.point)
hPoint2 (chart.point)
hPoint3 (chart.point)
breakerBlock (series box) : used to draw the breaker block required for the Unicorn Model
FVG (series box) : used to draw the FVG required for the Unicorn model
topBlock (series float) : price of top of breaker block, can be used to detail trade entry
botBlock (series float) : price of bottom of breaker block, can be used to detail trade entry
startBlock (series int) : start time of the breaker block, used to set the "left = " param for the box
includes (array) : used to store the time of the breaker block, or FVG, or the chart point sequence that setup the Unicorn Model.
entry (series float) : // eligible entry price, for longs"math.max(topBlock, FVG.get_top())",
tpLine (series line) : optional line to mark PT
tpLabel (series label) : optional label to mark PT
slLine (series line) : optional line to mark SL
slLabel (series label) : optional label to mark SL
rejectionBlocks
UDT for data storage and drawings associated with rejection blocks
Fields:
rejectionPoint (chart.point)
bodyPrice (series float) : candle body price closest to the rejection point, for "Up" rejections => math.max(open, close),
rejectionBox (series box) : optional box drawing of the rejection block
rejectionLabel (series label) : optional label for the rejection block
equalLevelsDraw
UDT for data storage and drawings associated with equal highs / equal lows
Fields:
connector (series line) : single line placed at the first high or low, y = avgerage of distinguished equal highs/lows
connectorLab (series label) : optional label to be placed at the highs or lows
levels (array) : array containing the equal highs or lows prices
times (array) : array containing the equal highs or lows individual times
startTime (series int) : the time of the first high or low that forms a sequence of equal highs or lows
radiate (array) : options label to "radiate" the label in connector lab. Can be used for anything
necessaryData
UDT for data storage of historical price points.
Fields:
highArr (array) : array containing historical high points
lowArr (array) : array containing historical low points
timeArr (array) : array containing historical time points
logArr (array) : array containing historical log returns
signArr (array) : array containing historical price directions
closeArr (array) : array containing historical close points
binaryTimeArr (array) : array containing historical time points, uses "push" instead of "unshift" to allow for binary search
binaryCloseArr (array) : array containing historical close points, uses "push" instead of "unshift" to allow the correct
binaryOpenArr (array) : array containing historical optn points, uses "push" instead of "unshift" to allow the correct
atrTFarr (array) : array containing historical user-selected TF atr points
openArr (array) : array containing historical open points
Breaker Blocks + Order Blocks confirm [TradingFinder] BBOB Alert🔵 Introduction
In the realm of technical analysis, various tools and concepts are employed to identify key levels on price charts. These tools assist traders in analyzing market trends with greater precision, enabling them to optimize their trading decisions. Among these tools, the Order Block and Breaker Block hold a significant place, serving as effective instruments for analyzing market structure.
🟣 Order Block
An Order Block refers to zones on a chart where large financial institutions and high-volume traders place their orders. Due to the substantial volume of buy or sell orders in these areas, they are often regarded as pivotal points for potential price reversals or temporary pauses in a trend. Order Blocks are particularly crucial when prices react to these zones after a strong market move, acting as strong support or resistance levels.
🟣 Breaker Block
On the other hand, a Breaker Block refers to areas on a chart that previously functioned as Order Blocks but where the price has managed to break through and continue in the opposite direction. These zones are typically recognized as key points where market trends might shift, helping traders identify potential reversal points in the market.
🟣 Overlapping Block (BBOB)
Now, imagine a scenario where these two essential concepts in technical analysis—Order Blocks and Breaker Blocks—overlap on a chart. Although this overlap is not specifically discussed within the ICT (Inner Circle Trader) trading framework, exploring and utilizing this overlap can provide traders with powerful insights into strong support and resistance zones. The combination of these two robust concepts can highlight critical areas in trading, potentially offering significant advantages in making informed trading decisions.
In this article, we will delve into the concept of this overlap, explaining how to utilize it in trading strategies. Additionally, we will analyze the potential outcomes and benefits of incorporating this concept into your trading decisions.
Bullish Overlapping Block (BBOB) :
Bearish Overlapping Block (BBOB) :
🔵 How to Use
The overlap between Order Blocks and Breaker Blocks is a compelling and powerful concept that can help traders identify key levels on the chart with a high probability of success. This overlap is particularly valuable because it combines two well-regarded concepts in technical analysis—zones of high order volume and critical market shifts.
🟣 Here’s how to effectively use this overlap in your trading
1. Dentifying the Overlapping Block : To make the most of the overlap between Order Blocks and Breaker Blocks, begin by identifying these zones separately. Order Blocks are areas where price typically reacts and reverses after a strong market move.
Breaker Blocks are areas where a previous Order Block has been breached, and the price continues in the opposite direction. When these two zones overlap on a chart, it’s crucial to pay close attention to this area, as it represents a high-probability reaction zone.
2. Analyzing the Overlapping Block : After identifying the overlap zone, carefully analyze price action within this region. Candlestick patterns and price behavior can provide essential clues.
If the price reaches this overlap zone and strong reversal patterns such as Pin Bars or Engulfing patterns are observed, it’s likely that this zone will act as a pivotal reversal point. In such cases, entering a trade with confidence becomes more feasible.
3. Entering the Trade : When sufficient signs of price reaction are present in the overlap zone, you can proceed to enter the trade. If the overlap zone is within an uptrend and bullish reversal signals are evident, a long position might be appropriate.
Conversely, if the overlap zone is in a downtrend and bearish reversal signals are observed, a short position would be more suitable.
4. Risk Management : One of the most critical aspects of trading in overlap zones is managing risk. To protect your capital, place your stop loss near the lowest point of the Order Block (for buy trades) or the highest point (for sell trades). This approach minimizes potential losses if the overlap zone fails to hold.
5. Price Targets : After entering the trade, set your price targets based on other key levels on the chart. These targets could include other support and resistance zones, Fibonacci levels, or pivot points.
Bullish Overlapping Block :
Bearish Overlapping Block :
🟣 Benefits of the Overlapping Block Between Order Block and Breaker Block
1. Enhanced Precision in Identifying Key Levels : The overlap between these two zones usually acts as a highly reliable area for price reactions, increasing the accuracy of identifying entry and exit points.
2. Reduced Trading Risk : Given the high importance of the overlap zone, the likelihood of making incorrect decisions is reduced, contributing to overall lower trading risk.
3. Increased Probability of Success : The overlap between Order Blocks and Breaker Blocks combines two powerful concepts, enhancing the likelihood of success in trades, as multiple indicators confirm the importance of the area.
4. Creation of Better Trading Opportunities : Overlap zones often provide traders with more robust trading opportunities, as these areas typically represent strong reversal points in the market.
5. Compatibility with Other Technical Tools : This concept seamlessly integrates with other technical analysis tools such as Fibonacci retracements, trend lines, and chart patterns, offering a more comprehensive market analysis.
🔵 Setting
🟣 Global Setting
Pivot Period of Order Blocks Detector : Enter the desired pivot period to identify the Order Block.
Order Block Validity Period (Bar) : You can specify the maximum time the Order Block remains valid based on the number of candles from the origin.
Mitigation Level Order Block : Determining the basic level of a Order Block. When the price hits the basic level, the Order Block due to mitigation.
Mitigation Level Breaker Block : Determining the basic level of a Breaker Block. When the price hits the basic level, the Breaker Block due to mitigation.
Mitigation Level Overlapping Block : Determining the basic level of a Overlapping Block. When the price hits the basic level, the Overlapping Block due to mitigation.
🟣 Overlapping Block Display
Show All Overlapping Block : If it is turned off, only the last Order Block will be displayed.
Demand Overlapping Block : Show or not show and specify color.
Supply Overlapping Block : Show or not show and specify color.
🟣 Order Block Display
Show All Order Block : If it is turned off, only the last Order Block will be displayed.
Demand Main Order Block : Show or not show and specify color.
Demand Sub (Propulsion & BoS Origin) Order Block : Show or not show and specify color.
Supply Main Order Block : Show or not show and specify color.
Supply Sub (Propulsion & BoS Origin) Order Block : Show or not show and specify color.
🟣 Breaker Block Display
Show All Breaker Block : If it is turned off, only the last Breaker Block will be displayed.
Demand Main Breaker Block : Show or not show and specify color.
Demand Sub (Propulsion & BoS Origin) Breaker Block : Show or not show and specify color.
Supply Main Breaker Block : Show or not show and specify color.
Supply Sub (Propulsion & BoS Origin) Breaker Block : Show or not show and specify color.
🟣 Order Block Refinement
Refine Order Blocks : Enable or disable the refinement feature. Mode selection.
🟣 Alert
Alert Name : The name of the alert you receive.
Alert Overlapping Block Mitigation :
On / Off
Message Frequency :
This string parameter defines the announcement frequency. Choices include: "All" (activates the alert every time the function is called), "Once Per Bar" (activates the alert only on the first call within the bar), and "Once Per Bar Close" (the alert is activated only by a call at the last script execution of the real-time bar upon closing). The default setting is "Once per Bar".
Show Alert Time by Time Zone :
The date, hour, and minute you receive in alert messages can be based on any time zone you choose. For example, if you want New York time, you should enter "UTC-4". This input is set to the time zone "UTC" by default.
🔵 Conclusion
The overlap between Order Blocks and Breaker Blocks represents a critical and powerful area in technical analysis that can serve as an effective tool for determining entry and exit points in trading.
These zones, due to the combination of two key concepts in technical analysis, hold significant importance and can help traders make more confident trading decisions.
Although this concept is not specifically discussed in the ICT framework and is introduced as a new idea, traders can achieve better results in their trades through practice and testing.
Utilizing the overlap between Order Blocks and Breaker Blocks, in conjunction with other technical analysis tools, can significantly improve the chances of success in trading.
Order Blocks & Breaker Blocks [TradingFinder] Signals + Alerts🔵 Introduction
Order Block and Breaker Block, are powerful tools in technical analysis. By understanding these concepts, traders can enhance their ability to predict potential price reversals and continuations, leading to more effective trading strategies.
Using historical price action, volume analysis, and candlestick patterns, traders can identify key areas where institutional activities influence market movements.
🟣 Demand Order Block and Supply Breaker Block
Demand Order Block : A Demand Order Block is formed when the price succeeds in breaking the previous high pivot.
Supply Breaker Block : A Supply Breaker Block is formed when the price succeeds in breaking the Demand Order Block. As a result, the Order Block changes its role and turns from the role of price support to resistance.
🟣 Supply Order Block and Demand Breaker Block
Supply Order Block : A Supply Order Block is formed when the price succeeds in breaking the previous low pivot.
Demand Breaker Block : A Demand Breaker Block is formed when the price succeeds in breaking the Supply Order Block. As a result, the Order Block changes its role and turns from the role of price resistance to support.
🔵 How to Use
🟣 Order Blocks (Supply and Demand)
Order blocks are zones where the likelihood of a price reversal is higher. In demand zones, buying opportunities arise, while in supply zones, selling opportunities can be explored.
The "Refinement" feature allows you to adjust the width of the order block to fit your trading strategy. There are two modes in the "Order Block Refine" feature: "Aggressive" and "Defensive." The primary difference between these modes is the width of the order block.
For risk-averse traders, the "Defensive" mode is ideal as it offers a lower loss limit and a higher reward-to-risk ratio.
Conversely, for traders who are willing to take more risks, the "Aggressive" mode is more suitable. This mode, with its wider order block width, caters to those who prefer entering trades at higher prices.
🟣 Breaker Blocks (Supply and Demand)
Trading based on breaker blocks is the same as order blocks and the price in these zones is likely to be reversed.
🔵 Setting
🟣 Global Setting
Pivot Period of Order Blocks Detector : Enter the desired pivot period to identify the Order Block.
Order Block Validity Period (Bar) : You can specify the maximum time the Order Block remains valid based on the number of candles from the origin.
Mitigation Level Order Block : Determining the basic level of a Order Block. When the price hits the basic level, the Order Block due to mitigation.
Mitigation Level Breaker Block : Determining the basic level of a Breaker Block. When the price hits the basic level, the Breaker Block due to mitigation.
Switching Colors Theme Mode : Three modes "Off", "Light" and "Dark" are included in this parameter. "Light" mode is for color adjustment for use in "Light Mode".
"Dark" mode is for color adjustment for use in "Dark Mode" and "Off" mode turns off the color adjustment function and the input color to the function is the same as the output color.
🟣 Order Block Display
Show All Order Block : If it is turned off, only the last Order Block will be displayed.
Demand Main Order Block : Show or not show and specify color.
Demand Sub (Propulsion & BoS Origin) Order Block : Show or not show and specify color.
Supply Main Order Block : Show or not show and specify color.
Supply Sub (Propulsion & BoS Origin) Order Block : Show or not show and specify color.
🟣 Breaker Block Display
Show All Breaker Block : If it is turned off, only the last Breaker Block will be displayed.
Demand Main Breaker Block : Show or not show and specify color.
Demand Sub (Propulsion & BoS Origin) Breaker Block : Show or not show and specify color.
Supply Main Breaker Block : Show or not show and specify color.
Supply Sub (Propulsion & BoS Origin) Breaker Block : Show or not show and specify color.
🟣 Order Block Refinement
Refine Order Blocks : Enable or disable the refinement feature. Mode selection.
🟣 Alert
Alert Name : The name of the alert you receive.
Alert Demand OB Mitigation :
On / Off
Alert Demand BB Mitigation :
On / Off
Alert Supply OB Mitigation :
On / Off
Alert Supply BB Mitigation :
On / Off
Message Frequency :
This string parameter defines the announcement frequency. Choices include: "All" (activates the alert every time the function is called), "Once Per Bar" (activates the alert only on the first call within the bar), and "Once Per Bar Close" (the alert is activated only by a call at the last script execution of the real-time bar upon closing). The default setting is "Once per Bar".
Show Alert Time by Time Zone :
The date, hour, and minute you receive in alert messages can be based on any time zone you choose. For example, if you want New York time, you should enter "UTC-4". This input is set to the time zone "UTC" by default.
Display More Info :
Displays information about the price range of the order blocks (Zone Price) and the date, hour, and minute under "Display More Info".
If you do not want this information to appear in the received message along with the alert, you should set it to "Off".
Protected Highs & Lows [TFO]This indicator presents an alternative approach to identify Market Structure. The logic used is derived from learning material created by @DaveTeaches
When quantifying Market Structure, it is common to use fractal highs and lows to identify "significant" swing pivots. When price closes through these pivots, we may identify a Market Structure Shift (MSS) for reversals or a Break of Structure (BOS) for continuations. The main difference with this "protected" logic is in how we determine the pivots/levels that are utilized to determine a valid MSS or BOS.
Nonetheless, the significance of our swing pivots is still governed by the input Pivot Strength parameter, which requires valid swing pivots to be compared to this many bars to the left and right of them. This is an optional parameter as it is traditionally set to 1 by default.
When identifying a BOS: When price closes below a valid swing low, we look back from the current bar to find the highest high that was made in that range. This becomes our protected high; similarly, when price closes above a valid swing high, we look back from the current bar to find the lowest low that was made in that range, which then becomes our protected low.
Note these valid highs and lows are the first swing pivots created after a MSS/BOS. For example, when price makes a bullish BOS/MSS and then trades away, a swing high is formed. This first swing high is what needs to be traded through to see a valid BOS.
When identifying a MSS: If the current trend is bearish and we're looking for a bullish reversal, we would need price to close above the most recent protected high. When this happens, we still look back to find the lowest low that was created in that range, and make that our new protected low. Likewise when looking for a bearish reversal, price would need to close below the most recent protected low, which would then give us a new protected high as a result (the highest point in that range).
The Trend Candles option allows users to easily visualize the current state of Market Structure with bullish and bearish colors. Users may also show BOS and MSS labels if desired.
Show Protected Highs & Lows will annotate the protected highs and lows, just note that the labels themselves are plotted in the past due to the lookback function required to identify them.
Lastly, the Show Protected Trail option will draw a line to essentially indicate a trailing stop-like line to denote the most recent protected low (if bullish) or protected high (if bearish).
I am simply a student of Dave's concepts, so please feel free to leave feedback if you are familiar with his concepts and have suggestions/improvements.
Market Structure [TFO]The purpose of this indicator is to provide a simple approach to Market Structure. When price is closing over swing highs, we may categorize that as bullish structure; and when price is closing below swing lows, we may categorize that as bearish structure.
We can easily find swing highs and lows via the following built-in Pine Script functions:
ta.pivothigh()
ta.pivotlow()
We can pass in our Pivot Strength parameter to determine the size/significance of these pivots. The lowest value of 1 will validate a swing high when a given high is larger than that of 1 bar to the left and right of it. A pivot strength of 3, for example, would validate a swing high only when a high is larger than that of the 3 bars to the left and right of it, making it much more selective.
In any case, we can simply track the most recent swing highs and lows and check for when price through them. Enabling the Show Pivots option will mark all the swing highs and lows that are being considered for future structure breaks.
If the trend is bearish and we begin closing over swing highs, that would mark a Market Structure Shift (MSS). If the trend is already bullish and we are closing over swing highs, that would mark a Break of Structure (BOS), and vice versa for bearish conditions. MSS essentially signifies reversals in Market Structure while BOS signifies continuations.
Users may also create alerts for Any/Bull/Bear BOS or MSS. Simply create a new alert, select this indicator, and select the desired BOS or MSS criteria.
ICT Concepts [LuxAlgo]The ICT Concepts indicator regroups core concepts highlighted by trader and educator "The Inner Circle Trader" (ICT) into an all-in-one toolkit. Features include Market Structure (MSS & BOS), Order Blocks, Imbalances, Buyside/Sellside Liquidity, Displacements, ICT Killzones, and New Week/Day Opening Gaps.
🔶 SETTINGS
🔹 Mode
When Present is selected, only data of the latest 500 bars are used/visualized, except for NWOG/NDOG
🔹 Market Structure
Enable/disable Market Structure.
Length: will set the lookback period/sensitivity.
In Present Mode only the latest Market Structure trend will be shown, while in Historical Mode, previous trends will be shown as well:
You can toggle MSS/BOS separately and change the colors:
🔹 Displacement
Enable/disable Displacement.
🔹 Volume Imbalance
Enable/disable Volume Imbalance.
# Visible VI's: sets the amount of visible Volume Imbalances (max 100), color setting is placed at the side.
🔹 Order Blocks
Enable/disable Order Blocks.
Swing Lookback: Lookback period used for the detection of the swing points used to create order blocks.
Show Last Bullish OB: Number of the most recent bullish order/breaker blocks to display on the chart.
Show Last Bearish OB: Number of the most recent bearish order/breaker blocks to display on the chart.
Color settings.
Show Historical Polarity Changes: Allows users to see labels indicating where a swing high/low previously occurred within a breaker block.
Use Candle Body: Allows users to use candle bodies as order block areas instead of the full candle range.
Change in Order Blocks style:
🔹 Liquidity
Enable/disable Liquidity.
Margin: sets the sensitivity, 2 points are fairly equal when:
'point 1' < 'point 2' + (10 bar Average True Range / (10 / margin)) and
'point 1' > 'point 2' - (10 bar Average True Range / (10 / margin))
# Visible Liq. boxes: sets the amount of visible Liquidity boxes (max 50), this amount is for Sellside and Buyside boxes separately.
Colour settings.
Change in Liquidity style:
🔹 Fair Value Gaps
Enable/disable FVG's.
Balance Price Range: this is the overlap of latest bullish and bearish Fair Value Gaps.
By disabling Balance Price Range only FVGs will be shown.
Options: Choose whether you wish to see FVG or Implied Fair Value Gaps (this will impact Balance Price Range as well)
# Visible FVG's: sets the amount of visible FVG's (max 20, in the same direction).
Color settings.
Change in FVG style:
🔹 NWOG/NDOG
Enable/disable NWOG; color settings; amount of NWOG shown (max 50).
Enable/disable NDOG ; color settings; amount of NDOG shown (max 50).
🔹 Fibonacci
This tool connects the 2 most recent bullish/bearish (if applicable) features of your choice, provided they are enabled.
3 examples (FVG, BPR, OB):
Extend lines -> Enabled (example OB):
🔹 Killzones
Enable/disable all or the ones you need.
Time settings are coded in the corresponding time zones.
🔶 USAGE
By default, the indicator displays each feature relevant to the most recent price variations in order to avoid clutter on the chart & to provide a very similar experience to how a user would contruct ICT Concepts by hand.
Users can use the historical mode in the settings to see historical market structure/imbalances. The ICT Concepts indicator has various use cases, below we outline many examples of how a trader could find usage of the features together.
In the above image we can see price took out Sellside liquidity, filled two bearish FVGs, a market structure shift, which then led to a clean retest of a bullish FVG as a clean setup to target the order block above.
Price then fills the OB which creates a breaker level as seen in yellow.
Broken OBs can be useful for a trader using the ICT Concepts indicator as it marks a level where orders have now been filled, indicating a solidified level that has proved itself as an area of liquidity. In the image above we can see a trade setup using a broken bearish OB as a potential entry level.
We can see the New Week Opening Gap (NWOG) above was an optimal level to target considering price may tend to fill / react off of these levels according to ICT.
In the next image above, we have another example of various use cases where the ICT Concepts indicator hypothetically allow traders to find key levels & find optimal entry points using market structure.
In the image above we can see a bearish Market Structure Shift (MSS) is confirmed, indicating a potential trade setup for targeting the Balanced Price Range imbalance (BPR) below with a stop loss above the buyside liquidity.
Although what we are demonstrating here is a hindsight example, it shows the potential usage this toolkit gives you for creating trading plans based on ICT Concepts.
Same chart but playing out the history further we can see directly after price came down to the Sellside liquidity & swept below it...
Then by enabling IFVGs in the settings, we can see the IFVG retests alongside the Sellside & Buyside liquidity acting in confluence.
Which allows us to see a great bullish structure in the market with various key levels for potential entries.
Here we can see a potential bullish setup as price has taken out a previous Sellside liquidity zone and is now retesting a NWOG + Volume Imbalance.
Users also have the option to display Fibonacci retracements based on market structure, order blocks, and imbalance areas, which can help place limit/stop orders more effectively as well as finding optimal points of interest beyond what the primary ICT Concepts features can generate for a trader.
In the above image we can see the Fibonacci extension was selected to be based on the NWOG giving us some upside levels above the buyside liquidity.
🔶 DETAILS
Each feature within the ICT Concepts indicator is described in the sub sections below.
🔹 Market Structure
Market structure labels are constructed from price breaking a prior swing point. This allows a user to determine the current market trend based on the price action.
There are two types of Market Structure labels included:
Market Structure Shift (MSS)
Break Of Structure (BOS)
A MSS occurs when price breaks a swing low in an uptrend or a swing high in a downtrend, highlighting a potential reversal. This is often labeled as "CHoCH", but ICT specifies it as MSS.
On the other hand, BOS labels occur when price breaks a swing high in an uptrend or a swing low in a downtrend. The occurrence of these particular swing points is caused by retracements (inducements) that highlights liquidity hunting in lower timeframes.
🔹 Order Blocks
More significant market participants (institutions) with the ability of placing large orders in the market will generally place a sequence of individual trades spread out in time. This is referred as executing what is called a "meta-order".
Order blocks highlight the area where potential meta-orders are executed. Bullish order blocks are located near local bottoms in an uptrend while bearish order blocks are located near local tops in a downtrend.
When price mitigates (breaks out) an order block, a breaker block is confirmed. We can eventually expect price to trade back to this breaker block offering a new trade opportunity.
🔹 Buyside & Sellside Liquidity
Buyside / Sellside liquidity levels highlight price levels where market participants might place limit/stop orders.
Buyside liquidity levels will regroup the stoploss orders of short traders as well as limit orders of long traders, while Sellside liquidity levels will regroup the stoploss orders of long traders as well as limit orders of short traders.
These levels can play different roles. More informed market participants might view these levels as source of liquidity, and once liquidity over a specific level is reduced it will be found in another area.
🔹 Imbalances
Imbalances highlight disparities between the bid/ask, these can also be defined as inefficiencies, which would suggest that not all available information is reflected by the price and would as such provide potential trading opportunities.
It is common for price to "rebalance" and seek to come back to a previous imbalance area.
ICT highlights multiple imbalance formations:
Fair Value Gaps: A three candle formation where the candle shadows adjacent to the central candle do not overlap, this highlights a gap area.
Implied Fair Value Gaps: Unlike the fair value gap the implied fair value gap has candle shadows adjacent to the central candle overlapping. The gap area is constructed from the average between the respective shadow and the nearest extremity of their candle body.
Balanced Price Range: Balanced price ranges occur when a fair value gap overlaps a previous fair value gap, with the overlapping area resulting in the imbalance area.
Volume Imbalance: Volume imbalances highlight gaps between the opening price and closing price with existing trading activity (the low/high overlap the previous high/low).
Opening Gap: Unlike volume imbalances opening gaps highlight areas with no trading activity. The low/high does not reach previous high/low, highlighting a "void" area.
🔹 Displacement
Displacements are scenarios where price forms successive candles of the same sentiment (bullish/bearish) with large bodies and short shadows.
These can more technically be identified by positive auto correlation (a close to open change is more likely to be followed by a change of the same sign) as well as volatility clustering (large changes are followed by large changes).
Displacements can be the cause for the formation of imbalances as well as market structure, these can be caused by the full execution of a meta order.
🔹 Kill Zones
Killzones represent different time intervals that aims at offering optimal trade entries. Killzones include:
- New York Killzone (7:9 ET)
- London Open Killzone (2:5 ET)
- London Close Killzone (10:12 ET)
- Asian Killzone (20:00 ET)
🔶 Conclusion & Supplementary Material
This script aims to emulate how a trader would draw each of the covered features on their chart in the most precise representation to how it's actually taught by ICT directly.
There are many parallels between ICT Concepts and Smart Money Concepts that we released in 2022 which has a more general & simpler usage:
ICT Concepts, however, is more specifically aligned toward the community's interpretation of how to analyze price 'based on ICT', rather than displaying features to have a more classic interpretation for a technical analyst.
Zendog V3 backtest DCA bot 3commasMAJOR UPDATE:
- Update to Pinescript v5
- MAJOR refactor for the logic of how orders are placed. BO order is placed when the condition is first encountered and we are not in a deal.
The extra SO orders (if based on price movement) are all placed on the next candle after BO order, instead of each being placed one after another.
Take profit (if percentage) and Stop loss are placed on the first candle after BO order because if BO and TP are on the same candle TV does not execute properly.
These changes should improve strategy accuracy when multiple prices are hit by the same candle.
- NEW FEATURE: Support to Stop deal using an external indicator (i.e. stop long deal when RSI > 80)
- NEW FEATURE: Support to trigger Safety orders using an external indicator (i.e. trigger each additional SO when RSI < 10, regardless of price movement)
The price movement logic may be implemented in the indicator that plots start / end signals. The SO size is calculated using the configuration of steps.
- NEW FEATURE: Safety order command for 3commas bot. This is implemented using Add funds in the quote currency (for pair BTCUSDT the quote currency is USDT)
The SO size is calculated using the configuration of steps, for exact order size (and price) use the built-in Steps table.
- NEW FEATURE: Addition of extra columns to the steps table: Required price for TP, Required % change for TP, Required % change for BEP (Breakeven point)
- Update to steps table to remove prices when Safety orders are not based on % price change
- The code is opensource. I will not be able to sustain merges for the script, but feel free to use and develop your own version and ping me on discord to review them
and maybe include in the original script
SMC Structure IndicatorTitle: SMC Structures Indicator
Description:
The SMC Structures indicator is a powerful tool designed to identify and visualize key structural elements in price action, based on the principles of Smart Money Concepts (SMC). This indicator helps traders identify potential areas of support, resistance, and price reversals by highlighting significant market structures.
Key Features:
Structure Identification: The indicator automatically detects and marks important high and low structures in the market.
Break of Structure (BOS) Detection: It identifies and labels instances where previous structures are broken, indicating potential trend changes or continuations.
Change of Character (CHoCH) Detection: The indicator recognizes and marks Changes of Character, which are significant shifts in market behavior.
Customizable Visuals: Users can personalize the appearance of BOS and CHoCH markings, including colors, line styles, and widths.
Current Structure Display: The indicator can optionally show the current active structure, helping traders understand the immediate market context.
Historical Structure Tracking: Users can specify the number of historical structure breaks to display, allowing for a cleaner chart while maintaining relevant information.
Flexible Break Confirmation: The indicator offers the option to confirm structure breaks using either the candle body or wick, accommodating different trading styles.
Technical Details:
The indicator uses advanced algorithms to identify significant price structures based on local highs and lows.
It employs a lookback period of 10 bars for structure detection, ensuring relevance to current market conditions.
The code includes safeguards to handle different market phases and avoid false signals during ranging periods.
Customization Options:
Colors for Bullish and Bearish BOS and CHoCH markings
Line styles and widths for all structure markings
Number of historical breaks to display
Option to show or hide the current active structure
Choice between candle body or wick for structure break confirmation
Use Cases:
Trend Analysis: Identify the start of new trends or potential trend reversals.
Support and Resistance: Pinpoint key levels where price may react.
Trade Entry and Exit: Use structure breaks as potential entry or exit signals.
Market Context: Understand the broader market structure to make informed trading decisions.
Ayman Entry Signal – Ultimate PRO (Scalping Gold Settings)1. Overview
This indicator is a professional gold scalping tool built for TradingView using Pine Script v6.
It combines multiple price action and technical filters to generate high-probability Buy/Sell signals with built-in trade management features (TP1, TP2, SL, Break Even, Partial Close, Stats tracking).
It is optimized for XAUUSD but can be applied to other assets with proper setting adjustments.
2. Key Features
Multi-Condition Trade Signals – EMA trend, Break of Structure, Order Blocks, FVG, Liquidity Sweeps, Pin Bars, Higher Timeframe confirmation, Trend Cloud, SMA Cross, and ADX.
Full Trade Management – Auto-calculates lot size, SL, TP1, TP2, Break Even, Partial Close.
Dynamic Chart Drawing – Entry lines, SL/TP lines, trade boxes, and real-time PnL.
Statistics Panel – Tracks wins, losses, breakeven trades, and total PnL over selected dates.
Customizable Filters – All filters can be turned ON/OFF to match your strategy.
3. Main Inputs & Settings
Account Settings
Capital ($) – Total trading capital.
Risk Percentage (%) – Risk per trade.
TP to SL Ratio – Risk-to-reward ratio.
Value Per Point ($) – Value per pip/point for lot size calculation.
SL Buffer – Extra points added to SL to avoid stop hunts.
Take Profit Settings
TP1 % of Full Target – Fraction of TP1 compared to TP2.
Move SL to Entry after TP1? – Activates Break Even after TP1.
Break Even Buffer – Extra points when moving SL to BE.
Take Partial Close at TP1 – Option to close half at TP1.
Signal Filters
ATR Period – For SL/TP calculation buffer.
EMA Trend – Uses EMA 9/21 crossover for trend.
Break of Structure (BoS) – Requires structure break confirmation.
Order Block (OB) – Validates trades within OB zones.
Fair Value Gap (FVG) – Confirms trades inside FVGs.
Liquidity Sweep – Checks if liquidity zones are swept.
Pin Bar Confirmation – Uses candlestick patterns for extra confirmation.
Pin Bar Body Ratio – Controls strictness of Pin Bar filter.
Higher Timeframe Filters (HTF)
HTF EMA Confirmation – Confirms lower timeframe trades with higher timeframe trend.
HTF BoS – Confirms with higher timeframe structure break.
HTF Timeframe – Selects higher timeframe.
Advanced Filters
SuperTrend Filter – Confirms trades based on SuperTrend.
ADX Filter – Filters out low volatility periods.
SMA Cross Filter – Uses SMA 8/9 cross as filter.
Trend Cloud Filter – Uses EMA 50/200 as a cloud trend filter.
4. How It Works
Buy Signal Conditions
EMA 9 > EMA 21 (trend bullish)
Optional filters (BoS, OB, FVG, Liquidity Sweep, Pin Bar, HTF confirmations, ADX, SMA Cross, Trend Cloud) must pass if enabled.
When all active filters pass → Buy signal triggers.
Sell Signal Conditions
EMA 9 < EMA 21 (trend bearish)
Same filtering process but for bearish conditions.
When all active filters pass → Sell signal triggers.
5. Trade Execution & Management
When a signal triggers:
Lot size is auto-calculated based on risk % and SL distance.
SL is placed beyond recent swing high/low + ATR buffer.
TP1 and TP2 are calculated from the SL using the reward-to-risk ratio.
Break Even: If enabled, SL moves to entry price after TP1 is hit.
Partial Close: If enabled, half of the position closes at TP1.
Trade Exit: Full exit at TP2, SL hit, or partial close at TP1.
6. Chart Display
Entry Line – Shows entry price.
SL Line – Red dashed line at stop loss level.
TP1 Line – Lime dashed line for TP1.
TP2 Line – Green dashed line for TP2.
PnL Labels – Displays real-time profit/loss in $.
Trade Box – Visual area showing trade range.
Pin Bar Shapes – Optional, marks Pin Bars.
7. Statistics Panel
Stats Header – Shows “Stats”.
Total Trades
Wins
Losses
Breakeven Trades
Total PnL
Can be reset or filtered by date.
8. How to Use
Load the Indicator in TradingView.
Select Gold (XAUUSD) on your preferred scalping timeframe (1m, 5m, 15m).
Adjust settings:
Use default gold scalping settings for quick start.
Enable/disable filters according to your style.
Wait for a Buy/Sell alert.
Confirm visually that all desired conditions align.
Place trade with calculated lot size, SL, and TP levels shown on chart.
Let trade run – the indicator manages Break Even & Partial Close if enabled.
9. Recommended Timeframes
Scalping: 1m, 5m, 15m
Day Trading: 15m, 30m, 1H
Swing: 4H, Daily (adjust settings accordingly)