ICT MacrosThis script allows traders to visualize the range of time when a macro (an automated series of instructions/trades from large fund traders, executed by an algorithm) will likely occur in the market. It does this by drawing vertical lines and labels on the chart at these specific times:
(Macro Open) - 9:50 AM EST
(Macro Close) - 10:10 AM EST
(Macro Open) - 10:50 AM EST
(Macro Close) - 11:10 AM EST
(Macro Open) - 1:10 PM EST
(Macro Close) - 1:40 PM EST
(Macro Open) - 3:15 PM EST
(Macro Close) - 3:45 PM EST
The theory behind the use of these macros - is that the market will either seek buy side or sell side liquidity, or seek to rebalance price at a point of interest in between the open and close of the macro. Traders who follow this theory can use that information to anticipate how price might behave.
When a macro occurs, the script draws a vertical line on the chart using a dotted line style with a user-defined color. Additionally, a label is placed above the line to indicate whether it is a Macro Open or Macro Close event.
To preserve space, the labels are abbreviated on chart - "Macro Open" (M.O.) and "Macro Close" (M.C.) for both the morning and afternoon trading sessions. The labels may be turned on/off by the user.
The script also includes alerts that can notify traders when a macro occurs. These alerts can be set to go off once per bar close, and the alert message indicates the specific macro type and time.
This script is entirely open-source, meaning that traders can read the code and modify it as needed. Credit to the foundation of this script goes to TradingView user @rickyzcarroll for his open source Strat Assistant Hour Flip script. Important changes include the specific time changes and alert function.
Cerca negli script per "ict"
ICT - GAPs and Volume Imbalance
GAPs
Gaps are areas on chart where the price have moved sharply up or down, with no trading in between. Gaps often fill, but they don't have to.
Volume Imbalance
Volume imbalance - determined using 2 candles
Bullish Volume Imbalance - area between the close of 1st candle and the open of 2nd candle
Bearish Volume Imbalance - area between the close of 1st candle and the open of 2nd candle
How to use the indicator:-
When you find imbalance in volume or a GAP in the chart, you may expect price to rebalance it before continuation.
Importantly, GAPs/Imbalances do not always fill. Traders should never assume that a gap/imbalance will fill without understanding the reasons for the gap and monitoring trading activity around the gap.
Pair it with your current bias for better results.
ICT Killzones by MoziThe ICT Killzone and important times indicator.
It highlights:
London Killzone
New York Killzone
New York Lunch Hour
New York Day End Hour
Asian Range
Judas Swing Time
In addition to this, it highlights the US and UK holidays with a background color and a label, so that you don't miss any bank holiday and you are sitting in front of your charts and are wondering, why the chart is not moving ;-)
I manually draw vertical lines at specific times like 08:30 London, 09:30 London, 08:30 New York, 09:30 New York, 11:00 New York (Take Profit Time)
ICT Killzones by MoziThe ICT Killzone and important times indicator.
It highlights:
London Killzone
New York Killzone
New York Lunch Hour
New York Day End Rallye
Asian Range
Judas Swing Time
In addition to this, it highlights the US and UK holidays with a background color and a label, so that you don't miss any bank holiday and you are sitting in front of your charts and are wondering, why the chart is not moving ;-)
ICT NEW YORK MIDNIGHT OPEN AND 8.30 AM OPENTHIS SCRPT SHOWS NEW YORK MIDNIGHT OPEN PRICE AND 8.30 AM OPEN PRICE (AM SESSION)
you can use this script in forex, indices and your platform timezone should be exchange market time or new york time
ICT EverythingVersion 1.0
Global Settings
• Timezone Selection
• Hide Indicator Above Specified Time
Thematic Override
• Override Colors For Dark Theme ( Colors Set for White Theme by Default )
• Override Session Highlighting Color
Session Options
• Show Historical Sessions
• Enable/Disable Session Highlighting
• Session Specific Visibility
• Session's Crucial Time Vertical Lines w/ Options
NY Midnight Line Options
• Show Historical NY Midnight Vertical Lines
• Midnight Verticle Line Options
• Show Historical NY Midnight Price Lines
• Midnight Price Line Options
Opening Price Line Options
• New York 8:30 AM Price Line Settings
• Equities Open 9:30 AM Price Line Settings
• Option to Display Historical Price Lines
HTF Levels
• Weekly Open
• Monthly Open
label Settings
• Show/Hide Label Text
• Show/Hide Label
Day of Week
• Show Day of Week at the bottom of chart w/ Time Co-ordinates Selection
••• Message Me For Link to Frequently Updated Version of This Indicator •••
ICT - high low indicatorthis script is for new traders who are now getting into ICT trading, simply turn it on and it marks the previous 3 daily highs and lows, 3 weekly highs and lows, and the 3 monthly highs and lows.
ict newyork kill zone for Indian timethis is a indicator for ict New York kill zone for India standard time
Time-Based Fair Value Gaps (FVG) with Inversions (iFVG)Overview
The Time-Based Fair Value Gaps (FVG) with Inversions (iFVG) (ICT/SMT) indicator is a specialized tool designed for traders using Inner Circle Trader (ICT) methodologies. Inspired by LuxAlgo's Fair Value Gap indicator, this script introduces significant enhancements by integrating ICT principles, focusing on precise time-based FVG detection, inversion tracking, and retest signals tailored for institutional trading strategies. Unlike LuxAlgo’s general FVG approach, this indicator filters FVGs within customizable 10-minute windows aligned with ICT’s macro timeframes and incorporates ICT-specific concepts like mitigation, liquidity grabs, and session-based gap prioritization.
This tool is optimized for 1–5 minute charts, though probably best for 1 minute charts, identifying bullish and bearish FVGs, tracking their mitigation into inverted FVGs (iFVGs) as key support/resistance zones, and generating retest signals with customizable “Close” or “Wick” confirmation. Features like ATR-based filtering, optional FVG labels, mitigation removal, and session-specific FVG detection (e.g., first FVG in AM/PM sessions) make it a powerful tool for ICT traders.
Originality and Improvements
While inspired by LuxAlgo’s FVG indicator (credit to LuxAlgo for their foundational work), this script significantly extends the original concept by:
1. Time-Based FVG Detection: Unlike LuxAlgo’s continuous FVG identification, this script filters FVGs within user-defined 10-minute windows each hour (:00–:10, :10–:20, etc.), aligning with ICT’s emphasis on specific periods of institutional activity, such as hourly opens/closes or kill zones (e.g., New York 7:00–11:00 AM EST). This ensures FVGs are relevant to high-probability ICT setups.
2. Session-Specific First FVG Option: A unique feature allows traders to display only the first FVG in ICT-defined AM (9:30–10:00 AM EST) or PM (1:30–2:00 PM EST) sessions, reflecting ICT’s focus on initial market imbalances during key liquidity events.
3. ICT-Driven Mitigation and Inversion Logic: The script tracks FVG mitigation (when price closes through a gap) and converts mitigated FVGs into iFVGs, which serve as ICT-style support/resistance zones. This aligns with ICT’s view that mitigated gaps become critical reversal points, unlike LuxAlgo’s simpler gap display.
4. Customizable Retest Signals: Retest signals for iFVGs are configurable for “Close” (conservative, requiring candle body confirmation) or “Wick” (faster, using highs/lows), catering to ICT traders’ need for precise entry timing during liquidity grabs or Judas swings.
5. ATR Filtering and Mitigation Removal: An optional ATR filter ensures only significant FVGs are displayed, reducing noise, while mitigation removal declutters the chart by removing filled gaps, aligning with ICT’s principle that mitigated gaps lose relevance unless inverted.
6. Timezone and Timeframe Safeguards: A timezone offset setting aligns FVG detection with EST for ICT’s New York-centric strategies, and a timeframe warning alerts users to avoid ≥1-hour charts, ensuring accuracy in time-based filtering.
These enhancements make the script a distinct tool that builds on LuxAlgo’s foundation while offering ICT traders a tailored, high-precision solution.
How It Works
FVG Detection
FVGs are identified when a candle’s low is higher than the high of two candles prior (bullish FVG) or a candle’s high is lower than the low of two candles prior (bearish FVG). Detection is restricted to:
• User-selected 10-minute windows (e.g., :00–:10, :50–:60) to capture ICT-relevant periods like hourly transitions.
• AM/PM session first FVGs (if enabled), focusing on 9:30–10:00 AM or 1:30–2:00 PM EST for key market opens.
An optional ATR filter (default: 0.25× ATR) ensures only gaps larger than the threshold are displayed, prioritizing significant imbalances.
Mitigation and Inversion
When price closes through an FVG (e.g., below a bullish FVG’s bottom), the FVG is mitigated and becomes an iFVG, plotted as a support/resistance zone. iFVGs are critical in ICT for identifying reversal points where institutional orders accumulate.
Retest Signals
The script generates signals when price retests an iFVG:
• Close: Triggers when the candle body confirms the retest (conservative, lower noise).
• Wick: Triggers when the candle’s high/low touches the iFVG (faster, higher sensitivity). Signals are visualized with triangular markers (▲ for bullish, ▼ for bearish) and can trigger alerts.
Visualization
• FVGs: Displayed as colored boxes (green for bullish, red for bearish) with optional “Bull FVG”/“Bear FVG” labels.
• iFVGs: Shown as extended boxes with dashed midlines, limited to the user-defined number of recent zones (default: 5).
• Mitigation Removal: Mitigated FVGs/iFVGs are removed (if enabled) to keep the chart clean.
How to Use
Recommended Settings
• Timeframe: Use 1–5 minute charts for precision, avoiding ≥1-hour timeframes (a warning label appears if misconfigured).
• Time Windows: Enable :00–:10 and :50–:60 for hourly open/close FVGs, or use the “Show only 1st presented FVG” option for AM/PM session focus.
• ATR Filter: Keep enabled (multiplier 0.25–0.5) for significant gaps; disable on 1-minute charts for more FVGs during volatility.
• Signal Preference: Use “Close” for conservative entries, “Wick” for aggressive setups.
• Timezone Offset: Set to -5 for EST (or -4 for EDT) to align with ICT’s New York session.
Trading Strategy
1. Macro Timeframes: Focus on New York (7:00–11:00 AM EST) or London (2:00–5:00 AM EST) kill zones for high institutional activity.
2. FVG Entries: Trade bullish FVGs as support in uptrends or bearish FVGs as resistance in downtrends, especially in :00–:10 or :50–:60 windows.
3. iFVG Retests: Enter on retest signals (▲/▼) during liquidity grabs or Judas swings, using “Close” for confirmation or “Wick” for speed.
4. Session FVGs: Use the “Show only 1st presented FVG” option to target the first gap in AM/PM sessions, often tied to ICT’s market maker algorithms.
5. Risk Management: Combine with ICT concepts like order blocks or breaker blocks for confluence, and set stops beyond FVG/iFVG boundaries.
Alerts
Set alerts for:
• “Bullish FVG Detected”/“Bearish FVG Detected”: New FVGs in selected windows.
• “Bullish Signal”/“Bearish Signal”: iFVG retest confirmations.
Settings Description
• Show Last (1–100, default: 5): Number of recent iFVGs to display. Lower values reduce clutter.
• Show only 1st presented FVG : Limits FVGs to the first in 9:30–10:00 AM or 1:30–2:00 PM EST sessions (overrides time window checkboxes).
• Time Window Checkboxes: Enable/disable FVG detection in 10-minute windows (:00–:10, :10–:20, etc.). All enabled by default.
• Signal Preference: “Close” (default) or “Wick” for iFVG retest signals.
• Use ATR Filter: Enables ATR-based size filtering (default: true).
• ATR Multiplier (0–∞, default: 0.25): Sets FVG size threshold (higher values = larger gaps).
• Remove Mitigated FVGs: Removes filled FVGs/iFVGs (default: true).
• Show FVG Labels: Displays “Bull FVG”/“Bear FVG” labels (default: true).
• Timezone Offset (-12 to 12, default: -5): Aligns time windows with EST.
• Colors: Customize bullish (green), bearish (red), and midline (gray) colors.
Why Use This Indicator?
This indicator empowers ICT traders with a tool that goes beyond generic FVG detection, offering precise, time-filtered gaps and inversion tracking aligned with institutional trading principles. By focusing on ICT’s macro timeframes, session-specific imbalances, and customizable signal logic, it provides a clear edge for scalping, swing trading, or reversal setups in high-liquidity markets.
TrendCraft ICT SwiftEdge// The TrendCraft ICT SwiftEdge is a trend-following indicator that combines Simple Moving Averages (SMAs) with Inner Circle Trader (ICT) concepts, specifically Break of Structure (BOS) and Market Structure Shift (MSS), to generate precise buy and sell signals. This unique mashup leverages the strengths of trend confirmation through SMAs and market structure analysis via ICT to help traders identify high-probability trend entries. The indicator is designed to be intuitive, customizable, and suitable for traders of all levels seeking to align with market trends on various timeframes.
//
// ### What It Does
// The indicator plots two SMAs based on the high and low prices of candles to define the trend direction. It colors the SMAs and fills the area between them to visually indicate whether the price is in a bullish (above both SMAs), bearish (below both SMAs), or neutral (between SMAs) state. Simultaneously, it identifies BOS and MSS levels on a user-defined higher timeframe to confirm trend continuation or reversal points. Buy and sell signals are generated when the price closes above/below the latest BOS or MSS level (based on user preference) while also being correctly positioned relative to the SMAs, ensuring alignment with the trend.
//
// ### Why Combine SMAs and ICT?
// SMAs provide a reliable way to gauge trend direction by smoothing price data, but they can lag or generate false signals in choppy markets. ICT's BOS and MSS concepts address this by focusing on key market structure breaks, offering context for significant price movements. By requiring price to close beyond a BOS or MSS level and align with the SMA-defined trend, the TrendCraft ICT SwiftEdge filters out noise and enhances signal reliability. This combination creates a robust system that balances trend-following simplicity with structural market insights, making it ideal for trend traders.
//
// ### How to Use
// 1. **SMA Length**: Adjust the `SMA Length` (default: 20) to control the sensitivity of the SMAs. Shorter lengths react faster to price changes, while longer lengths provide smoother trends.
// 2. **Structure Timeframe**: Set the `Structure Timeframe` to a higher timeframe (e.g., "1H" on a 15M chart) to calculate BOS and MSS levels. This ensures structural signals are based on significant market moves.
// 3. **Chart Timeframe**: Select the `Chart Timeframe` to optimize pivot point calculations for your current chart (e.g., "30M" for a 30-minute chart).
// 4. **Signal Type**: Choose between "BOS" (default) for signals based on trend continuation breaks or "MSS" for signals based on potential reversal points (breakers).
// 5. **Display Options**: Enable/disable `Show Continuation (BOS)` and `Show Breaker (MSS)` to toggle the visibility of BOS and MSS lines. Customize their colors for better chart clarity.
//
// ### Signals
// - **Buy Signal**: Appears when the close price crosses above the latest BOS or MSS level (based on Signal Type) and is above both SMAs, indicating a bullish trend entry. Marked with a green "Buy" label.
// - **Sell Signal**: Appears when the close price crosses below the latest BOS or MSS level (based on Signal Type) and is below both SMAs, indicating a bearish trend entry. Marked with a red "Sell" label.
//
// ### Originality
// The TrendCraft ICT SwiftEdge stands out by integrating the trend-following reliability of SMAs with the structural precision of ICT's BOS and MSS. Unlike standalone SMA or ICT indicators, this script requires both trend alignment and structural confirmation, reducing false signals. The user-selectable Signal Type (BOS or MSS) adds versatility, allowing traders to adapt the indicator to trend-following or counter-trend strategies. Its dynamic timeframe adjustments and visual clarity make it a unique tool for traders seeking to capture trend entries with confidence.
//
// ### Notes
// - Ensure the `Structure Timeframe` is higher than your chart timeframe to avoid calculation issues.
// - Signals are generated only when the trend state changes to avoid redundant signals in the same trend direction.
// - Past performance is not indicative of future results. Always combine this indicator with other analysis and risk management techniques.
[KVA] ICT Dealing rangesNaive aproach of Dynamic Detection of Dealing Ranges:
The script dynamically identifies dealing ranges based on sequences of upward or downward price movements. It uses arrays to track the highest highs and lowest lows after detecting two consecutive up or down bars, a fundamental step towards understanding market structure and potential shifts in momentum.
ICT Concept: Order Blocks & Fair Value Gaps. This aspect can be linked to the identification of order blocks (bullish or bearish) and fair value gaps. Order blocks are essentially the last bearish or bullish candle before a significant price move, which this script could approximate by identifying the highs and lows of potential reversal zones.
Red and Green Ranges for Bullish and Bearish Movements:
The script separates these movements into red (bearish) and green (bullish) ranges, effectively categorizing potential areas of selling and buying pressure.
ICT Concept: Liquidity Pools. Red ranges could be indicative of areas where selling might occur, potentially leading to liquidity pools below these ranges. Conversely, green ranges might indicate potential buying pressure, with liquidity pools above. These areas are critical for ICT traders, as they often represent zones where price may return to "hunt" for liquidity.
Horizontal Lines for High and Low Points:
The indicator draws horizontal lines at the high and low points of these ranges, offering visual cues for significant levels.
ICT Concept: Breaker Blocks & Mitigation Sequences. The high and low points of these ranges can be seen as potential breaker blocks or areas for future mitigation sequences. In ICT terms, breaker blocks are areas where institutional orders have overwhelmed retail stop clusters, creating potential entry points for trend continuation or reversal. The high and low points marked by the indicator could serve as references for these sequences, where price might return to retest these levels.
Customizability and Historical Depth:
With inputs like rangePlot and maxBarsBack, the indicator allows for customization of the number of ranges to display and how far back in the chart history it looks to identify these ranges. This flexibility is crucial for tailoring the analysis to different trading strategies and timeframes.
ICT Concept: Market Structure Analysis. The ability to adjust the depth and number of ranges plotted caters to a detailed market structure analysis, an essential component of ICT methodology. Traders can adjust these parameters to better understand the distribution of buying and selling pressure over time and how actions have shaped price movements.
Twitter Model ICT [TradingFinder] MMXM ERL D + FVG + M15 MSS/SMT🔵 Introduction
The Twitter Model ICT is a trading approach based on ICT (Inner Circle Trader) models, focusing on price movement between external and internal liquidity in lower timeframes. This model integrates key concepts such as Market Structure Shift (MSS), Smart Money Technique (SMT) divergence, and CISD level break to identify precise entry points in the market.
The primary goal of this model is to determine key liquidity levels, such as the previous day’s high and low (PDH/PDL) and align them with the Fair Value Gap (FVG) in the 1-hour timeframe. The overall strategy involves framing trades around the 1H FVG and using the M15 Market Structure Shift (MSS) for entry confirmation.
The Twitter Model ICT is designed to utilize external liquidity levels, such as PDH/PDL, as key entry zones. The model identifies FVG in the 1-hour timeframe, which acts as a magnet for price movement. Additionally, traders confirm entries using M15 Market Structure Shift (MSS) and SMT divergence.
Bullish Twitter Model :
In a bullish setup, the price sweeps the previous day’s low (PDL), and after confirming reversal signals, buys are executed in internal liquidity zones. Conversely, in a bearish setup, the price sweeps the previous day’s high (PDH), and after confirming weakness signals, sells are executed.
Bearish Twitter Model :
In short setups, entries are only executed above the Midnight Open, while in long setups, entries are taken below the Midnight Open. Adhering to these principles allows traders to define precise entry and exit points and analyze price movement with greater accuracy based on liquidity and market structure.
🔵 How to Use
The Twitter Model ICT is a liquidity-based trading strategy that analyzes price movements relative to the previous day’s high and low (PDH/PDL) and Fair Value Gap (FVG). This model is applicable in both bullish and bearish directions and utilizes the 1-hour (1H) and 15-minute (M15) timeframes for entry confirmation.
The price first sweeps an external liquidity level (PDH or PDL) and then provides an entry opportunity based on Market Structure Shift (MSS) and SMT divergence. Additionally, the entry should be positioned relative to the Midnight Open, meaning long entries should occur below the Midnight Open and short entries above it.
🟣 Bullish Twitter Model
In a bullish setup, the price first sweeps the previous day’s low (PDL) and reaches an external liquidity level. Then, in the 1-hour timeframe (1H), a bullish Fair Value Gap (FVG) forms, which serves as the price target.
To confirm the entry, a Market Structure Shift (MSS) in the 15-minute timeframe (M15) should be observed, signaling a trend reversal to the upside. Additionally, SMT divergence with correlated assets can indicate weakness in selling pressure.
Under these conditions, a long position is taken below the Midnight Open, with a stop-loss placed at the lowest point of the recent bearish move. The price target for this trade is the FVG in the 1-hour timeframe.
🟣 Bearish Twitter Model
In a bearish setup, the price first sweeps the previous day’s high (PDH) and reaches an external liquidity level. Then, in the 1-hour timeframe (1H), a bearish Fair Value Gap (FVG) is identified, serving as the trade target.
To confirm entry, a Market Structure Shift (MSS) in the 15-minute timeframe (M15) should form, signaling a trend shift to the downside. If an SMT divergence is present, it can provide additional confirmation for the trade.
Once these conditions are met, a short position is taken above the Midnight Open, with a stop-loss placed at the highest level of the recent bullish move. The trade's price target is the FVG in the 1-hour timeframe.
🔵 Settings
Bar Back Check : Determining the return of candles to identify the CISD level.
CISD Level Validity : CISD level validity period based on the number of candles.
Daily Position : Determines whether only the first signal of the day is considered or if signals are evaluated throughout the entire day.
Session : Specifies in which trading sessions the indicator will be active.
Second Symbol : This setting allows you to select another asset for comparison with the primary asset. By default, "XAUUSD" (Gold) is set as the second symbol, but you can change it to any currency pair, stock, or cryptocurrency. For example, you can choose currency pairs like EUR/USD or GBP/USD to identify divergences between these two assets.
Divergence Fractal Periods : This parameter defines the number of past candles to consider when identifying divergences. The default value is 2, but you can change it to suit your preferences. This setting allows you to detect divergences more accurately by selecting a greater number of candles.
The indicator allows displaying sessions based on various time zones. The user can select one of the following options :
UTC (Coordinated Universal Time)
Local Time of the Session
User’s Local Time
Show Open Price : Displays the New York market opening price.
Show PDH / PDL : Displays the previous day’s high and low to identify potential entry points.
Show SMT Divergence : Displays lines and labels for bullish ("+SMT") and bearish ("-SMT") divergences.
🔵 Conclusion
The Twitter Model ICT is an effective approach for analyzing and executing trades in financial markets, utilizing a combination of liquidity principles, market structure, and SMT confirmations to identify optimal entry and exit points.
By analyzing the previous day’s high and low (PDH/PDL), Fair Value Gaps (FVG), and Market Structure Shift (MSS) in the 1H and M15 timeframes, traders can pinpoint liquidity-driven trade opportunities. Additionally, considering the Midnight Open level helps traders avoid random entries and ensures better trade placement.
By applying this model, traders can interpret market movements based on liquidity flow and structural changes, allowing them to fine-tune their trading decisions with higher precision. Ultimately, the Twitter Model ICT provides a structured and logical approach for traders who seek to trade based on liquidity behavior and trend shifts in the market.
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
Opening Range Gap + Std Dev [starclique]The ICT Opening Range Gap is a concept taught by Inner Circle Trader and is discussed in the videos: 'One Trading Setup For Life' and 2023 ICT Mentorship - Opening Range Gap Repricing Macro
ORGs, or Opening Range Gaps, are gaps that form only on the Regular Trading Hours chart.
The Regular Trading Hours gap occurs between 16:15 PM - 9:29 AM EST (UTC-4)
These times are considered overnight trading, so it is useful to filter the PA (price action) formed there.
The RTH option is only available for futures contracts and continuous futures from CME Group.
To change your chart to RTH, first things first, make sure you’re looking at a futures contract for an asset class, then on the bottom right of your chart, you’ll see ETH (by default) - Click on that, and change it to RTH.
Now your charts are filtering the price action that happened overnight.
To draw out your gap, use the Close of the 4:14 PM candle and the open of the 9:30 AM candle.
How is this concept useful?
Well, It can be used in many ways.
---
How To Use The ORG
One of the ways you can use the opening range gap is simply as support and resistance
If we extend out the ORG from the example above, we can see that there is a clean retest of the opening range gap high after breaking structure to the upside and showing acceptance outside of the gap after consolidating within it.
The ORG High (4:14 Candle Close in this case) was used as support.
We then see an expansion to the upside.
Another way to implement the ORG is by using it as a draw on liquidity (magnet for price)
In this example, if we looked to the left, there was a huge ORG to the downside, leaving a massive gap.
The market will want to rebalance that gap during the regular trading hours.
The market rallies higher, rejects, comes down to clear the current days ORG low, then closes.
That is one example of how you can combine liquidity & ICT market structure concepts with Opening Range Gaps to create a story in the charts.
Now let’s discuss standard deviations.
---
Standard Deviations
Standard Deviations are essentially projection levels for ranges / POIs (Point of Interests)
By this I mean, if you have a range, and you would like to see where it could potentially expand to, you’d place your fibonacci retracement tool on and high and low of the range, then use extension levels to find specific price points where price might reject from.
Since 0 and 1 are your Range High and Low respectively, your projection levels would be something like 1.5, 2, 2.5, and 3, for the extension from your 1 Fib Level, and -0.5, -1, -1.5, and -2 for your 0 Fib level.
The -1 and 2 level produce a 1:1 projection of your range low and high, meaning, if you expect price to expand as much as it did from the range low to range high, then you can project a -1 and 2 on your Fib, and it would show you what ICT calls “symmetrical price”
Now, how are standard deviations relevant here?
Well, if you’ve been paying attention to ICT’s recent videos, you would’ve caught that he’s recently started using Standard Deviation levels on breakers.
So my brain got going while watching his video on ORGs, and I decided to place the fib on the ORG high and low and see what it’d produce.
The results were very interesting.
Using this same example, if we place our fib on the ORG High and Low, and add some projection levels, we can see that we rejected right at the -2 Standard Deviation Level.
---
You can see that I also marked out the EQ (Equilibrium, 50%, 0.5 of Fib) of the ORG. This is because we can use this level as a take profit level if we’re using an old ORG as our draw.
In days like these, where the gap formed was within a consolidation, and it continued to consolidate within the ORG zone that we extended, we can use the EQ in the same way we’d use an EQ for a range.
If it’s showing acceptance above the EQ, we are bullish, and expect the high of the ORG to be tapped, and vice versa.
---
Using The Indicator
Here’s where our indicator comes in play.
To avoid having to do all this work of zooming in and marking out the close and open of the respective ORG candles, we created the Opening Range Gap + Standard Deviations Indicator, with the help of our dedicated Star Clique coder, a1tmaniac.
With the ORG + STD DEV indicator, you will be able to view ORG’s and their projections on the ETH (Electronic Trading Hours) chart.
---
Features
Range Box
- Change the color of your Opening Range Gap to your liking
- Enable or disable the box from appearing using the checkbox
Range Midline
- Change the color of your Opening Range Gap Equilibrium
- Enable or disable the midline from appearing using the checkbox
Std. Dev
- Add whichever standard deviation levels you’d like.
- By default, the indicator comes with 0.5, 1, 1.5, and 2 standard deviation levels.
- Ensure that you add a comma ( , ) in between each standard deviation level
- Enable or disable the standard deviations from appearing using the opacity of the color (change to 0%)
Labels / Offset
- Adjust the offset of the label for the Standard Deviations
- Enable or disable the Labels from appearing using the checkbox
Time
- Adjust the time used for the indicators range
- If you’d like to use this for a Session or ICT Killzone instead, adjust the time
- Adjust the timezone used for the time referenced
- Options are UTC, US (UTC-4, New York Local Time) or UK (UTC+1, London Time)
- By default, the indicator is set to US
Buyside & Sellside Liquidity [LuxAlgo]The Buyside & Sellside Liquidity indicator aims to detect & highlight the first and arguably most important concept within the ICT trading methodology, Liquidity levels.
🔶 SETTINGS
🔹 Liquidity Levels
Detection Length: Lookback period
Margin: Sets margin/sensitivity for a liquidity level detection
🔹 Liquidity Zones
Buyside Liquidity Zones: Enables display of the buyside liquidity zones.
Margin: Sets margin/sensitivity for the liquidity zone boundaries.
Color: Color option for buyside liquidity levels & zones.
Sellside Liquidity Zones: Enables display of the sellside liquidity zones.
Margin: Sets margin/sensitivity for the liquidity zone boundaries.
Color: Color option for sellside liquidity levels & zones.
🔹 Liquidity Voids
Liquidity Voids: Enables display of both bullish and bearish liquidity voids.
Label: Enables display of a label indicating liquidity voids.
🔹 Display Options
Mode: Controls the lookback length of detection and visualization, where Present assumes last 500 bars and Historical assumes all data available to the user
# Visible Levels: Controls the amount of the liquidity levels/zones to be visualized.
🔶 USAGE
Definitions of Liquidity refer to the availability of orders at specific price levels in the market, allowing transactions to occur smoothly.
In the context of Inner Circle Trader's teachings, liquidity mainly relates to stop losses or pending orders and liquidity level/pool, highlighting a concentration of buy or sell orders at specific price levels. Smart money traders, such as banks and other large institutions, often target these liquidity levels/pools to accumulate or distribute their positions.
There are two types of liquidity; Buyside liquidity and Sellside liquidity .
Buyside liquidity represents a level on the chart where short sellers will have their stops positioned, and Sellside liquidity represents a level on the chart where long-biased traders will place their stops.
These areas often act as support or resistance levels and can provide trading opportunities.
When the liquidity levels are breached at which many stop/limit orders are placed have been traded through, the script will create a zone aiming to provide additional insight to figure out the odds of the next price action.
Reversal: It’s common that the price may reverse course and head in the opposite direction, seeking liquidity at the opposite extreme.
Continuation: When the zone is also broken it is a sign for continuation price action.
It's worth noting that ICT concepts are specific to the methodology developed by Michael J. Huddleston and may not align with other trading approaches or strategies.
🔶 DETAILS
Liquidity voids are sudden changes in price when the price jumps from one level to another. Liquidity voids will appear as a single or a group of candles that are all positioned in the same direction. These candles typically have large real bodies and very short wicks, suggesting very little disagreement between buyers and sellers. The peculiar thing about liquidity voids is that they almost always fill up.
🔶 ALERTS
When an alert is configured, the user will have the ability to be notified in case;
Liquidity level is detected/updated.
Liquidity level is breached.
🔶 RELATED SCRIPTS
ICT-Concepts
ICT-Macros
Imbalance-Detector
London/NY Sessions + SMC Levels📜 Indicator Description: London/NY Sessions + SMC Levels
Overview: This indicator highlights the key trading sessions — London, New York, NY Lunch, and Asian Range — providing structured visual guides based on Smart Money Concepts (SMC) and ICT principles.
It dynamically plots:
Session Backgrounds and Boxes for London, NY, Lunch, and Asian sessions
Reference Levels for the High, Low, and Close from today, previous day, or weekly data
Midnight Open line for ICT-style power of three setups
Real-time alerts for session starts, session closes, and important price level crossings
Features:
🕰️ Session Visualization:
Toggle London, NY, Lunch, and Asian session ranges individually, with customizable colors and transparent backgrounds.
🔔 Built-in Alerts:
Alerts for:
Price crossing the previous day's high/low
Price crossing the Midnight Open
Start and end of major sessions (London, NY, Lunch, Asian)
🟩 Reference Levels:
Plot selectable session reference levels:
Today’s intraday High/Low/Close
Previous Day’s High/Low/Close
This Week’s or Previous Week’s levels for broader context.
🌙 Midnight Open:
Track the Midnight New York Open as a reference point for daily bias shifts.
🎯 Customizable Settings:
Choose your session time zones (UTC, New York, London, etc.)
Customize all border colors, background colors, and session hours.
Use Cases:
Identify killzones and optimal trade entry windows for Smart Money Concepts (SMC) and ICT strategies.
Monitor liquidity pool sweeps and session transitions.
Confirm or refine your intraday or swing trading setups by referencing session highs/lows.
Recommended For:
ICT traders
Smart Money Concepts (SMC) practitioners
Forex, indices, crypto, and futures traders focusing on session-based volatility patterns
Anyone wanting a clean, professional session mapping tool
📈
Designed to help you trade with session precision and Smart Money accuracy.
Integrates seamlessly into any ICT, Wyckoff, or Liquidity-based trading approach.
Power Of 3 ICT 01 [TradingFinder] AMD ICT & SMC Accumulations🔵 Introduction
The ICT Power of 3 (PO3) strategy, developed by Michael J. Huddleston, known as the Inner Circle Trader, is a structured approach to analyzing daily market activity. This strategy divides the trading day into three distinct phases: Accumulation, Manipulation, and Distribution.
Each phase represents a unique market behavior influenced by institutional traders, offering a clear framework for retail traders to align their strategies with market movements.
Accumulation (19:00 - 01:00 EST) takes place during low-volatility hours, as institutional traders accumulate orders. Manipulation (01:00 - 07:00 EST) involves false breakouts and liquidity traps designed to mislead retail traders. Finally, Distribution (07:00 - 13:00 EST) represents the active phase where significant market movements occur as institutions distribute their positions in line with the broader trend.
This indicator is built upon the Power of 3 principles to provide traders with a practical and visual tool for identifying these key phases. By using clear color coding and precise time zones, the indicator highlights critical price levels, such as highs and lows, helping traders to better understand market dynamics and make more informed trading decisions.
Incorporating the ICT AMD setup into daily analysis enables traders to anticipate market behavior, spot high-probability trade setups, and gain deeper insights into institutional trading strategies. With its focus on time-based price action, this indicator simplifies complex market structures, offering an effective tool for traders of all levels.
🔵 How to Use
The ICT Power of 3 (PO3) indicator is designed to help traders analyze daily market movements by visually identifying the three key phases: Accumulation, Manipulation, and Distribution.
Here's how traders can effectively use the indicator :
🟣 Accumulation Phase (19:00 - 01:00 EST)
Purpose : Identify the range-bound activity where institutional players accumulate orders.
Trading Insight : Avoid placing trades during this phase, as price movements are typically limited. Instead, use this time to prepare for the potential direction of the market in the next phases.
🟣 Manipulation Phase (01:00 - 07:00 EST)
Purpose : Spot false breakouts and liquidity traps that mislead retail traders.
Trading Insight : Observe the market for price spikes beyond key support or resistance levels. These moves often reverse quickly, offering high-probability entry points in the opposite direction of the initial breakout.
🟣 Distribution Phase (07:00 - 13:00 EST)
Purpose : Detect the main price movement of the day, driven by institutional distribution.
Trading Insight : Enter trades in the direction of the trend established during this phase. Look for confirmations such as breakouts or strong directional moves that align with broader market sentiment
🔵 Settings
Show or Hide Phases :mDecide whether to display Accumulation, Manipulation, or Distribution.
Adjust the session times for each phase :
Accumulation: 1900-0100 EST
Manipulation: 0100-0700 EST
Distribution: 0700-1300 EST
Modify Visualization : Customize how the indicator looks by changing settings like colors and transparency.
🔵 Conclusion
The ICT Power of 3 (PO3) indicator is a powerful tool for traders seeking to understand and leverage market structure based on time and price dynamics. By visually highlighting the three key phases—Accumulation, Manipulation, and Distribution—this indicator simplifies the complex movements of institutional trading strategies.
With its customizable settings and clear representation of market behavior, the indicator is suitable for traders at all levels, helping them anticipate market trends and make more informed decisions.
Whether you're identifying entry points in the Accumulation phase, navigating false moves during Manipulation, or capitalizing on trends in the Distribution phase, this tool provides valuable insights to enhance your trading performance.
By integrating this indicator into your analysis, you can better align your strategies with institutional movements and improve your overall trading outcomes.
Live ICT Manipulation Candle [London Session, DST]📌 Live ICT Manipulation Candle
🔍 What This Script Does:
This indicator highlights the most volatile ( manipulative ) candle during the London session, based on range and volume, in real-time. It is designed specifically for intraday traders who follow ICT ( Inner Circle Trader ) concepts.
Key Features:
Tracks and highlights the manipulation candle between 3:00 AM to 5:00 AM NY time, adjusted for daylight savings (DST).
Displays a colored box around the manipulation candle and optionally shows a "Manipulation" label ( see chart below ).
Works on 1m, 5m, or 15m charts only — ensures high accuracy and alignment with ICT intraday concepts.
Designed for clarity during live session development.
⚠️ Disclaimer & Transparency:
This script was previously removed by TradingView due to being published with protected ( closed ) source code. I apologize for that oversight.
If you're studying ICT concepts or trading the London session volatility, this script can help you visually anchor the key manipulation point each day!
The indicator doesn't put the circles on. I put them to show the key manipulation areas per London session.
Happy trading and stay sharp!
@TJT_Pro
Weekly Power 3Did you know there is a simple line you can place on your chart to immediately make the weeks price action more understandable? Its called the Weekly Open Line. And its the opening price of the trading week. It was created by The Inner Circle Trader (ICT) and incorporates another one of his concepts called Power 3.
The Weekly Power 3 indicator takes the idea of the Weekly Open Line and builds a suite of intelligent and dynamic tools around it that will immediately help the user to start understanding how price moves within the trading week context.
Features
Static Weekly Open Line
Intelligent Days of the Week Text
Dynamic Weekly High Line
Dynamic Weekly Low Line
Weekly High Candle Label (highest candle of the week)
Weekly Low Candle Label (lowest candle of the week)
Best Odds High of the Week Zone Line & Text
Best Odds Low of the Week Zone Line & Text
Components
The primary feature is a line that forms on the weekly open price and grows as the week progresses. Additionally, lines are created for the highest and lowest prices of the week so the weekly profile can be easily recognized. A dynamic label marks each weeks highest and lowest point. This will automatically move as prices expand throughout the week.
A very useful component of the Weekly Power 3 indicator is the Days of the Week text. Each Day of the Week text is displayed in the middle of each trading day and also the user can specify in the Settings whether to position the text at the high or low of the weeks price range. Additionally, there is a Buffer setting that allows the user to move the Days of the Week text up or down to prevent chart overlapping.
To help the user visualize the span of time with the best odds of forming the weekly highs or weekly lows, according to ICT, this indicator adds at static line and optional label into the charts future that projects the span from Tuesday’s London Open to Wednesday’s New York. Having a static line out in the future on your chart really helps to picture where price could be drawn to based solely around time of the week.
Premise
ICT says that the weekly open price is the most important level that price reacts to across the five days of a trading week. If the week profile is expected to be bullish then price many times goes below the weekly open line at the beginning of the week and above it later in the week (a.k.a Bullish Power 3). Consequently, if the week is anticipated to be a bearish week, price often times starts the week high and then goes lower throughout the week (a.k.a Bearish Power 3).
ICT always specifies that the weekly high or weekly low have the best odds of forming between the Tuesday’s London Open and Wednesday’s New York Open.
Inputs and Style
Like all scripts publish by Infinity Trading, everything in the indicator is customizable by the user. Every label, line, or text can be individually toggled ON or OFF so the user has complete control over the elements they want displayed on their chart. All of the lines can be individually adjusted by color, line style, or line width. The color and text color on the high and low of the week labels can be individually changed. The text in the chart (day of the week & best odds zones text) each have a “buffer” value. This allows the user to individually move the text up or down on the chart to declutter the chart. And lastly, the day of the week text can be positioned above or below the weeks price action and the text will dynamically move higher or lower as price expands throughout the week.
Previous weeks have all of the Weekly Power 3 markups so it's easy to study past price action and identify trends.
Gallery
View the weeks price action
View multiple weeks price action
Visualize future price action
FVG [TakingProphets]🧠 Purpose
This indicator is built for traders applying Inner Circle Trader (ICT) methodology. It detects and manages Fair Value Gaps (FVGs) — price imbalances that often act as future reaction zones. It also highlights New Day Opening Gaps (NDOGs) and New Week Opening Gaps (NWOGs) that frequently play a role in early-session price behavior.
📚 What is a Fair Value Gap?
A Fair Value Gap forms when price moves rapidly, skipping over a portion of the chart between three candles — typically between the high of the first candle and the low of the third. These zones are considered inefficient, meaning institutions may return to them later to:
-Rebalance unfilled orders
-Enter or scale into positions
-Engineer liquidity with minimal slippage
In ICT methodology, FVGs are seen as both entry zones and targets, depending on market structure and context.
⚙️ How It Works
-This script automatically identifies and manages valid FVGs using the following logic:
-Bullish FVGs: When the low of the current candle is above the high from two candles ago
-Bearish FVGs: When the high of the current candle is below the body of two candles ago
-Minimum Gap Filter: Gaps must be larger than 0.05% of price
-Combine Consecutive Gaps (optional): Merges adjacent gaps of the same type
-Consequent Encroachment Line (optional): Plots the midpoint of each gap
-NDOG/NWOG Tracking: Labels gaps created during the 5–6 PM session transition
-Automatic Invalidation: Gaps are removed once price closes beyond their boundary
🎯 Practical Use
-Use unmitigated FVGs as potential entry points or targets
-Monitor NDOG and NWOG for context around daily or weekly opens
-Apply the midpoint (encroachment) line for precise execution decisions
-Let the script handle cleanup — only active, relevant zones remain visible
🎨 Customization
-Control colors for bullish, bearish, and opening gaps
-Toggle FVG borders and midpoint lines
-Enable or disable combining of consecutive gaps
-Fully automated zone management, no manual intervention required
✅ Summary
This tool offers a clear, rules-based approach to identifying price inefficiencies rooted in ICT methodology. Whether used for intraday or swing trading, it helps traders stay focused on valid, active Fair Value Gaps while filtering out noise and maintaining chart clarity.
CISD [TakingProphets]🧠 Indicator Purpose:
The "CISD - Change in State of Delivery" is a precision tool designed for traders utilizing ICT (Inner Circle Trader) conecpets. It detects critical shifts in delivery conditions after liquidity sweeps — helping you spot true smart money activity and optimal trade opportunities. This script is especially valuable for traders applying liquidity concepts, displacement recognition, and market structure shifts at both intraday and swing levels.
🌟 What Makes This Indicator Unique:
Unlike basic trend-following or scalping tools, CISD operates through a two-phase smart money logic:
Liquidity Sweep Detection (sweeping Buyside or Sellside Liquidity).
State of Delivery Change Identification (through bearish or bullish displacement after the sweep).
It intelligently tracks candle sequences and only signals a CISD event after true displacement — offering a much deeper context than ordinary indicators.
⚙️ How the Indicator Works:
Swing Point Detection: Identifies recent pivot highs/lows to map Buyside Liquidity (BSL) and Sellside Liquidity (SSL) zones.
Liquidity Sweeps: Watches for price breaches of these liquidity points to detect institutional stop hunts.
Sequence Recognition: Finds series of same-direction candles before sweeps to mark institutional accumulation/distribution.
Change of Delivery Confirmation: Confirms CISD only after significant displacement moves price against the initial candle sequence.
Visual Markings: Automatically plots CISD lines and optional labels, customizable in color, style, and size.
🎯 How to Use It:
Identify Liquidity Sweeps: Watch for CISD levels plotted after a liquidity sweep event.
Plan Entries: Look for retracements into CISD lines for high-probability entries.
Manage Risk: Use CISD levels to refine your stop-loss and profit-taking zones.
Best Application:
After stop hunts during Killzones (London Open, New York AM).
As part of the Flow State Model: identify higher timeframe PD Arrays ➔ wait for lower timeframe CISD confirmation.
🔎 Underlying Concepts:
Liquidity Pools: Highs and lows cluster stop orders, attracting institutional sweeps.
Displacement: Powerful price moves post-sweep confirm smart money involvement.
Market Structure: CISD frequently precedes major Change of Character (CHoCH) or Break of Structure (BOS) shifts.
🎨 Customization Options:
Adjustable line color, width, and style (solid, dashed, dotted).
Optional label display with customizable color and sizing.
Line extension settings to keep CISD zones visible for future reference.
✅ Recommended for:
Traders studying ICT Smart Money Concepts.
Intraday scalpers and higher timeframe swing traders.
Traders who want to improve entries around liquidity sweeps and institutional displacement moves.
🚀 Bonus Tip:
For maximum confluence, pair this with the HTF POI, ICT Liquidity Levels, and HTF Market Structure indicators available at TakingProphets.com! 🔥
Range Projections [TFO]The purpose of this indicator is to see how often price reached certain standard deviations from a selected time range. The inspiration for this was to study ICT (Inner Circle Trader) concepts regarding the Central Bank Dealer’s Range (CBDR), which is 2:00 pm - 8:00 pm New York local time according to ICT Core Content. However, the idea and data collection could certainly be applied to any range of time.
The main settings of this indicator are session time, range type, and the standard deviation filter. The session time is the window of price that will be utilized for range projections. The range type can be either body or wick (on the current timeframe). The standard deviation filter is used to eliminate sessions whose ranges (from high to low) are greater than the desired/input number of standard deviations from all available session ranges.
In this example, the time range is set to 16:00 - 20:00, or the time between the New York session close and the Asia session open. Our standard deviations are set to 1, 2, 2.5, and 4. Now, by taking this session’s price range and extrapolating these extensions from the initial range, we can use these levels to see if and how price interacts with them before the next 16:00 - 20:00 session.
Furthermore, we can enable the Data Table to analyze how often price trades to these levels for the sessions that are deemed valid (determined by the standard deviation filter). This time our standard deviations are set to 1, 2, 3, and 4.
This concept can theoretically be applied to any window of time. ICT has mentioned that, in instances where the CBDR is too large, the Asia range may be used instead. We can observe that the indicator behaves the same way when we change the session to the Asia range, 20:00 - 00:00.