חפש סקריפטים עבור "fvg"
First presented FVG (w/stats) w/statistical hourly ranges & biasOverview
This indicator identifies the first Fair Value Gap (FVG) that forms during each hourly session and provides comprehensive statistical analysis based on 12 years of historical NASDAQ (NQ) data. It combines price action analysis with probability-based statistics to help traders make informed decisions.
⚠️ IMPORTANT - Compatibility
Market: This indicator is designed exclusively for NASDAQ futures (NQ/MNQ)
Timeframe: Statistical data is based on FVGs formed on the 5-minute timeframe
FVG Detection: Works on any timeframe, but use 5-minute for accuracy matching the statistical analysis
All hardcoded statistics are derived from 12 years of NQ historical data
What It Does
1. FVG Detection & Visualization
Automatically detects the first FVG (bullish or bearish) that forms each hour
Draws colored boxes around FVGs:
Blue boxes = Bullish FVG (gap up)
Red boxes = Bearish FVG (gap down)
FVG boxes extend to the end of the hour
Optional midpoint lines show the center of each FVG
Uses volume imbalance logic (outside prints) to refine FVG boundaries
2. Hourly Reference Lines
Vertical Delimiter: Marks the start of each hour
Hourly Open Line: Shows where the current hour opened
Expected Range Lines: Projects the anticipated high/low based on historical data
Choose between Mean (average) or Median (middle value) statistics
Upper range line (teal/green)
Lower range line (red)
All lines span exactly one hour from the moment it opens
Optional labels show price values at line ends
3. Real-Time Statistics Table
The table displays live data for the current hour only:
Hour: Current hour in 12-hour format (AM/PM)
FVG Status: Shows if a Bull FVG, Bear FVG, or no FVG has formed yet
Green background = Bullish FVG detected
Red background = Bearish FVG detected
1st 15min: Direction of the first 15 minutes (Bullish/Bearish/Neutral/Pending)
Continuation %: Historical probability that the hour continues in the first 15-minute direction
Color-coded: Green for bullish, red for bearish
Avg Range %: Expected percentage range for the current hour (based on 12-year mean)
FVG Effect %: Historical probability that FVG direction predicts hourly close direction
Shows BISI→Bull % for bullish FVGs
Shows SIBI→Bear % for bearish FVGs
Blank if no FVG has formed yet
Time Left: Countdown timer showing MM:SS remaining in the hour (updates in real-time)
Hourly Bias: Historical directional tendency (bullish % or bearish %)
H Open: Current hour's opening price
Exp Range: Projected price range (Low - High) based on historical average
Customization Options
Detection Settings:
Lower Timeframe Selection (15S, 1min, 5min) - controls FVG detection granularity
Display Settings:
FVG box colors (bullish/bearish)
Midpoint lines (show/hide, color, style)
Table Settings:
Position (9 locations: corners, edges, center)
Text size (Tiny, Small, Normal, Large)
Hourly Lines:
Toggle each line type on/off
Hour delimiter (color, width)
Open line (color, width, style)
Range lines (color, width, style)
Choose Mean or Median statistics for range calculation
Show/hide labels with customizable text size
How to Use
Apply to NQ futures chart (NQ1! or MNQ1!)
Set chart to 5-minute timeframe for optimal FVG detection matching the statistical data
Watch for the first FVG to form each hour
Reference the table for probability-based decision support:
High continuation % = strong directional bias
FVG Effect % shows reliability of the FVG signal
Time Left helps manage entries/exits within the hour
Use range lines as potential targets or reversal zones
Statistical Foundation
All statistics are derived from:
12 years of NASDAQ (NQ) historical data
Hourly analysis of FVG formation patterns
First 15-minute directional analysis
Mean and Median calculations for range expectations
Data encompasses 2,400+ samples per hour
Best Practices
✅ Use on NQ/MNQ futures only
✅ Best on 5-minute charts (matches statistical data)
✅ Combine FVG signals with continuation probabilities
✅ Use range lines as potential profit targets
✅ Watch the countdown timer for hour-end setups
❌ Do not use on other markets (statistics won't apply)
❌ Avoid using during low-liquidity hours (5PM ET has minimal data)
Technical Notes
Timezone: America/New_York (EST/EDT)
Weekend filtering: Automatically hides data during market closure
Updates in real-time on live bars
Maximum 500 boxes/lines for performance
FVG detection includes volume imbalance (body gap) refinement
Credits
Statistical analysis based on 12 years of NASDAQ historical data. FVG detection methodology follows ICT concepts with volume imbalance refinement.
Disclaimer: This indicator provides statistical analysis based on historical data. Past performance does not guarantee future results. Always use proper risk management.
Would you like me to adjust any section or add/remove anything?6-9 Session & Levels - Customizable Range Analysis Indicator
Description:
This indicator provides comprehensive session-based range analysis designed for intraday traders. It calculates and displays key levels based on a customizable session period (default 6:00-9:00 AM ET).
Core Features:
Sespastedthis is a summary for another indicator- i was hoping for something more like this in terms of content etc22:23Architected comprehensive indicator summary matching professional documentation style.The user wants me to rewrite the summary for their FVG indicator in a similar style to the example provided. The example is more structured, detailed, and professional. Let me create a comprehensive summary that follows that format:
Clear title
Description/Overview
Core Features (broken down into sections)
Input Settings Explained (detailed breakdown of all customization options)
How It Works section
Use Case
Note/Disclaimer
Let me make it thorough and match the style while being accurate to their indicator's functionality.Here's a detailed summary in that format:
Every Hour 1st FVG with Statistical Analysis - NASDAQ Hourly Trading Intelligence
Description:
This indicator identifies the first Fair Value Gap (FVG) that forms during each hourly session and provides comprehensive probability-based statistical analysis derived from 12 years of NASDAQ (NQ) historical data. It combines real-time FVG detection with hardcoded statistical probabilities to help intraday traders make informed decisions based on historical patterns and hourly price action dynamics.
IMPORTANT: This indicator is specifically calibrated for NASDAQ futures (NQ/MNQ) only. All statistical data is derived from 12 years of NQ historical analysis with FVGs detected on the 5-minute timeframe. Using this indicator on other markets will produce invalid statistical results.
Core Features:
FVG Detection & Visualization
Automatically detects and displays the first Fair Value Gap (bullish or bearish) that forms within each hourly session
Color-coded boxes mark FVG zones: Blue for bullish FVGs (gap up), Red for bearish FVGs (gap down)
FVG boxes extend precisely to the end of the hour boundary
Optional midpoint lines show the center point of each FVG
Uses volume imbalance logic (outside prints) to refine FVG boundaries beyond simple wick-to-wick gaps
Supports both chart timeframe detection and lower timeframe detection via request.security_lower_tf
Hourly Reference Lines
Vertical Hour Delimiter: Marks the exact start of each new hour with an extendable vertical line
Hourly Open Line: Displays the opening price of the current hour
Expected Range Lines: Projects anticipated high and low levels based on 12 years of statistical data
Choose between Mean (average) or Median (middle value) calculations
Upper range line shows expected high
Lower range line shows expected low
All lines span exactly one hour from open to close
Optional labels display exact price values at the end of each line
Real-Time Statistics Table
Displays comprehensive live data for the current hour only:
Hour: Current hour in 12-hour format (e.g., "9AM", "2PM")
FVG Status: Shows detection state with color coding
"None Yet" (white background) - No FVG detected
"Bull FVG" (green background) - Bullish FVG identified
"Bear FVG" (red background) - Bearish FVG identified
1st 15min: Direction of first 15 minutes (Bullish/Bearish/Neutral/Pending)
Continuation %: Historical probability that the hour closes in the direction of the first 15 minutes
Green background with up arrow (↑) for bullish continuation probability
Red background with down arrow (↓) for bearish continuation probability
Avg Range %: Expected percentage range for the current hour based on 12-year mean
FVG Effect %: Historical effectiveness of FVG directional prediction
Shows "BISI→Bull %" for bullish FVGs (gap up predicting bullish hourly close)
Shows "SIBI→Bear %" for bearish FVGs (gap down predicting bearish hourly close)
Displays blank if no FVG has formed yet
Time Left: Real-time countdown timer showing minutes and seconds remaining in the hour (MM:SS format)
Hourly Bias: Historical directional tendency showing bullish or bearish percentage bias
H Open: Current hour's opening price
Exp Range: Projected price range showing "Low - High" based on selected statistic (mean or median)
Input Settings Explained:
Detection Settings
Lower Timeframe: Select the base timeframe for FVG detection
Options: 15S (15 seconds), 1 (1 minute), 5 (5 minutes)
Recommendation: Use 5-minute to match the statistical data sample
The indicator uses this timeframe to scan for FVG patterns even when viewing higher timeframes
Display Settings
Bullish FVG Color: Set the color and transparency for bullish (upward) FVG boxes
Bearish FVG Color: Set the color and transparency for bearish (downward) FVG boxes
Show Midpoint Lines: Toggle horizontal lines at the center of each FVG box
Midpoint Line Color: Customize the midpoint line color
Midpoint Line Style: Choose between Solid, Dotted, or Dashed line styles
Table Settings
Table Position: Choose from 9 locations:
Top: Left, Center, Right
Middle: Left, Center, Right
Bottom: Left, Center, Right
Table Text Size: Select from Tiny, Small, Normal, or Large for readability on different screen sizes
Hourly Lines Settings
Show Hourly Lines: Master toggle for all hourly reference lines
Show Hour Delimiter: Toggle the vertical line marking each hour's start
Delimiter Color: Customize color and transparency
Delimiter Width: Set line thickness (1-5)
Show Hourly Open: Toggle the horizontal line at the hour's opening price
Open Line Color: Customize color
Open Line Width: Set thickness (1-5)
Open Line Style: Choose Solid, Dashed, or Dotted
Show Range Lines: Toggle the expected high/low projection lines
Range Statistic: Choose "Mean" (12-year average) or "Median" (12-year middle value)
Range High Color: Customize upper range line color and transparency
Range Low Color: Customize lower range line color and transparency
Range Line Width: Set thickness (1-5)
Range Line Style: Choose Solid, Dashed, or Dotted
Show Line Labels: Toggle price labels at the end of all horizontal lines
Label Text Size: Choose Tiny, Small, or Normal
How It Works:
FVG Detection Logic:
The indicator scans price action on the selected lower timeframe (default: 1-minute) looking for Fair Value Gaps using a 3-candle pattern:
Bullish FVG: Formed when candle 's high is below candle 's low, creating an upward gap
Bearish FVG: Formed when candle 's low is above candle 's high, creating a downward gap
The detection is refined using volume imbalance logic by checking for body gaps (outside prints) on both sides of the middle candle. This narrows the FVG zone to areas where bodies don't touch, indicating stronger imbalances.
Only the first FVG that forms during each hour is displayed. If a bullish FVG forms first, it takes priority. The FVG box is drawn from the formation time through to the end of the hour.
Statistical Analysis:
All probability statistics are hardcoded from 12 years (2,400+ samples per hour) of NASDAQ futures analysis:
First 15-Minute Direction: At 15 minutes into each hour, the indicator determines if price closed above, below, or equal to the hour's opening price
Continuation Probability: Historical analysis shows the likelihood that the hour closes in the same direction as the first 15 minutes
Example: If 9AM's first 15 minutes are bullish, there's a 60.1% chance the entire 9AM hour closes bullish (lowest continuation hour)
4PM shows the highest continuation at 86.1% for bullish first 15 minutes
FVG Effectiveness: Tracks how often the first FVG's direction correctly predicts the hourly close direction
BISI (Bullish Imbalance/Sell-side Inefficiency) → Bullish close probability
SIBI (Bearish Imbalance/Buy-side Inefficiency) → Bearish close probability
Range Expectations: Mean and median values represent typical price movement percentage for each hour
9AM and 10AM show the largest ranges (~0.6%)
5PM shows minimal range (~0.06%) due to low liquidity
Hourly Reference Lines:
When each new hour begins:
Vertical delimiter marks the hour's start
Hourly open line plots at the first bar's opening price
Range projection lines calculate expected high/low:
Upper Range = Hourly Open + (Range% / 100 × Hourly Open)
Lower Range = Hourly Open - (Range% / 100 × Hourly Open)
Lines extend exactly to the hour's end time
Labels appear at line endpoints showing exact prices
Real-Time Updates:
FVG Status: Updates immediately when the first FVG forms
First 15min Direction: Locked in at the 15-minute mark
Countdown Timer: Uses timenow to update every second
Table Statistics: Refresh on every bar close
Timezone Handling:
All times are in America/New_York (Eastern Time)
Automatically filters weekend periods (Saturday and Sunday before 6PM)
Hour detection accounts for daylight saving time changes
Use Cases:
Intraday Trading Strategy Development:
FVG Entry Signals: Use the first hourly FVG as a directional bias
Bullish FVG + High continuation % = Strong long setup
Bearish FVG + High continuation % = Strong short setup
First 15-Minute Breakout: Combine first 15-min direction with continuation probabilities
Wait for first 15 minutes to complete
If continuation % is above 70%, trade in that direction
Example: 4PM bullish first 15 min = 86.1% chance hour closes bullish
Range Targeting: Use expected high/low lines as profit targets or reversal zones
Price approaching mean high = potential resistance
Price approaching mean low = potential support
Compare mean vs median for different risk tolerance (median is more conservative)
Hour Selection: Focus trading on hours with:
High FVG effectiveness (11AM: 81.5% BISI→Bull)
High continuation rates (4PM: 86.1% bull continuation)
Avoid low-continuation hours like 9AM (60.1%)
Time Management: Use the countdown timer to:
Enter early in the hour when FVG forms
Exit before hour-end if no follow-through
Avoid late-hour entries with <15 minutes remaining
Statistical Edge Identification:
Compare current hour's FVG against historical effectiveness
Identify when first 15-min direction contradicts FVG direction (conflict = caution)
Use hourly bias to confirm or contradict FVG signals
Monitor if price stays within expected range or breaks out (outlier moves)
Risk Management:
Expected range lines provide logical stop-loss placement
FVG Effect % helps size positions (higher % = larger position)
Time Left countdown aids in time-based stop management
Avoid trading hours with neutral bias or low continuation rates
Statistical Foundation:
All embedded statistics are derived from:
12 years of NASDAQ futures (NQ) continuous contract data
5-minute timeframe FVG detection methodology
24 hours per day analysis (excluding weekends)
2,400+ samples per hour for robust statistical validity
America/New_York timezone for session alignment
Data includes:
Hourly range analysis (mean, median, standard deviation)
First 15-minute directional analysis
FVG formation frequency and effectiveness
Continuation probability matrices
Bullish/bearish bias percentages
Best Practices:
✅ Do:
Use exclusively on NASDAQ futures (NQ1! or MNQ1!)
Apply on 5-minute charts for optimal FVG detection matching statistical samples
Wait for first 15 minutes to complete before acting on continuation probabilities
Combine FVG signals with continuation % and FVG Effect % for confluence
Use expected range lines as initial profit targets
Monitor the countdown timer for time-based trade management
Focus on hours with high statistical edges (4PM, 11AM, 10AM)
❌ Don't:
Use on other markets (ES, RTY, YM, stocks, forex, crypto) - statistics will be invalid
Rely solely on FVG without confirming with continuation probabilities
Trade during low-liquidity hours (5PM shows only 0.06% average range)
Ignore the first 15-minute direction when it conflicts with FVG direction
Apply to timeframes significantly different from 5-minute for FVG detection
Use median range expectations aggressively (they're conservative)
Technical Implementation Notes:
Timezone: Fixed to America/New_York with automatic DST adjustment
Weekend Filtering: Automatically hides data Saturday and Sunday before 6PM ET
Performance: Maximum 500 boxes and 500 lines for optimal chart rendering
Update Frequency: Table updates on every bar close; timer updates every second using timenow
FVG Priority: Bullish FVGs take precedence when both form simultaneously
Lower Timeframe Detection: Uses request.security_lower_tf for accurate sub-chart-timeframe FVG detection
Precision: All price labels use format.mintick for appropriate decimal precision
Big thanks to @Trades-Dont-Lie for the FPFVG code in his excellent indicator that I've used here
FvgCalculations█ OVERVIEW
This library provides the core calculation engine for identifying Fair Value Gaps (FVGs) across different timeframes and for processing their interaction with price. It includes functions to detect FVGs on both the current chart and higher timeframes, as well as to check for their full or partial mitigation.
█ CONCEPTS
The library's primary functions revolve around the concept of Fair Value Gaps and their lifecycle.
Fair Value Gap (FVG) Identification
An FVG, or imbalance, represents a price range where buying or selling pressure was significant enough to cause a rapid price movement, leaving an "inefficiency" in the market. This library identifies FVGs based on three-bar patterns:
Bullish FVG: Forms when the low of the current bar (bar 3) is higher than the high of the bar two periods prior (bar 1). The FVG is the space between the high of bar 1 and the low of bar 3.
Bearish FVG: Forms when the high of the current bar (bar 3) is lower than the low of the bar two periods prior (bar 1). The FVG is the space between the low of bar 1 and the high of bar 3.
The library provides distinct functions for detecting FVGs on the current (Low Timeframe - LTF) and specified higher timeframes (Medium Timeframe - MTF / High Timeframe - HTF).
FVG Mitigation
Mitigation refers to price revisiting an FVG.
Full Mitigation: An FVG is considered fully mitigated when price completely closes the gap. For a bullish FVG, this occurs if the current low price moves below or touches the FVG's bottom. For a bearish FVG, it occurs if the current high price moves above or touches the FVG's top.
Partial Mitigation (Entry/Fill): An FVG is partially mitigated when price enters the FVG's range but does not fully close it. The library tracks the extent of this fill. For a bullish FVG, if the current low price enters the FVG from above, that low becomes the new effective top of the remaining FVG. For a bearish FVG, if the current high price enters the FVG from below, that high becomes the new effective bottom of the remaining FVG.
FVG Interaction
This refers to any instance where the current bar's price range (high to low) touches or crosses into the currently unfilled portion of an active (visible and not fully mitigated) FVG.
Multi-Timeframe Data Acquisition
To detect FVGs on higher timeframes, specific historical bar data (high, low, and time of bars at indices and relative to the higher timeframe's last completed bar) is required. The requestMultiTFBarData function is designed to fetch this data efficiently.
█ CALCULATIONS AND USE
The functions in this library are typically used in a sequence to manage FVGs:
1. Data Retrieval (for MTF/HTF FVGs):
Call requestMultiTFBarData() with the desired higher timeframe string (e.g., "60", "D").
This returns a tuple of htfHigh1, htfLow1, htfTime1, htfHigh3, htfLow3, htfTime3.
2. FVG Detection:
For LTF FVGs: Call detectFvg() on each confirmed bar. It uses high , low, low , and high along with barstate.isconfirmed.
For MTF/HTF FVGs: Call detectMultiTFFvg() using the data obtained from requestMultiTFBarData().
Both detection functions return an fvgObject (defined in FvgTypes) if an FVG is found, otherwise na. They also can classify FVGs as "Large Volume" (LV) if classifyLV is true and the FVG size (top - bottom) relative to the tfAtr (Average True Range of the respective timeframe) meets the lvAtrMultiplier.
3. FVG State Updates (on each new bar for existing FVGs):
First, check for overall price interaction using fvgInteractionCheck(). This function determines if the current bar's high/low has touched or entered the FVG's currentTop or currentBottom.
If interaction occurs and the FVG is not already mitigated:
Call checkMitigation() to determine if the FVG has been fully mitigated by the current bar's currentHigh and currentLow. If true, the FVG's isMitigated status is updated.
If not fully mitigated, call checkPartialMitigation() to see if the price has further entered the FVG. This function returns the newLevel to which the FVG has been filled (e.g., currentLow for a bullish FVG, currentHigh for bearish). This newLevel is then used to update the FVG's currentTop or currentBottom.
The calling script (e.g., fvgMain.c) is responsible for storing and managing the array of fvgObject instances and passing them to these update functions.
█ NOTES
Bar State for LTF Detection: The detectFvg() function relies on barstate.isconfirmed to ensure FVG detection is based on closed bars, preventing FVGs from being detected prematurely on the currently forming bar.
Higher Timeframe Data (lookahead): The requestMultiTFBarData() function uses lookahead = barmerge.lookahead_on. This means it can access historical data from the higher timeframe that corresponds to the current bar on the chart, even if the higher timeframe bar has not officially closed. This is standard for multi-timeframe analysis aiming to plot historical HTF data accurately on a lower timeframe chart.
Parameter Typing: Functions like detectMultiTFFvg and detectFvg infer the type for boolean (classifyLV) and numeric (lvAtrMultiplier) parameters passed from the main script, while explicitly typed series parameters (like htfHigh1, currentAtr) expect series data.
fvgObject Dependency: The FVG detection functions return fvgObject instances, and fvgInteractionCheck takes an fvgObject as a parameter. This UDT is defined in the FvgTypes library, making it a dependency for using FvgCalculations.
ATR for LV Classification: The tfAtr (for MTF/HTF) and currentAtr (for LTF) parameters are expected to be the Average True Range values for the respective timeframes. These are used, if classifyLV is enabled, to determine if an FVG's size qualifies it as a "Large Volume" FVG based on the lvAtrMultiplier.
MTF/HTF FVG Appearance Timing: When displaying FVGs from a higher timeframe (MTF/HTF) on a lower timeframe (LTF) chart, users might observe that the most recent MTF/HTF FVG appears one LTF bar later compared to its appearance on a native MTF/HTF chart. This is an expected behavior due to the detection mechanism in `detectMultiTFFvg`. This function uses historical bar data from the MTF/HTF (specifically, data equivalent to `HTF_bar ` and `HTF_bar `) to identify an FVG. Therefore, all three bars forming the FVG on the MTF/HTF must be fully closed and have shifted into these historical index positions relative to the `request.security` call from the LTF chart before the FVG can be detected and displayed on the LTF. This ensures that the MTF/HTF FVG is identified based on confirmed, closed bars from the higher timeframe.
█ EXPORTED FUNCTIONS
requestMultiTFBarData(timeframe)
Requests historical bar data for specific previous bars from a specified higher timeframe.
It fetches H , L , T (for the bar before last) and H , L , T (for the bar three periods prior)
from the requested timeframe.
This is typically used to identify FVG patterns on MTF/HTF.
Parameters:
timeframe (simple string) : The higher timeframe to request data from (e.g., "60" for 1-hour, "D" for Daily).
Returns: A tuple containing: .
- htfHigh1 (series float): High of the bar at index 1 (one bar before the last completed bar on timeframe).
- htfLow1 (series float): Low of the bar at index 1.
- htfTime1 (series int) : Time of the bar at index 1.
- htfHigh3 (series float): High of the bar at index 3 (three bars before the last completed bar on timeframe).
- htfLow3 (series float): Low of the bar at index 3.
- htfTime3 (series int) : Time of the bar at index 3.
detectMultiTFFvg(htfHigh1, htfLow1, htfTime1, htfHigh3, htfLow3, htfTime3, tfAtr, classifyLV, lvAtrMultiplier, tfType)
Detects a Fair Value Gap (FVG) on a higher timeframe (MTF/HTF) using pre-fetched bar data.
Parameters:
htfHigh1 (float) : High of the first relevant bar (typically high ) from the higher timeframe.
htfLow1 (float) : Low of the first relevant bar (typically low ) from the higher timeframe.
htfTime1 (int) : Time of the first relevant bar (typically time ) from the higher timeframe.
htfHigh3 (float) : High of the third relevant bar (typically high ) from the higher timeframe.
htfLow3 (float) : Low of the third relevant bar (typically low ) from the higher timeframe.
htfTime3 (int) : Time of the third relevant bar (typically time ) from the higher timeframe.
tfAtr (float) : ATR value for the higher timeframe, used for Large Volume (LV) FVG classification.
classifyLV (bool) : If true, FVGs will be assessed to see if they qualify as Large Volume.
lvAtrMultiplier (float) : The ATR multiplier used to define if an FVG is Large Volume.
tfType (series tfType enum from no1x/FvgTypes/1) : The timeframe type (e.g., types.tfType.MTF, types.tfType.HTF) of the FVG being detected.
Returns: An fvgObject instance if an FVG is detected, otherwise na.
detectFvg(classifyLV, lvAtrMultiplier, currentAtr)
Detects a Fair Value Gap (FVG) on the current (LTF - Low Timeframe) chart.
Parameters:
classifyLV (bool) : If true, FVGs will be assessed to see if they qualify as Large Volume.
lvAtrMultiplier (float) : The ATR multiplier used to define if an FVG is Large Volume.
currentAtr (float) : ATR value for the current timeframe, used for LV FVG classification.
Returns: An fvgObject instance if an FVG is detected, otherwise na.
checkMitigation(isBullish, fvgTop, fvgBottom, currentHigh, currentLow)
Checks if an FVG has been fully mitigated by the current bar's price action.
Parameters:
isBullish (bool) : True if the FVG being checked is bullish, false if bearish.
fvgTop (float) : The top price level of the FVG.
fvgBottom (float) : The bottom price level of the FVG.
currentHigh (float) : The high price of the current bar.
currentLow (float) : The low price of the current bar.
Returns: True if the FVG is considered fully mitigated, false otherwise.
checkPartialMitigation(isBullish, currentBoxTop, currentBoxBottom, currentHigh, currentLow)
Checks for partial mitigation of an FVG by the current bar's price action.
It determines if the price has entered the FVG and returns the new fill level.
Parameters:
isBullish (bool) : True if the FVG being checked is bullish, false if bearish.
currentBoxTop (float) : The current top of the FVG box (this might have been adjusted by previous partial fills).
currentBoxBottom (float) : The current bottom of the FVG box (similarly, might be adjusted).
currentHigh (float) : The high price of the current bar.
currentLow (float) : The low price of the current bar.
Returns: The new price level to which the FVG has been filled (e.g., currentLow for a bullish FVG).
Returns na if no new partial fill occurred on this bar.
fvgInteractionCheck(fvg, highVal, lowVal)
Checks if the current bar's price interacts with the given FVG.
Interaction means the price touches or crosses into the FVG's
current (possibly partially filled) range.
Parameters:
fvg (fvgObject type from no1x/FvgTypes/1) : The FVG object to check.
Its isMitigated, isVisible, isBullish, currentTop, and currentBottom fields are used.
highVal (float) : The high price of the current bar.
lowVal (float) : The low price of the current bar.
Returns: True if price interacts with the FVG, false otherwise.
FvgTypes█ OVERVIEW
This library serves as a foundational module for Pine Script™ projects focused on Fair Value Gaps (FVGs). Its primary purpose is to define and centralize custom data structures (User-Defined Types - UDTs) and enumerations that are utilized across various components of an FVG analysis system. By providing standardized types for FVG characteristics and drawing configurations, it promotes code consistency, readability, and easier maintenance within a larger FVG indicator or strategy.
█ CONCEPTS
The library introduces several key data structures (User-Defined Types - UDTs) and an enumeration to organize Fair Value Gap (FVG) related data logically. These types are central to the functioning of FVG analysis tools built upon this library.
Timeframe Categorization (`tfType` Enum)
To manage and differentiate FVGs based on their timeframe of origin, the `tfType` enumeration is defined. It includes:
`LTF`: Low Timeframe (typically the current chart).
`MTF`: Medium Timeframe.
`HTF`: High Timeframe.
This allows for distinct logic and visual settings to be applied depending on the FVG's source timeframe.
FVG Data Encapsulation (`fvgObject` UDT)
The `fvgObject` is a comprehensive UDT designed to encapsulate all pertinent information and state for an individual Fair Value Gap throughout its lifecycle. Instead of listing every field, its conceptual structure can be understood as holding:
Core Definition: The FVG's fundamental price levels (top, bottom) and its formation time (`startTime`).
Classification Attributes: Characteristics such as its direction (`isBullish`) and whether it qualifies as a Large Volume FVG (`isLV`), along with its originating timeframe category (`tfType`).
Lifecycle State: Current status indicators including full mitigation (`isMitigated`, `mitigationTime`), partial fill levels (`currentTop`, `currentBottom`), midline interaction (`isMidlineTouched`), and overall visibility (`isVisible`).
Drawing Identifiers: References (`boxId`, `midLineId`, `mitLineLabelId`, etc.) to the actual graphical objects drawn on the chart to represent the FVG and its components.
Optimization Cache: Previous-bar state values (`prevIsMitigated`, `prevCurrentTop`, etc.) crucial for optimizing drawing updates by avoiding redundant operations.
This comprehensive structure facilitates easy access to all FVG-related information through a single object, reducing code complexity and improving manageability.
Drawing Configuration (`drawSettings` UDT)
The `drawSettings` UDT centralizes all user-configurable parameters that dictate the visual appearance of FVGs across different timeframes. It's typically populated from script inputs and conceptually groups settings for:
General Behavior: Global FVG classification toggles (e.g., `shouldClassifyLV`) and general display rules (e.g., `shouldHideMitigated`).
FVG Type Specific Colors: Colors for standard and Large Volume FVGs, both active and mitigated (e.g., `lvBullColor`, `mitigatedBearBoxColor`).
Timeframe-Specific Visuals (LTF, MTF, HTF): Detailed parameters for each timeframe category, covering FVG boxes (visibility, colors, extension, borders, labels), midlines (visibility, style, color), and mitigation lines (visibility, style, color, labels, persistence after mitigation).
Contextual Information: The current bar's time (`currentTime`) for accurate positioning of time-dependent drawing elements and timeframe display strings (`tfString`, `mtfTfString`, `htfTfString`).
This centralized approach allows for extensive customization of FVG visuals and simplifies the management of drawing parameters within the main script. Such centralization also enhances the maintainability of the visual aspects of the FVG system.
█ NOTES
User-Defined Types (UDTs): This library extensively uses UDTs (`fvgObject`, `drawSettings`) to group related data. This improves code organization and makes it easier to pass complex data between functions and libraries.
Mutability and Reference Behavior of UDTs: When UDT instances are passed to functions or methods in other libraries (like `fvgObjectLib`), those functions might modify the fields of the passed object if they are not explicitly designed to return new instances. This is because UDTs are passed by reference and are mutable in Pine Script™. Users should be aware of this standard behavior to prevent unintended side effects.
Optimization Fields: The `prev_*` fields in `fvgObject` are crucial for performance optimization in the drawing logic. They help avoid unnecessary redrawing of FVG elements if their state or relevant settings haven't changed.
No Direct Drawing Logic: `FvgTypes` itself does not contain any drawing logic. It solely defines the data structures. The actual drawing and manipulation of these objects are handled by other libraries (e.g., `fvgObjectLib`).
Centralized Definitions: By defining these types in a separate library, any changes to the structure of FVG data or settings can be made in one place, ensuring consistency across all dependent scripts and libraries.
█ EXPORTED TYPES
fvgObject
fvgObject Represents a Fair Value Gap (FVG) object.
Fields:
top (series float) : The top price level of the FVG.
bottom (series float) : The bottom price level of the FVG.
startTime (series int) : The start time (timestamp) of the bar where the FVG formed.
isBullish (series bool) : Indicates if the FVG is bullish (true) or bearish (false).
isLV (series bool) : Indicates if the FVG is a Large Volume FVG.
tfType (series tfType) : The timeframe type (LTF, MTF, HTF) to which this FVG belongs.
isMitigated (series bool) : Indicates if the FVG has been fully mitigated.
mitigationTime (series int) : The time (timestamp) when the FVG was mitigated.
isVisible (series bool) : The current visibility status of the FVG, typically managed by drawing logic based on filters.
isMidlineTouched (series bool) : Indicates if the price has touched the FVG's midline (50% level).
currentTop (series float) : The current top level of the FVG after partial fills.
currentBottom (series float) : The current bottom level of the FVG after partial fills.
boxId (series box) : The drawing ID for the main FVG box.
mitigatedBoxId (series box) : The drawing ID for the box representing the partially filled (mitigated) area.
midLineId (series line) : The drawing ID for the FVG's midline.
mitLineId (series line) : The drawing ID for the FVG's mitigation line.
boxLabelId (series label) : The drawing ID for the FVG box label.
mitLineLabelId (series label) : The drawing ID for the mitigation line label.
testedBoxId (series box) : The drawing ID for the box of a fully mitigated (tested) FVG, if kept visible.
keptMitLineId (series line) : The drawing ID for a mitigation line that is kept after full mitigation.
prevIsMitigated (series bool) : Stores the isMitigated state from the previous bar for optimization.
prevCurrentTop (series float) : Stores the currentTop value from the previous bar for optimization.
prevCurrentBottom (series float) : Stores the currentBottom value from the previous bar for optimization.
prevIsVisible (series bool) : Stores the visibility status from the previous bar for optimization (derived from isVisibleNow passed to updateDrawings).
prevIsMidlineTouched (series bool) : Stores the isMidlineTouched status from the previous bar for optimization.
drawSettings
drawSettings A structure containing settings for drawing FVGs.
Fields:
shouldClassifyLV (series bool) : Whether to classify FVGs as Large Volume (LV) based on ATR.
shouldHideMitigated (series bool) : Whether to hide FVG boxes once they are fully mitigated.
currentTime (series int) : The current bar's time, used for extending drawings.
lvBullColor (series color) : Color for Large Volume Bullish FVGs.
mitigatedLvBullColor (series color) : Color for mitigated Large Volume Bullish FVGs.
lvBearColor (series color) : Color for Large Volume Bearish FVGs.
mitigatedLvBearColor (series color) : Color for mitigated Large Volume Bearish FVGs.
shouldShowBoxes (series bool) : Whether to show FVG boxes for the LTF.
bullBoxColor (series color) : Color for LTF Bullish FVG boxes.
mitigatedBullBoxColor (series color) : Color for mitigated LTF Bullish FVG boxes.
bearBoxColor (series color) : Color for LTF Bearish FVG boxes.
mitigatedBearBoxColor (series color) : Color for mitigated LTF Bearish FVG boxes.
boxLengthBars (series int) : Length of LTF FVG boxes in bars (if not extended).
shouldExtendBoxes (series bool) : Whether to extend LTF FVG boxes to the right.
shouldShowCurrentTfBoxLabels (series bool) : Whether to show labels on LTF FVG boxes.
shouldShowBoxBorder (series bool) : Whether to show a border for LTF FVG boxes.
boxBorderWidth (series int) : Border width for LTF FVG boxes.
boxBorderStyle (series string) : Border style for LTF FVG boxes (e.g., line.style_solid).
boxBorderColor (series color) : Border color for LTF FVG boxes.
shouldShowMidpoint (series bool) : Whether to show the midline (50% level) for LTF FVGs.
midLineWidthInput (series int) : Width of the LTF FVG midline.
midpointLineStyleInput (series string) : Style of the LTF FVG midline.
midpointColorInput (series color) : Color of the LTF FVG midline.
shouldShowMitigationLine (series bool) : Whether to show the mitigation line for LTF FVGs.
(Line always extends if shown)
mitLineWidthInput (series int) : Width of the LTF FVG mitigation line.
mitigationLineStyleInput (series string) : Style of the LTF FVG mitigation line.
mitigationLineColorInput (series color) : Color of the LTF FVG mitigation line.
shouldShowCurrentTfMitLineLabels (series bool) : Whether to show labels on LTF FVG mitigation lines.
currentTfMitLineLabelOffsetX (series float) : The horizontal offset value for the LTF mitigation line's label.
shouldKeepMitigatedLines (series bool) : Whether to keep showing mitigation lines of fully mitigated LTF FVGs.
mitigatedMitLineColor (series color) : Color for kept mitigation lines of mitigated LTF FVGs.
tfString (series string) : Display string for the LTF (e.g., "Current TF").
shouldShowMtfBoxes (series bool) : Whether to show FVG boxes for the MTF.
mtfBullBoxColor (series color) : Color for MTF Bullish FVG boxes.
mtfMitigatedBullBoxColor (series color) : Color for mitigated MTF Bullish FVG boxes.
mtfBearBoxColor (series color) : Color for MTF Bearish FVG boxes.
mtfMitigatedBearBoxColor (series color) : Color for mitigated MTF Bearish FVG boxes.
mtfBoxLengthBars (series int) : Length of MTF FVG boxes in bars (if not extended).
shouldExtendMtfBoxes (series bool) : Whether to extend MTF FVG boxes to the right.
shouldShowMtfBoxLabels (series bool) : Whether to show labels on MTF FVG boxes.
shouldShowMtfBoxBorder (series bool) : Whether to show a border for MTF FVG boxes.
mtfBoxBorderWidth (series int) : Border width for MTF FVG boxes.
mtfBoxBorderStyle (series string) : Border style for MTF FVG boxes.
mtfBoxBorderColor (series color) : Border color for MTF FVG boxes.
shouldShowMtfMidpoint (series bool) : Whether to show the midline for MTF FVGs.
mtfMidLineWidthInput (series int) : Width of the MTF FVG midline.
mtfMidpointLineStyleInput (series string) : Style of the MTF FVG midline.
mtfMidpointColorInput (series color) : Color of the MTF FVG midline.
shouldShowMtfMitigationLine (series bool) : Whether to show the mitigation line for MTF FVGs.
(Line always extends if shown)
mtfMitLineWidthInput (series int) : Width of the MTF FVG mitigation line.
mtfMitigationLineStyleInput (series string) : Style of the MTF FVG mitigation line.
mtfMitigationLineColorInput (series color) : Color of the MTF FVG mitigation line.
shouldShowMtfMitLineLabels (series bool) : Whether to show labels on MTF FVG mitigation lines.
mtfMitLineLabelOffsetX (series float) : The horizontal offset value for the MTF mitigation line's label.
shouldKeepMtfMitigatedLines (series bool) : Whether to keep showing mitigation lines of fully mitigated MTF FVGs.
mtfMitigatedMitLineColor (series color) : Color for kept mitigation lines of mitigated MTF FVGs.
mtfTfString (series string) : Display string for the MTF (e.g., "MTF").
shouldShowHtfBoxes (series bool) : Whether to show FVG boxes for the HTF.
htfBullBoxColor (series color) : Color for HTF Bullish FVG boxes.
htfMitigatedBullBoxColor (series color) : Color for mitigated HTF Bullish FVG boxes.
htfBearBoxColor (series color) : Color for HTF Bearish FVG boxes.
htfMitigatedBearBoxColor (series color) : Color for mitigated HTF Bearish FVG boxes.
htfBoxLengthBars (series int) : Length of HTF FVG boxes in bars (if not extended).
shouldExtendHtfBoxes (series bool) : Whether to extend HTF FVG boxes to the right.
shouldShowHtfBoxLabels (series bool) : Whether to show labels on HTF FVG boxes.
shouldShowHtfBoxBorder (series bool) : Whether to show a border for HTF FVG boxes.
htfBoxBorderWidth (series int) : Border width for HTF FVG boxes.
htfBoxBorderStyle (series string) : Border style for HTF FVG boxes.
htfBoxBorderColor (series color) : Border color for HTF FVG boxes.
shouldShowHtfMidpoint (series bool) : Whether to show the midline for HTF FVGs.
htfMidLineWidthInput (series int) : Width of the HTF FVG midline.
htfMidpointLineStyleInput (series string) : Style of the HTF FVG midline.
htfMidpointColorInput (series color) : Color of the HTF FVG midline.
shouldShowHtfMitigationLine (series bool) : Whether to show the mitigation line for HTF FVGs.
(Line always extends if shown)
htfMitLineWidthInput (series int) : Width of the HTF FVG mitigation line.
htfMitigationLineStyleInput (series string) : Style of the HTF FVG mitigation line.
htfMitigationLineColorInput (series color) : Color of the HTF FVG mitigation line.
shouldShowHtfMitLineLabels (series bool) : Whether to show labels on HTF FVG mitigation lines.
htfMitLineLabelOffsetX (series float) : The horizontal offset value for the HTF mitigation line's label.
shouldKeepHtfMitigatedLines (series bool) : Whether to keep showing mitigation lines of fully mitigated HTF FVGs.
htfMitigatedMitLineColor (series color) : Color for kept mitigation lines of mitigated HTF FVGs.
htfTfString (series string) : Display string for the HTF (e.g., "HTF").
Morning ORB FVG Trigger✅ Overview
Morning ORB FVG Trigger is a complete intraday trading framework built around:
A Morning Opening Range Breakout (ORB)
The first Fair Value Gap (FVG) after that breakout
Strict risk management and position sizing
Optional HTF trend filter (Daily / Weekly / Monthly)
Optional Daily ATR filter to avoid extreme days
The script is designed for futures / indices / FX on intraday charts up to 15 minutes and for traders who want a clean, mechanical entry framework with clear risk.
🧠 Core idea
Define a morning opening range (e.g. 09:30–09:45).
Wait for a clean breakout above/below that range.
After the breakout, wait for the first FVG in breakout direction,
confirmed by the next candle (no immediate full reclaim).
Use a chosen stop logic + R:R factor to build risk/reward boxes.
Calculate position size based on your account risk.
(Optional) Only take trades:
In the direction of the HTF EMA trend (D/W/M).
On days where the morning range is within a band of the Daily ATR.
You can also disable all signals/boxes and use the script just as a visual ORB tool.
⏰ 1. ORB / Morning Range
Inputs (Main section)
Morning Range Session
Time window of the opening range in exchange time
Example: 09:30–09:45 for a 15-minute ORB.
You can type custom ranges (e.g. 09:30–09:35 for a 5-minute ORB).
Risk/Reward (TP factor)
Multiplier for the take-profit distance relative to the stop.
2.0 = TP is 2× the stop distance
1.5 = TP is 1.5× the stop distance
Show ORB range
If enabled, draws:
ORB high/low lines
ORB labels (e.g. 15min ORB high / low)
Optional midline
Extend ORB lines to the right (bars)
How many bars to extend the ORB high/low horizontally beyond the ORB itself.
Trade box width (bars)
Horizontal width (in bars) of:
Red risk box (entry–stop)
Green reward box (entry–TP)
Implementation details
The ORB is always calculated on 1-minute data internally, so it stays precise even on 5m/15m charts.
The script only works on intraday timeframes up to 15 minutes.
📦 2. FVG Block
Group: “FVG”
Threshold %
Minimum size of an FVG in % of price.
0 = every FVG
Higher values = only larger gaps
Auto threshold (from volatility)
If enabled, the minimum FVG size is derived from historical volatility
instead of a fixed percentage.
Allow breakout FVG partly inside ORB
Off (default): the FVG must lie fully outside the ORB.
On: the breakout FVG itself may still overlap the ORB a bit,
as long as it is the first one attached to the breakout move.
Enable FVG entry signals, boxes & alerts
On: full system – FVG detection, entry labels, risk/TP boxes, alerts.
Off: no entries, no risk/TP boxes, no alerts.
You only get the ORB and (optionally) the HTF dashboard, so you can trade your own setups.
Entry mode
Entry mode (Mid / Edge / NextOpen)
Mid – Entry at the midpoint of the FVG.
Edge – Long at the upper FVG edge, short at the lower FVG edge.
NextOpen – No limit order in the gap. Entry is placed at the next bar open after FVG confirmation.
Edge offset (ticks)
Additional offset for Edge entries:
Long:
+ticks = a bit above the FVG (more conservative)
-ticks = deeper into the FVG (more aggressive)
Short:
+ticks = a bit below the FVG
-ticks = deeper into the FVG
FVG detection logic
Uses a LuxAlgo-style 3-candle FVG pattern (gap between candle 1 and 3).
Only one FVG is taken: the first valid FVG after the ORB breakout in breakup direction.
The FVG candle is the middle bar; the script:
Detects the FVG on the previous bar.
Waits for the current bar to confirm it:
Bullish: current low must stay above the lower FVG boundary
Bearish: current high must stay below the upper FVG boundary
Only then an entry signal is generated.
🛑 3. Stop Logic
Group: “Stop Logic”
Stop mode (PrevBar / Pivot / FVG Candle)
PrevBar – Stop at the low/high of the candle before the FVG
(tight/aggressive).
FVG Candle – Stop at the low/high of the FVG candle itself
(medium).
Pivot – Stop at the most recent swing high/low
using pivotLeft / pivotRight pivots (more conservative).
Ticks (stop buffer)
Offset (in ticks) from the selected stop level.
> 0 = further away (more room, more risk)
< 0 = closer (tighter stop)
Pivot left / Pivot right
Number of candles left/right to define a swing high/low
when using Pivot stop mode.
Typical intraday values: 2–3.
The script also sanity-checks the stop:
if the calculated stop would be invalid (e.g. above entry in a long), it moves it by a minimal distance (2 ticks) to keep a valid risk.
📈 4. HTF Trend Filter (Daily / Weekly / Monthly)
Group: “HTF Trend Filter”
Enable HTF trend filter
If enabled, trades are only allowed:
Long when at least 2 of D/W/M closes are above their EMA
Short when at least 2 of D/W/M closes are below their EMA
EMA length (D/W/M)
EMA length for all three higher timeframes (Daily, Weekly, Monthly).
This helps focus entries in the direction of the dominant higher-timeframe trend.
📊 5. ATR Filter (Daily)
Group: “ATR Filter (Daily)”
Use daily ATR filter
If enabled, the height of the ORB (ORB high – ORB low) must be within
a band of the Daily ATR to allow any signals.
Daily ATR length
ATR period on the Daily timeframe.
Min ORB size vs ATR
Lower bound:
Example: 0.3 → ORB must be at least 0.3 × Daily ATR
0.0 = no minimum.
Max ORB size vs ATR
Upper bound:
Example: 1.5 → ORB must be ≤ 1.5 × Daily ATR
0.0 = no maximum.
If the ORB is too small (choppy) or too large (exhausted move), no breakout or FVG signal will be generated on that day.
🧭 6. HTF Dashboard & Signal Labels
Group: “HTF Trend Dashboard”
Show HTF dashboard
Draws a small label at the top of the chart showing:
HTF Trend (EMA X)
D: UP/FLAT/DOWN
W: UP/FLAT/DOWN
M: UP/FLAT/DOWN
Dashboard position
Top Right, Top Center, Top Left – places the dashboard at the top.
Over Risk Info – no top dashboard; instead, the HTF trend info is shown as a label near the risk box when a new signal appears.
Lookback (bars) for top anchor
How many bars to use to determine the top price level for dashboard placement.
Show HTF trend above risk box on signal
Only relevant if Dashboard position = Over Risk Info.
When enabled, a small HTF label appears near the risk box for each new trade.
Signal label vertical offset (ticks)
Vertical spacing between risk info label and HTF label.
Minimum spacing HTF/Risk (ticks)
Ensures a minimum vertical distance so the two labels don’t overlap.
HTF signal label X offset (bars)
Horizontal offset (left/right) relative to the risk info label.
⏳ 7. ORB–FVG Filters (Session & Time Window)
Group: “ORB FVG Filter”
Only same session day
If enabled, FVG entries are only allowed on the same calendar day
as the ORB. When the date changes, all state & drawings are reset.
Limit hours after ORB
Enables a time window after the ORB end.
Trading window after ORB (hours)
Length of that window in hours.
Example: 2.0 → FVG signals only in the first 2 hours after ORB end.
💰 8. Risk Management & Position Sizing
Group: “Risk Management”
Calculate position size
If enabled, the script computes suggested mini and micro contract size for you.
Account size
Your trading account size (in account currency).
Risk mode
Percent – risk is a % of account size (Account risk %).
Fixed amount – risk is a fixed dollar amount (Fixed risk ($)).
Account risk %
Risk per trade as a percentage of account size (e.g. 1.0 for 1%).
Fixed risk ($)
Fixed risk per trade in dollars when using Fixed amount mode.
Micro factor (vs mini)
How much a micro contract is worth relative to a mini.
Example:
0.1 → one micro moves 1/10 of one mini.
Risk Info label
For each new trade, a label is shown above the boxes with:
Stop distance in price and $ risk per mini
Max risk allowed for the trade
Suggested mini and micro size
Text like:
Suggested: 2 mini
Suggested: 5 micro
or Suggested: no trade
This makes the script especially useful for prop-firm rules or strict risk discipline.
🎨 9. Visual Style (Boxes, Labels, ORB Lines)
Group: “Box & Label Style (Trade)”
Label font size (Very small, Small, Normal, Large)
Entry label BG / text color
Stop label BG / text color
TP label BG / text color
Risk info BG / text color
Risk box color (entry–stop zone)
Reward box color (entry–TP zone)
Group: “ORB Style”
ORB high line color
ORB low line color
ORB line width
ORB label font size
ORB label background color
ORB label text color
Show ORB midline
ORB midline color / width / style (Solid / Dashed / Dotted)
⚠️ 10. Alerts
Group: “Alerts”
The script defines three alert conditions:
Long entry FVG breakout
Triggered when a new long signal appears.
Short entry FVG breakout
Triggered when a new short signal appears.
FVG entry (long/short)
Generic alert for any new signal (long or short).
To use them:
Add the indicator to the chart.
Open the Alerts dialog → “Condition”.
Select this script and one of the alert conditions.
Set your preferred expiration and notification settings.
Alerts only fire when Enable FVG entry signals, boxes & alerts is on.
🧩 11. How the trading logic flows (summary)
Build ORB on 1-minute data during the selected session.
Optionally reject the day if ORB is outside the ATR bounds.
Wait for a breakout (close above high or below low), respecting HTF trend filter.
After breakout, look for the first valid FVG in that direction:
Outside the ORB (unless breakout FVG allowed inside)
Confirmed by the next candle (no full reclaim)
Once confirmed:
Compute entry, stop, target.
Draw risk/reward boxes and all labels.
Optionally show HTF signal label over the risk info.
Trigger alerts if enabled.
If you disable FVG signals, only steps 1–3 (plus dashboard) are effectively active.
⚠️ 12. Notes & Disclaimer
Script is intended for intraday trading up to 15-minute timeframes.
All signals are mechanical and do not guarantee profitability.
Always backtest and forward-test on your own data before risking real money.
This script is for educational purposes only and is not financial advice.
🚀 Quick-start guide
Add the script to your chart
Use an intraday timeframe ≤ 15 minutes (1m, 3m, 5m, 15m).
Works best on liquid indices, futures, FX and large-cap stocks.
Set the Morning Range
In “Morning Range Session” choose the exchange’s opening window.
Examples
US index futures (CME): 08:30–08:45 or 08:30–08:35
US stocks (NYSE/Nasdaq): 09:30–09:45 or 09:30–09:35
The ORB is always calculated on 1-minute data internally, so the range stays accurate on higher intraday charts.
Keep the default filters at first
HTF Trend Filter: ON
EMA length = 20
This will only allow trades in the direction of the dominant D/W/M trend.
ATR Filter: OFF (optional; you can enable later once you’re comfortable).
Use the full trade system
In the FVG group leave
“Enable FVG entry signals, boxes & alerts” = ON
Entry mode: Mid
Stop mode: FVG Candle or PrevBar
Risk/Reward: 2.0 as a starting point.
Set your risk
Turn on “Calculate position size”.
Enter your Account size and choose either:
Risk mode = Percent (e.g. 1.0 = 1% per trade), or
Risk mode = Fixed amount (e.g. $250 per trade).
The risk info label will show:
Stop distance in price and $/contract
Max allowed risk
Suggested mini and micro contract size.
Enable alerts (optional)
Open the Alerts dialog → Condition: this script.
Choose one of:
Long entry FVG breakout
Short entry FVG breakout
FVG entry (long/short)
Choose “Once per bar” or “Once per bar close”, and your preferred notification type.
Replay & journal
Use the TradingView bar replay tool to step through past days.
Focus on:
How the ORB defines the structure.
How the first confirmed FVG outside the ORB behaves.
Whether the risk/TP levels fit your own style and product.
🎛 Recommended settings & profiles
These are starting points, not rules. Always adapt to the instrument and your own risk tolerance.
1. Conservative / Trend-following
Timeframe: 5m or 15m
Morning Range Session: 15-minute ORB around the cash or futures open
FVG
Threshold %: 0.05–0.1 (filter out very small gaps)
Auto threshold: OFF (keep it simple)
Allow breakout FVG partly inside ORB: OFF
Enable FVG entry signals/boxes/alerts: ON
Entry mode: Mid
Stop Logic
Stop mode: Pivot
Pivot left/right: 2–3
Stop buffer: +1–2 ticks
HTF Trend Filter
Enabled: ON
EMA length: 20
ATR Filter
Enabled: ON
Daily ATR length: 14
Min ORB vs ATR: 0.3–0.4
Max ORB vs ATR: 1.2–1.5
Risk Management
Risk mode: Percent
Account risk: 0.5–1.0%
Idea: Only trade when the higher-timeframe trend supports the move and the opening range is of a “normal” size for the current volatility.
2. Balanced / Intraday directional
Timeframe: 3m or 5m
FVG
Threshold %: 0.02–0.05
Auto threshold: ON (lets the script adapt to volatility)
Allow breakout FVG partly inside ORB: ON
(first breakout FVG may partly sit inside the ORB)
Entry mode: Edge
Edge offset (ticks): 0 or +1
Stop Logic
Stop mode: FVG Candle
Stop buffer: 0–1 ticks
HTF Trend Filter
Enabled: ON
ATR Filter
Enabled: OFF (optional)
Risk Management
Risk mode: Percent
Account risk: 1.0–1.5% (if this fits your plan)
Idea: Slightly more aggressive entries at the gap edge, still aligned with HTF trend, but with more flexibility on ATR.
3. Aggressive / Scalping around the ORB
Timeframe: 1m or 3m
FVG
Threshold %: 0.0–0.02
Auto threshold: ON
Allow breakout FVG partly inside ORB: ON
Entry mode: NextOpen or Edge with a negative offset (deeper into the gap)
Stop Logic
Stop mode: PrevBar
Stop buffer: 0 or -1 tick
HTF Trend Filter
Enabled: OFF (or ON but treat as soft guidance)
ATR Filter
Enabled: OFF
Risk Management
Risk mode: Percent
Account risk: lower, e.g. 0.25–0.5% per trade
Idea: More trades and tighter stops. Best for experienced traders who understand the limitations of scalping and whipsaw risk.
Final reminder
All of these are templates, not guarantees:
Always check how the system behaves on your market and session.
Start on replay and demo before trading real money.
Adjust filters (HTF, ATR, thresholds) until the signals fit your personal approach.
FvgPanel█ OVERVIEW
This library provides functionalities for creating and managing a display panel within a Pine Script™ indicator. Its primary purpose is to offer a structured way to present Fair Value Gap (FVG) information, specifically the nearest bullish and bearish FVG levels across different timeframes (Current, MTF, HTF), directly on the chart. The library handles the table's structure, header initialization, and dynamic cell content updates.
█ CONCEPTS
The core of this library revolves around presenting summarized FVG data in a clear, tabular format. Key concepts include:
FVG Data Aggregation and Display
The panel is designed to show at-a-glance information about the closest active FVG mitigation levels. It doesn't calculate these FVGs itself but relies on the main script to provide this data. The panel is structured with columns for timeframes (TF), Bullish FVGs, and Bearish FVGs, and rows for "Current" (LTF), "MTF" (Medium Timeframe), and "HTF" (High Timeframe).
The `panelData` User-Defined Type (UDT)
To facilitate the transfer of information to be displayed, the library defines a UDT named `panelData`. This structure is central to the library's operation and is designed to hold all necessary values for populating the panel's data cells for each relevant FVG. Its fields include:
Price levels for the nearest bullish and bearish FVGs for LTF, MTF, and HTF (e.g., `nearestBullMitLvl`, `nearestMtfBearMitLvl`).
Boolean flags to indicate if these FVGs are classified as "Large Volume" (LV) (e.g., `isNearestBullLV`, `isNearestMtfBearLV`).
Color information for the background and text of each data cell, allowing for conditional styling based on the FVG's status or proximity (e.g., `ltfBullBgColor`, `mtfBearTextColor`).
The design of `panelData` allows the main script to prepare all display-related data and styling cues in one object, which is then passed to the `updatePanel` function for rendering. This separation of data preparation and display logic keeps the library focused on its presentation task.
Visual Cues and Formatting
Price Formatting: Price levels are formatted to match the instrument's minimum tick size using an internal `formatPrice` helper function, ensuring consistent and accurate display.
Large FVG Icon: If an FVG is marked as a "Large Volume" FVG in the `panelData` object, a user-specified icon (e.g., an emoji) is prepended to its price level in the panel, providing an immediate visual distinction.
Conditional Styling: The background and text colors for each FVG level displayed in the panel can be individually controlled via the `panelData` object, enabling the main script to implement custom styling rules (e.g., highlighting the overall nearest FVG across all timeframes).
Handling Missing Data: If no FVG data is available for a particular cell (i.e., the corresponding level in `panelData` is `na`), the panel displays "---" and uses a specified background color for "Not Available" cells.
█ CALCULATIONS AND USE
Using the `FvgPanel` typically involves a two-stage process: initialization and dynamic updates.
Step 1: Panel Creation
First, an instance of the panel table is created once, usually during the script's initial setup. This is done using the `createPanel` function.
Call `createPanel()` with parameters defining its position on the chart, border color, border width, header background color, header text color, and header text size.
This function initializes the table with three columns ("TF", "Bull FVG", "Bear FVG") and three data rows labeled "Current", "MTF", and "HTF", plus a header row.
Store the returned `table` object in a `var` variable to persist it across bars.
// Example:
var table infoPanel = na
if barstate.isfirst
infoPanel := panel.createPanel(
position.top_right,
color.gray,
1,
color.new(color.gray, 50),
color.white,
size.small
)
Step 2: Panel Updates
On each bar, or whenever the FVG data changes (typically on `barstate.islast` or `barstate.isrealtime` for efficiency), the panel's content needs to be refreshed. This is done using the `updatePanel` function.
Populate an instance of the `panelData` UDT with the latest FVG information. This includes setting the nearest bullish/bearish mitigation levels for LTF, MTF, and HTF, their LV status, and their desired background and text colors.
Call `updatePanel()`, passing the persistent `table` object (from Step 1), the populated `panelData` object, the icon string for LV FVGs, the default text color for FVG levels, the background color for "N/A" cells, and the general text size for the data cells.
The `updatePanel` function will then clear previous data and fill the table cells with the new values and styles provided in the `panelData` object.
// Example (inside a conditional block like 'if barstate.islast'):
var panelData fvgDisplayData = panelData.new()
// ... (logic to populate fvgDisplayData fields) ...
// fvgDisplayData.nearestBullMitLvl = ...
// fvgDisplayData.ltfBullBgColor = ...
// ... etc.
if not na(infoPanel)
panel.updatePanel(
infoPanel,
fvgDisplayData,
"🔥", // LV FVG Icon
color.white,
color.new(color.gray, 70), // NA Cell Color
size.small
)
This workflow ensures that the panel is drawn only once and its cells are efficiently updated as new data becomes available.
█ NOTES
Data Source: This library is solely responsible for the visual presentation of FVG data in a table. It does not perform any FVG detection or calculation. The calling script must compute or retrieve the FVG levels, LV status, and desired styling to populate the `panelData` object.
Styling Responsibility: While `updatePanel` applies colors passed via the `panelData` object, the logic for *determining* those colors (e.g., highlighting the closest FVG to the current price) resides in the calling script.
Performance: The library uses `table.cell()` to update individual cells, which is generally more efficient than deleting and recreating the table on each update. However, the frequency of `updatePanel` calls should be managed by the main script (e.g., using `barstate.islast` or `barstate.isrealtime`) to avoid excessive processing on historical bars.
`series float` Handling: The price level fields within the `panelData` UDT (e.g., `nearestBullMitLvl`) can accept `series float` values, as these are typically derived from price data. The internal `formatPrice` function correctly handles `series float` for display.
Dependencies: The `FvgPanel` itself is self-contained and does not import other user libraries. It uses standard Pine Script™ table and string functionalities.
█ EXPORTED TYPES
panelData
Represents the data structure for populating the FVG information panel.
Fields:
nearestBullMitLvl (series float) : The price level of the nearest bullish FVG's mitigation point (bottom for bull) on the LTF.
isNearestBullLV (series bool) : True if the nearest bullish FVG on the LTF is a Large Volume FVG.
ltfBullBgColor (series color) : Background color for the LTF bullish FVG cell in the panel.
ltfBullTextColor (series color) : Text color for the LTF bullish FVG cell in the panel.
nearestBearMitLvl (series float) : The price level of the nearest bearish FVG's mitigation point (top for bear) on the LTF.
isNearestBearLV (series bool) : True if the nearest bearish FVG on the LTF is a Large Volume FVG.
ltfBearBgColor (series color) : Background color for the LTF bearish FVG cell in the panel.
ltfBearTextColor (series color) : Text color for the LTF bearish FVG cell in the panel.
nearestMtfBullMitLvl (series float) : The price level of the nearest bullish FVG's mitigation point on the MTF.
isNearestMtfBullLV (series bool) : True if the nearest bullish FVG on the MTF is a Large Volume FVG.
mtfBullBgColor (series color) : Background color for the MTF bullish FVG cell.
mtfBullTextColor (series color) : Text color for the MTF bullish FVG cell.
nearestMtfBearMitLvl (series float) : The price level of the nearest bearish FVG's mitigation point on the MTF.
isNearestMtfBearLV (series bool) : True if the nearest bearish FVG on the MTF is a Large Volume FVG.
mtfBearBgColor (series color) : Background color for the MTF bearish FVG cell.
mtfBearTextColor (series color) : Text color for the MTF bearish FVG cell.
nearestHtfBullMitLvl (series float) : The price level of the nearest bullish FVG's mitigation point on the HTF.
isNearestHtfBullLV (series bool) : True if the nearest bullish FVG on the HTF is a Large Volume FVG.
htfBullBgColor (series color) : Background color for the HTF bullish FVG cell.
htfBullTextColor (series color) : Text color for the HTF bullish FVG cell.
nearestHtfBearMitLvl (series float) : The price level of the nearest bearish FVG's mitigation point on the HTF.
isNearestHtfBearLV (series bool) : True if the nearest bearish FVG on the HTF is a Large Volume FVG.
htfBearBgColor (series color) : Background color for the HTF bearish FVG cell.
htfBearTextColor (series color) : Text color for the HTF bearish FVG cell.
█ EXPORTED FUNCTIONS
createPanel(position, borderColor, borderWidth, headerBgColor, headerTextColor, headerTextSize)
Creates and initializes the FVG information panel (table). Sets up the header rows and timeframe labels.
Parameters:
position (simple string) : The position of the panel on the chart (e.g., position.top_right). Uses position.* constants.
borderColor (simple color) : The color of the panel's border.
borderWidth (simple int) : The width of the panel's border.
headerBgColor (simple color) : The background color for the header cells.
headerTextColor (simple color) : The text color for the header cells.
headerTextSize (simple string) : The text size for the header cells (e.g., size.small). Uses size.* constants.
Returns: The newly created table object representing the panel.
updatePanel(panelTable, data, lvIcon, defaultTextColor, naCellColor, textSize)
Updates the content of the FVG information panel with the latest FVG data.
Parameters:
panelTable (table) : The table object representing the panel to be updated.
data (panelData) : An object containing the FVG data to display.
lvIcon (simple string) : The icon (e.g., emoji) to display next to Large Volume FVGs.
defaultTextColor (simple color) : The default text color for FVG levels if not highlighted.
naCellColor (simple color) : The background color for cells where no FVG data is available ("---").
textSize (simple string) : The text size for the FVG level data (e.g., size.small).
Returns: _void
Every Hour 1st/Last FVG vTDL OVERVIEW - Shoutout to Micheal J. Huddleston aka ICT
This indicator identifies the first Fair Value Gap (FVG) that forms within each trading hour, providing traders with potential entry zones, reversal points, and unmitigated gap targets. Based on the concept that the first presented FVG of each hour represents a significant price delivery array where institutional order flow occurred.
The indicator detects FVGs on a lower timeframe (1-minute default) and displays them as boxes on your chart, tracking which gaps get filled and which remain open as potential draw-on-liquidity targets.
WHAT IS A FAIR VALUE GAP
A Fair Value Gap is a 3-candle price pattern representing an imbalance between buyers and sellers:
Bullish FVG: Forms when candle 3's low is above candle 1's high, leaving a gap
Bearish FVG: Forms when candle 3's high is below candle 1's low, leaving a gap
These gaps often act as magnets for price, which tends to return and "fill" the imbalance before continuing. They function as dynamic support and resistance zones.
KEY FEATURES
Detection Types
FVG: Standard fair value gap detection with volume imbalance expansion
Suspension FVG Blocks: Requires outside prints on both sides for more refined signals
Hourly Display Modes
First Only: Shows whichever FVG appears first each hour (bullish or bearish)
Show Both: Shows first bullish AND first bearish FVG independently each hour
Last FVG Tracking
Optionally display the last FVG of each hour
Useful for comparing how the hour developed
Can extend into the next hour for continued tracking
Breakaway Gap Detection
Gaps not traded into during their formation hour extend forward
Extended gaps display labels showing formation time and date
These unmitigated gaps become price targets and reversal zones
Gap Fill Modes
Touch Box: Marks filled when price enters the gap
Touch Midpoint: Marks filled when price reaches the 50 percent level
Fill Completely: Marks filled when price fills the entire gap with visual progress
HOW TO USE
Entry Points
The first FVG of each hour provides potential entry zones based on price reaction:
When price returns to an FVG and shows rejection, enter in the direction of rejection
The gap zone represents where institutional orders likely reside
Use the boundaries of the gap for stop loss placement
A clean rejection of the zone confirms it as valid support or resistance
Reversal Points
Unmitigated gaps that extend beyond their formation hour are high-probability reaction zones:
Extended boxes with labels indicate unfilled gaps
When price finally reaches these zones, expect a reaction
The longer a gap remains unfilled, the stronger the expected response
These zones act as magnets drawing price back to them
Price Targets
Use unmitigated gaps as draw-on-liquidity targets:
Look for extended boxes above or below current price
Price tends to seek out and fill imbalances
The midpoint line often serves as a minimum target
Multiple unfilled gaps in one direction suggest strong momentum potential
FRAMING DIRECTIONAL BIAS
The first presented FVG of each hour acts as a support or resistance zone. The direction of the FVG itself does not determine bias - it is how price reacts to that FVG that reveals the true market intention.
Reading Price Reaction
Price respects a bullish FVG as support and bounces higher = bullish bias confirmed
Price respects a bearish FVG as resistance and rejects lower = bearish bias confirmed
Price fails to hold a bullish FVG and breaks through = potential inversion, look for shorts
Price fails to hold a bearish FVG and breaks through = potential inversion, look for longs
Inversion Fair Value Gaps (IFVG)
When price trades through an FVG and closes beyond it, that gap can invert its role:
A bullish FVG that fails becomes resistance - use it as a short entry zone
A bearish FVG that fails becomes support - use it as a long entry zone
The inversion signals a shift in control from one side to the other
Watch for price to retest the inverted gap before continuing
Support and Resistance Framework
Think of each hourly first FVG as a key level:
Price above the FVG: the gap acts as potential support
Price below the FVG: the gap acts as potential resistance
Watch how price behaves when it returns to the gap zone
A clean rejection confirms the level; a break through signals inversion
SHORT-TERM SCALPING APPLICATION
These FVGs provide scalping opportunities each hour:
Identify the first FVG of the hour as your key level
Wait for price to trade away from it and return
Observe the reaction at the gap zone
Enter in the direction of the reaction with tight risk
Target the next FVG, midpoint, or nearby liquidity
Trade Management
Use the opposite side of the FVG box as your stop loss zone
The midpoint of the gap often provides first target or decision point
Scale out at nearby unmitigated gaps or key levels
If the gap inverts, flip your bias and look for entries in the new direction
MULTI-HOUR CONTEXT
If price consistently respects FVGs as support across hours = uptrend context
If price consistently respects FVGs as resistance across hours = downtrend context
If FVGs keep inverting = choppy or transitional market
Use higher timeframe direction to filter which reactions to trade
Compare first and last FVG of each hour to see how momentum developed
SESSION FILTERING
The indicator automatically excludes unreliable periods:
4 PM to 5 PM New York time (market close hours 16-17)
Weekend closed periods (Saturday and Sunday before 6 PM)
All timestamps use New York timezone for consistency with futures market hours.
SETTINGS GUIDE
Detection Settings
Detection Type: Choose between standard FVG or Suspension FVG Blocks
Lower Timeframe: 15 seconds, 1 minute, or 5 minutes for gap detection
Min FVG Size: Minimum gap size in ticks to filter noise
Display Settings
Hourly Display Mode: First Only shows one gap per hour; Show Both shows first bull and bear
Show First FVG: Toggle visibility of first FVG boxes
Show Last FVG: Toggle visibility of last FVG boxes
Show Midpoint Lines: Display the 50 percent level of each gap
Show Unfilled Breakaway Gaps: Extend boxes until price fills them
Show Only Today: Reduce clutter by hiding older hourly boxes
Gap Fill Detection Mode
Touch Box: Gap marked filled when price enters the zone
Touch Midpoint: Gap marked filled when price reaches 50 percent level
Fill Completely: Gap marked filled only when fully closed, shows visual fill progress
Recommended Settings by Style
Scalping: 1 minute LTF, 4 tick minimum, Show Both mode, Touch Box fill
Day Trading: 1 minute LTF, 4-8 tick minimum, First Only mode, Touch Midpoint fill
Swing Context: 5 minute LTF, Show Unfilled Gaps enabled, Fill Completely mode
COLOR CODING
Blue boxes: First bullish FVG of the hour
Red boxes: First bearish FVG of the hour
Green boxes: Last bullish FVG of the hour
Orange boxes: Last bearish FVG of the hour
Black midpoint lines: 50 percent level of each gap
Filled portion overlay: Shows visual progress in Fill Completely mode
All colors are fully customizable in the settings menu.
PRACTICAL TIPS
The first FVG of each hour is a hidden PD array - treat it as a significant level
Not every gap produces a tradeable reaction - wait for confirmation
Gaps that remain unfilled for multiple hours carry more weight
Use the Show Both mode to see both bullish and bearish opportunities each hour
When multiple gaps cluster in one zone, that area becomes even more significant
Inversions are powerful signals - a failed level often leads to acceleration
NOTES
Works on any instrument and timeframe
Best used on intraday charts (1 minute to 15 minute) viewing 1 minute LTF gaps
Combine with higher timeframe analysis for confluence
These are probability zones, not guarantees - always use proper risk management
The indicator handles HTF to LTF data fetching automatically
SMC Structures and FVGสวัสดีครับ! ผมจะอธิบายอินดิเคเตอร์ "SMC Structures and FVG + MACD" ที่คุณให้มาอย่างละเอียดในแต่ละส่วน เพื่อให้คุณเข้าใจการทำงานของมันอย่างถ่องแท้ครับ
อินดิเคเตอร์นี้เป็นการผสมผสานแนวคิดของ Smart Money Concept (SMC) ซึ่งเน้นการวิเคราะห์โครงสร้างตลาด (Market Structure) และ Fair Value Gap (FVG) เข้ากับอินดิเคเตอร์ MACD เพื่อใช้เป็นตัวกรองหรือตัวยืนยันสัญญาณ Choch/BoS (Change of Character / Break of Structure)
1. ภาพรวมอินดิเคเตอร์ (Overall Purpose)
อินดิเคเตอร์นี้มีจุดประสงค์หลักคือ:
ระบุโครงสร้างตลาด: ตีเส้นและป้ายกำกับ Choch (Change of Character) และ BoS (Break of Structure) บนกราฟโดยอัตโนมัติ
ผสานการยืนยันด้วย MACD: สัญญาณ Choch/BoS จะถูกพิจารณาก็ต่อเมื่อ MACD Histogram เกิดการตัดขึ้นหรือลง (Zero Cross) ในทิศทางที่สอดคล้องกัน
แสดง Fair Value Gap (FVG): หากเปิดใช้งาน จะมีการตีกล่อง FVG บนกราฟ
แสดงระดับ Fibonacci: คำนวณและแสดงระดับ Fibonacci ที่สำคัญตามโครงสร้างตลาดปัจจุบัน
ปรับตาม Timeframe: การคำนวณและการแสดงผลทั้งหมดจะปรับตาม Timeframe ที่คุณกำลังใช้งานอยู่โดยอัตโนมัติ
2. ส่วนประกอบหลักของโค้ด (Code Breakdown)
โค้ดนี้สามารถแบ่งออกเป็นส่วนหลัก ๆ ได้ดังนี้:
2.1 Inputs (การตั้งค่า)
ส่วนนี้คือตัวแปรที่คุณสามารถปรับแต่งได้ในหน้าต่างการตั้งค่าของอินดิเคเตอร์ (คลิกที่รูปฟันเฟืองข้างชื่ออินดิเคเตอร์บนกราฟ)
MACD Settings (ตั้งค่า MACD):
fast_len: ความยาวของ Fast EMA สำหรับ MACD (ค่าเริ่มต้น 12)
slow_len: ความยาวของ Slow EMA สำหรับ MACD (ค่าเริ่มต้น 26)
signal_len: ความยาวของ Signal Line สำหรับ MACD (ค่าเริ่มต้น 9)
= ta.macd(close, fast_len, slow_len, signal_len): คำนวณค่า MACD Line, Signal Line และ Histogram โดยใช้ราคาปิด (close) และค่าความยาวที่กำหนด
is_bullish_macd_cross: ตรวจสอบว่า MACD Histogram ตัดขึ้นเหนือเส้น 0 (จากค่าลบเป็นบวก)
is_bearish_macd_cross: ตรวจสอบว่า MACD Histogram ตัดลงใต้เส้น 0 (จากค่าบวกเป็นลบ)
Fear Value Gap (FVG) Settings:
isFvgToShow: (Boolean) เปิด/ปิดการแสดง FVG บนกราฟ
bullishFvgColor: สีสำหรับ Bullish FVG
bearishFvgColor: สีสำหรับ Bearish FVG
mitigatedFvgColor: สีสำหรับ FVG ที่ถูก Mitigate (ลดทอน) แล้ว
fvgHistoryNbr: จำนวน FVG ย้อนหลังที่จะแสดง
isMitigatedFvgToReduce: (Boolean) เปิด/ปิดการลดขนาด FVG เมื่อถูก Mitigate
Structures (โครงสร้างตลาด) Settings:
isStructBodyCandleBreak: (Boolean) หากเป็น true การ Break จะต้องเกิดขึ้นด้วย เนื้อเทียน ที่ปิดเหนือ/ใต้ Swing High/Low หากเป็น false แค่ไส้เทียนทะลุก็ถือว่า Break
isCurrentStructToShow: (Boolean) เปิด/ปิดการแสดงเส้นโครงสร้างตลาดปัจจุบัน (เส้นสีน้ำเงินในภาพตัวอย่าง)
pivot_len: ความยาวของแท่งเทียนที่ใช้ในการมองหาจุด Pivot (Swing High/Low) ยิ่งค่าน้อยยิ่งจับ Swing เล็กๆ ได้, ยิ่งค่ามากยิ่งจับ Swing ใหญ่ๆ ได้
bullishBosColor, bearishBosColor: สีสำหรับเส้นและป้าย BOS ขาขึ้น/ขาลง
bosLineStyleOption, bosLineWidth: สไตล์ (Solid, Dotted, Dashed) และความหนาของเส้น BOS
bullishChochColor, bearishChochColor: สีสำหรับเส้นและป้าย CHoCH ขาขึ้น/ขาลง
chochLineStyleOption, chochLineWidth: สไตล์ (Solid, Dotted, Dashed) และความหนาของเส้น CHoCH
currentStructColor, currentStructLineStyleOption, currentStructLineWidth: สี, สไตล์ และความหนาของเส้นโครงสร้างตลาดปัจจุบัน
structHistoryNbr: จำนวนการ Break (Choch/BoS) ย้อนหลังที่จะแสดง
Structure Fibonacci (จากโค้ดต้นฉบับ):
เป็นชุด Input สำหรับเปิด/ปิด, กำหนดค่า, สี, สไตล์ และความหนาของเส้น Fibonacci Levels ต่างๆ (0.786, 0.705, 0.618, 0.5, 0.382) ที่จะถูกคำนวณจากโครงสร้างตลาดปัจจุบัน
2.2 Helper Functions (ฟังก์ชันช่วยทำงาน)
getLineStyle(lineOption): ฟังก์ชันนี้ใช้แปลงค่า String ที่เลือกจาก Input (เช่น "─", "┈", "╌") ให้เป็นรูปแบบ line.style_ ที่ Pine Script เข้าใจ
get_structure_highest_bar(lookback): ฟังก์ชันนี้พยายามหา Bar Index ของแท่งเทียนที่ทำ Swing High ภายในช่วง lookback ที่กำหนด
get_structure_lowest_bar(lookback): ฟังก์ชันนี้พยายามหา Bar Index ของแท่งเทียนที่ทำ Swing Low ภายในช่วง lookback ที่กำหนด
is_structure_high_broken(...): ฟังก์ชันนี้ตรวจสอบว่าราคาปัจจุบันได้ Break เหนือ _structureHigh (Swing High) หรือไม่ โดยพิจารณาจาก _highStructBreakPrice (ราคาปิดหรือราคา High ขึ้นอยู่กับการตั้งค่า isStructBodyCandleBreak)
FVGDraw(...): ฟังก์ชันนี้รับ Arrays ของ FVG Boxes, Types, Mitigation Status และ Labels มาประมวลผล เพื่ออัปเดตสถานะของ FVG (เช่น ถูก Mitigate หรือไม่) และปรับขนาด/ตำแหน่งของ FVG Box และ Label บนกราฟ
2.3 Global Variables (ตัวแปรทั่วทั้งอินดิเคเตอร์)
เป็นตัวแปรที่ประกาศด้วย var ซึ่งหมายความว่าค่าของมันจะถูกเก็บไว้และอัปเดตในแต่ละแท่งเทียน (persists across bars)
structureLines, structureLabels: Arrays สำหรับเก็บอ็อบเจกต์ line และ label ของเส้น Choch/BoS ที่วาดบนกราฟ
fvgBoxes, fvgTypes, fvgLabels, isFvgMitigated: Arrays สำหรับเก็บข้อมูลของ FVG Boxes และสถานะต่างๆ
structureHigh, structureLow: เก็บราคาของ Swing High/Low ที่สำคัญของโครงสร้างตลาดปัจจุบัน
structureHighStartIndex, structureLowStartIndex: เก็บ Bar Index ของจุดเริ่มต้นของ Swing High/Low ที่สำคัญ
structureDirection: เก็บสถานะของทิศทางโครงสร้างตลาด (1 = Bullish, 2 = Bearish, 0 = Undefined)
fiboXPrice, fiboXStartIndex, fiboXLine, fiboXLabel: ตัวแปรสำหรับเก็บข้อมูลและอ็อบเจกต์ของเส้น Fibonacci Levels
isBOSAlert, isCHOCHAlert: (Boolean) ใช้สำหรับส่งสัญญาณ Alert (หากมีการตั้งค่า Alert ไว้)
2.4 FVG Processing (การประมวลผล FVG)
ส่วนนี้จะตรวจสอบเงื่อนไขการเกิด FVG (Bullish FVG: high < low , Bearish FVG: low > high )
หากเกิด FVG และ isFvgToShow เป็น true จะมีการสร้าง box และ label ใหม่เพื่อแสดง FVG บนกราฟ
มีการจัดการ fvgBoxes และ fvgLabels เพื่อจำกัดจำนวน FVG ที่แสดงตาม fvgHistoryNbr และลบ FVG เก่าออก
ฟังก์ชัน FVGDraw จะถูกเรียกเพื่ออัปเดตสถานะของ FVG (เช่น การถูก Mitigate) และปรับการแสดงผล
2.5 Structures Processing (การประมวลผลโครงสร้างตลาด)
Initialization: ที่ bar_index == 0 (แท่งเทียนแรกของกราฟ) จะมีการกำหนดค่าเริ่มต้นให้กับ structureHigh, structureLow, structureHighStartIndex, structureLowStartIndex
Finding Current High/Low: highest, highestBar, lowest, lowestBar ถูกใช้เพื่อหา High/Low ที่สุดและ Bar Index ของมันใน 10 แท่งล่าสุด (หรือทั้งหมดหากกราฟสั้นกว่า 10 แท่ง)
Calculating Structure Max/Min Bar: structureMaxBar และ structureMinBar ใช้ฟังก์ชัน get_structure_highest_bar และ get_structure_lowest_bar เพื่อหา Bar Index ของ Swing High/Low ที่แท้จริง (ไม่ใช่แค่ High/Low ที่สุดใน lookback แต่เป็นจุด Pivot ที่สมบูรณ์)
Break Price: lowStructBreakPrice และ highStructBreakPrice จะเป็นราคาปิด (close) หรือราคา Low/High ขึ้นอยู่กับ isStructBodyCandleBreak
isStuctureLowBroken / isStructureHighBroken: เงื่อนไขเหล่านี้ตรวจสอบว่าราคาได้ทำลาย structureLow หรือ structureHigh หรือไม่ โดยพิจารณาจากราคา Break, ราคาแท่งก่อนหน้า และ Bar Index ของจุดเริ่มต้นโครงสร้าง
Choch/BoS Logic (ส่วนสำคัญที่ถูกผสานกับ MACD):
if(isStuctureLowBroken and is_bearish_macd_cross): นี่คือจุดที่ MACD เข้ามามีบทบาท หากราคาทำลาย structureLow (สัญญาณขาลง) และ MACD Histogram เกิด Bearish Zero Cross (is_bearish_macd_cross เป็น true) อินดิเคเตอร์จะพิจารณาว่าเป็น Choch หรือ BoS
หาก structureDirection == 1 (เดิมเป็นขาขึ้น) หรือ 0 (ยังไม่กำหนด) จะตีเป็น "CHoCH" (เปลี่ยนทิศทางโครงสร้างเป็นขาลง)
หาก structureDirection == 2 (เดิมเป็นขาลง) จะตีเป็น "BOS" (ยืนยันโครงสร้างขาลง)
มีการสร้าง line.new และ label.new เพื่อวาดเส้นและป้ายกำกับ
structureDirection จะถูกอัปเดตเป็น 1 (Bullish)
structureHighStartIndex, structureLowStartIndex, structureHigh, structureLow จะถูกอัปเดตเพื่อกำหนดโครงสร้างใหม่
else if(isStructureHighBroken and is_bullish_macd_cross): เช่นกันสำหรับขาขึ้น หากราคาทำลาย structureHigh (สัญญาณขาขึ้น) และ MACD Histogram เกิด Bullish Zero Cross (is_bullish_macd_cross เป็น true) อินดิเคเตอร์จะพิจารณาว่าเป็น Choch หรือ BoS
หาก structureDirection == 2 (เดิมเป็นขาลง) หรือ 0 (ยังไม่กำหนด) จะตีเป็น "CHoCH" (เปลี่ยนทิศทางโครงสร้างเป็นขาขึ้น)
หาก structureDirection == 1 (เดิมเป็นขาขึ้น) จะตีเป็น "BOS" (ยืนยันโครงสร้างขาขึ้น)
มีการสร้าง line.new และ label.new เพื่อวาดเส้นและป้ายกำกับ
structureDirection จะถูกอัปเดตเป็น 2 (Bearish)
structureHighStartIndex, structureLowStartIndex, structureHigh, structureLow จะถูกอัปเดตเพื่อกำหนดโครงสร้างใหม่
การลบเส้นเก่า: d.delete_line (หากไลบรารีทำงาน) จะถูกเรียกเพื่อลบเส้นและป้ายกำกับเก่าออกเมื่อจำนวนเกิน structHistoryNbr
Updating Structure High/Low (else block): หากไม่มีการ Break เกิดขึ้น แต่ราคาปัจจุบันสูงกว่า structureHigh หรือต่ำกว่า structureLow ในทิศทางที่สอดคล้องกัน (เช่น ยังคงเป็นขาขึ้นและทำ High ใหม่) structureHigh หรือ structureLow จะถูกอัปเดตเพื่อติดตาม High/Low ที่สุดของโครงสร้างปัจจุบัน
Current Structure Display:
หาก isCurrentStructToShow เป็น true อินดิเคเตอร์จะวาดเส้น structureHighLine และ structureLowLine เพื่อแสดงขอบเขตของโครงสร้างตลาดปัจจุบัน
Fibonacci Display:
หาก isFiboXToShow เป็น true อินดิเคเตอร์จะคำนวณและวาดเส้น Fibonacci Levels ต่างๆ (0.786, 0.705, 0.618, 0.5, 0.382) โดยอิงจาก structureHigh และ structureLow ของโครงสร้างตลาดปัจจุบัน
Alerts:
alertcondition: ใช้สำหรับตั้งค่า Alert ใน TradingView เมื่อเกิดสัญญาณ BOS หรือ CHOCH
plot(na):
plot(na) เป็นคำสั่งที่สำคัญในอินดิเคเตอร์ที่ไม่ได้ต้องการพล็อต Series ของข้อมูลบนกราฟ (เช่น ไม่ได้พล็อตเส้น EMA หรือ RSI) แต่ใช้วาดอ็อบเจกต์ (Line, Label, Box) โดยตรง
การมี plot(na) ช่วยให้ Pine Script รู้ว่าอินดิเคเตอร์นี้มีเอาต์พุตที่แสดงผลบนกราฟ แม้ว่าจะไม่ได้เป็น Series ที่พล็อตตามปกติก็ตาม
3. วิธีใช้งาน
คัดลอกโค้ดทั้งหมด ที่อยู่ในบล็อก immersive ด้านบน
ไปที่ TradingView และเปิดกราฟที่คุณต้องการ
คลิกที่เมนู "Pine Editor" ที่อยู่ด้านล่างของหน้าจอ
ลบโค้ดเดิมที่มีอยู่ และ วางโค้ดที่คัดลอกมา ลงไปแทน
คลิกที่ปุ่ม "Add to Chart"
อินดิเคเตอร์จะถูกเพิ่มลงในกราฟของคุณโดยอัตโนมัติ คุณสามารถคลิกที่รูปฟันเฟืองข้างชื่ออินดิเคเตอร์บนกราฟเพื่อเข้าถึงหน้าต่างการตั้งค่าและปรับแต่งตามความต้องการของคุณได้
Hello! I will explain the "SMC Structures and FVG + MACD" indicator you provided in detail, section by section, so you can fully understand how it works.This indicator combines the concepts of Smart Money Concept (SMC), which focuses on analyzing Market Structure and Fair Value Gaps (FVG), with the MACD indicator to serve as a filter or confirmation for Choch (Change of Character) and BoS (Break of Structure) signals.1. Overall PurposeThe main purposes of this indicator are:Identify Market Structure: Automatically draw lines and label Choch (Change of Character) and BoS (Break of Structure) on the chart.Integrate MACD Confirmation: Choch/BoS signals will only be considered when the MACD Histogram performs a cross (Zero Cross) in the corresponding direction.Display Fair Value Gap (FVG): If enabled, FVG boxes will be drawn on the chart.Display Fibonacci Levels: Calculate and display important Fibonacci levels based on the current market structure.Adapt to Timeframe: All calculations and displays will automatically adjust to the timeframe you are currently using.2. Code BreakdownThis code can be divided into the following main sections:2.1 Inputs (Settings)This section contains variables that you can adjust in the indicator's settings window (click the gear icon next to the indicator's name on the chart).MACD Settings:fast_len: Length of the Fast EMA for MACD (default 12)slow_len: Length of the Slow EMA for MACD (default 26)signal_len: Length of the Signal Line for MACD (default 9) = ta.macd(close, fast_len, slow_len, signal_len): Calculates the MACD Line, Signal Line, and Histogram using the closing price (close) and the specified lengths.is_bullish_macd_cross: Checks if the MACD Histogram crosses above the 0 line (from negative to positive).is_bearish_macd_cross: Checks if the MACD Histogram crosses below the 0 line (from positive to negative).Fear Value Gap (FVG) Settings:isFvgToShow: (Boolean) Enables/disables the display of FVG on the chart.bullishFvgColor: Color for Bullish FVG.bearishFvgColor: Color for Bearish FVG.mitigatedFvgColor: Color for FVG that has been mitigated.fvgHistoryNbr: Number of historical FVG to display.isMitigatedFvgToReduce: (Boolean) Enables/disables reducing the size of FVG when mitigated.Structures (โครงสร้างตลาด) Settings:isStructBodyCandleBreak: (Boolean) If true, the break must occur with the candle body closing above/below the Swing High/Low. If false, a wick break is sufficient.isCurrentStructToShow: (Boolean) Enables/disables the display of the current market structure lines (blue lines in the example image).pivot_len: Lookback length for identifying Pivot points (Swing High/Low). A smaller value captures smaller, more frequent swings; a larger value captures larger, more significant swings.bullishBosColor, bearishBosColor: Colors for bullish/bearish BOS lines and labels.bosLineStyleOption, bosLineWidth: Style (Solid, Dotted, Dashed) and width of BOS lines.bullishChochColor, bearishChochColor: Colors for bullish/bearish CHoCH lines and labels.chochLineStyleOption, chochLineWidth: Style (Solid, Dotted, Dashed) and width of CHoCH lines.currentStructColor, currentStructLineStyleOption, currentStructLineWidth: Color, style, and width of the current market structure lines.structHistoryNbr: Number of historical breaks (Choch/BoS) to display.Structure Fibonacci (from original code):A set of inputs to enable/disable, define values, colors, styles, and widths for various Fibonacci Levels (0.786, 0.705, 0.618, 0.5, 0.382) that will be calculated from the current market structure.2.2 Helper FunctionsgetLineStyle(lineOption): This function converts the selected string input (e.g., "─", "┈", "╌") into a line.style_ format understood by Pine Script.get_structure_highest_bar(lookback): This function attempts to find the Bar Index of the Swing High within the specified lookback period.get_structure_lowest_bar(lookback): This function attempts to find the Bar Index of the Swing Low within the specified lookback period.is_structure_high_broken(...): This function checks if the current price has broken above _structureHigh (Swing High), considering _highStructBreakPrice (closing price or high price depending on isStructBodyCandleBreak setting).FVGDraw(...): This function takes arrays of FVG Boxes, Types, Mitigation Status, and Labels to process and update the status of FVG (e.g., whether it's mitigated) and adjust the size/position of FVG Boxes and Labels on the chart.2.3 Global VariablesThese are variables declared with var, meaning their values are stored and updated on each bar (persists across bars).structureLines, structureLabels: Arrays to store line and label objects for Choch/BoS lines drawn on the chart.fvgBoxes, fvgTypes, fvgLabels, isFvgMitigated: Arrays to store FVG box data and their respective statuses.structureHigh, structureLow: Stores the price of the significant Swing High/Low of the current market structure.structureHighStartIndex, structureLowStartIndex: Stores the Bar Index of the start point of the significant Swing High/Low.structureDirection: Stores the status of the market structure direction (1 = Bullish, 2 = Bearish, 0 = Undefined).fiboXPrice, fiboXStartIndex, fiboXLine, fiboXLabel: Variables to store data and objects for Fibonacci Levels.isBOSAlert, isCHOCHAlert: (Boolean) Used to trigger alerts in TradingView (if alerts are configured).2.4 FVG ProcessingThis section checks the conditions for FVG formation (Bullish FVG: high < low , Bearish FVG: low > high ).If FVG occurs and isFvgToShow is true, a new box and label are created to display the FVG on the chart.fvgBoxes and fvgLabels are managed to limit the number of FVG displayed according to fvgHistoryNbr and remove older FVG.The FVGDraw function is called to update the FVG status (e.g., whether it's mitigated) and adjust its display.2.5 Structures ProcessingInitialization: At bar_index == 0 (the first bar of the chart), structureHigh, structureLow, structureHighStartIndex, and structureLowStartIndex are initialized.Finding Current High/Low: highest, highestBar, lowest, lowestBar are used to find the highest/lowest price and its Bar Index of it in the last 10 bars (or all bars if the chart is shorter than 10 bars).Calculating Structure Max/Min Bar: structureMaxBar and structureMinBar use get_structure_highest_bar and get_structure_lowest_bar functions to find the Bar Index of the true Swing High/Low (not just the highest/lowest in the lookback but a complete Pivot point).Break Price: lowStructBreakPrice and highStructBreakPrice will be the closing price (close) or the Low/High price, depending on the isStructBodyCandleBreak setting.isStuctureLowBroken / isStructureHighBroken: These conditions check if the price has broken structureLow or structureHigh, considering the break price, previous bar prices, and the Bar Index of the structure's starting point.Choch/BoS Logic (Key Integration with MACD):if(isStuctureLowBroken and is_bearish_macd_cross): This is where MACD plays a role. If the price breaks structureLow (bearish signal) AND the MACD Histogram performs a Bearish Zero Cross (is_bearish_macd_cross is true), the indicator will consider it a Choch or BoS.If structureDirection == 1 (previously bullish) or 0 (undefined), it will be labeled "CHoCH" (changing structure direction to bearish).If structureDirection == 2 (already bearish), it will be labeled "BOS" (confirming bearish structure).line.new and label.new are used to draw the line and label.structureDirection will be updated to 1 (Bullish).structureHighStartIndex, structureLowStartIndex, structureHigh, structureLow will be updated to define the new structure.else if(isStructureHighBroken and is_bullish_macd_cross): Similarly for bullish breaks. If the price breaks structureHigh (bullish signal) AND the MACD Histogram performs a Bullish Zero Cross (is_bullish_macd_cross is true), the indicator will consider it a Choch or BoS.If structureDirection == 2 (previously bearish) or 0 (undefined), it will be labeled "CHoCH" (changing structure direction to bullish).If structureDirection == 1 (already bullish), it will be labeled "BOS" (confirming bullish structure).line.new and label.new are used to draw the line and label.structureDirection will be updated to 2 (Bearish).structureHighStartIndex, structureLowStartIndex, structureHigh, structureLow will be updated to define the new structure.Deleting Old Lines: d.delete_line (if the library works) will be called to delete old lines and labels when their number exceeds structHistoryNbr.Updating Structure High/Low (else block): If no break occurs, but the current price is higher than structureHigh or lower than structureLow in the corresponding direction (e.g., still bullish and making a new high), structureHigh or structureLow will be updated to track the highest/lowest point of the current structure.Current Structure Display:If isCurrentStructToShow is true, the indicator draws structureHighLine and structureLowLine to show the boundaries of the current market structure.Fibonacci Display:If isFiboXToShow is true, the indicator calculates and draws various Fibonacci Levels (0.786, 0.705, 0.618, 0.5, 0.382) based on the structureHigh and structureLow of the current market structure.Alerts:alertcondition: Used to set up alerts in TradingView when BOS or CHOCH signals occur.plot(na):plot(na) is an important statement in indicators that do not plot data series directly on the chart (e.g., not plotting EMA or RSI lines) but instead draw objects (Line, Label, Box).Having plot(na) helps Pine Script recognize that this indicator has an output displayed on the chart, even if it's not a regularly plotted series.3. How to UseCopy all the code in the immersive block above.Go to TradingView and open your desired chart.Click on the "Pine Editor" menu at the bottom of the screen.Delete any existing code and paste the copied code in its place.Click the "Add to Chart" button.The indicator will be added to your chart automatically. You can click the gear icon next to the indicator's name on the chart to access the settings window and customize it to your needs.I hope this explanation helps you understand this indicator in detail. If anything is unclear, or you need further adjustments, please let me know.
lib_fvgLibrary "lib_fvg"
further expansion of my object oriented library toolkit. This lib detects Fair Value Gaps and returns them as objects.
Drawing them is a separate step so the lib can be used with securities. It also allows for usage of current/close price to detect fill/invalidation of a gap and to adjust the fill level dynamically. FVGs can be detected while forming and extended indefinitely while they're unfilled.
method draw(this)
Namespace types: FVG
Parameters:
this (FVG)
method draw(fvgs)
Namespace types: FVG
Parameters:
fvgs (FVG )
is_fvg(mode, precondition, filter_insignificant, filter_insignificant_atr_factor, live)
Parameters:
mode (int) : switch for detection 1 for bullish FVGs, -1 for bearish FVGs
precondition (bool) : allows for other confluences to block/enable detection
filter_insignificant (bool) : allows to ignore small gaps
filter_insignificant_atr_factor (float) : allows to adjust how small (compared to a 50 period ATR)
live (bool) : allows to detect FVGs while the third bar is forming -> will cause repainting
Returns: a tuple of (bar_index of gap bar, gap top, gap bottom)
create_fvg(mode, idx, top, btm, filled_at_pc, config)
Parameters:
mode (int) : switch for detection 1 for bullish FVGs, -1 for bearish FVGs
idx (int) : the bar_index of the FVG gap bar
top (float) : the top level of the FVG
btm (float) : the bottom level of the FVG
filled_at_pc (float) : the ratio (0-1) that the fill source needs to retrace into the gap to consider it filled/invalidated/ready for removal
config (FVGConfig) : the plot configuration/styles for the FVG
Returns: a new FVG object if there was a new FVG, else na
detect_fvg(mode, filled_at_pc, precondition, filter_insignificant, filter_insignificant_atr_factor, live, config)
Parameters:
mode (int) : switch for detection 1 for bullish FVGs, -1 for bearish FVGs
filled_at_pc (float)
precondition (bool) : allows for other confluences to block/enable detection
filter_insignificant (bool) : allows to ignore small gaps
filter_insignificant_atr_factor (float) : allows to adjust how small (compared to a 50 period ATR)
live (bool) : allows to detect FVGs while the third bar is forming -> will cause repainting
config (FVGConfig)
Returns: a new FVG object if there was a new FVG, else na
method update(this, fill_src)
Namespace types: FVG
Parameters:
this (FVG)
fill_src (float) : allows for usage of different fill source series, e.g. high for bearish FVGs, low vor bullish FVGs or close for both
method update(all, fill_src)
Namespace types: FVG
Parameters:
all (FVG )
fill_src (float)
method remove_filled(unfilled_fvgs)
Namespace types: FVG
Parameters:
unfilled_fvgs (FVG )
method delete(this)
Namespace types: FVG
Parameters:
this (FVG)
method delete_filled_fvgs_buffered(filled_fvgs, max_keep)
Namespace types: FVG
Parameters:
filled_fvgs (FVG )
max_keep (int) : the number of filled, latest FVGs to retain on the chart.
FVGConfig
Fields:
box_args (|robbatt/lib_plot_objects/36;BoxArgs|#OBJ)
line_args (|robbatt/lib_plot_objects/36;LineArgs|#OBJ)
box_show (series__bool)
line_show (series__bool)
keep_filled (series__bool)
extend (series__bool)
FVG
Fields:
config (|FVGConfig|#OBJ)
startbar (series__integer)
mode (series__integer)
top (series__float)
btm (series__float)
center (series__float)
size (series__float)
fill_size (series__float)
fill_lvl_target (series__float)
fill_lvl_current (series__float)
fillbar (series__integer)
filled (series__bool)
_fvg_box (|robbatt/lib_plot_objects/36;Box|#OBJ)
_fill_line (|robbatt/lib_plot_objects/36;Line|#OBJ)
ICT Silver Bullet [LuxAlgo]The ICT Silver Bullet indicator is inspired from the lectures of "The Inner Circle Trader" (ICT) and highlights the Silver Bullet (SB) window which is a specific 1-hour interval where a Fair Value Gap (FVG) pattern can be formed.
When a FVG is formed during the Silver Bullet window, Support & Resistance lines will be drawn at the end of the SB session.
There are 3 different Silver Bullet windows (New York local time):
The London Open Silver Bullet (3 AM — 4 AM ~ 03:00 — 04:00)
The AM Session Silver Bullet (10 AM — 11 AM ~ 10:00 — 11:00)
The PM Session Silver Bullet (2 PM — 3 PM ~ 14:00 — 15:00)
🔶 USAGE
The ICT Silver Bullet indicator aims to provide users a comprehensive display as similar as possible to how anyone would manually draw the concept on their charts.
It's important to use anything below the 15-minute timeframe to ensure proper setups can display. In this section, we are purely using the 3-minute timeframe.
In the image below, we can see a bullish setup whereas a FVG was successfully retested during the Silver Bullet session. This was then followed by a move upwards to liquidity as our target.
Alternatively, you can also see below a bearish setup utilizing the ICT Silver Bullet indicator outlined.
At this moment, the indicator has removed all other FVGs within the Silver Bullet session & has confirmed this FVG as the retested one.
There is also a support level marked below to be used as a liquidity target as per the ICT Silver Bullet concept suggests.
In the below chart we can see 4 separate consecutive examples of bullish & bearish setups on the 3-minute chart.
🔶 CONCEPTS
This technique can visualize potential support/resistance lines, which can be used as targets.
The script contains 2 main components:
• forming of a Fair Value Gap (FVG)
• drawing support/resistance (S/R) lines
🔹 Forming of FVG
1 basic principle: when a FVG at the end of the SB session is not retraced, it will be made invisible.
Dependable on the settings, different FVG's will be shown.
• 'All FVG': all FVG's are shown, regardless the trend
• 'Only FVG's in the same direction of trend': Only FVG's are shown that are similar to the trend at that moment (trend can be visualized by enabling ' Show ' -> ' Trend ')
-> only bearish FVG when the trend is bearish vs. bullish FVG when trend is bullish
• 'strict': Besides being similar to the trend, only FVG's are shown when the closing price at the end of the SB session is:
– below the top of the FVG box (bearish FVG)
– above bottom of the FVG box (bullish FVG)
• 'super-strict': Besides being similar to the trend, only FVG's are shown when the FVG box is NOT broken
in the opposite direction AND the closing price at the end of the SB session is:
– below bottom of the FVG box (bearish FVG)
– above the top of the FVG box (bullish FVG)
' Super-Strict ' mode resembles ICT lectures the most.
🔹 Drawing support/resistance lines
When the SB session has ended, the script draws potential support/resistance lines, again, dependable on the settings.
• Previous session (any): S/R lines are fetched between current and previous session.
For example, when current session is ' AM SB Session (10 AM — 11 AM) ', then previous session is
' London Open SB (3 AM — 4 AM) ', S/R lines between these 2 sessions alone will be included.
• Previous session (similar): S/R lines are fetched between current and previous - similar - session.
For example, when current session is ' London Open SB (3 AM — 4 AM)' , only S/R lines between
current session and previous ' London Open SB (3 AM — 4 AM) ' session are included.
When a new session starts, S/R lines will be removed, except when enabling ' Keep lines (only in strict mode) '
This is not possible in ' All FVG ' or ' Only FVG's in the same direction of trend ' mode, since the chart would be cluttered.
Note that in ' All FVG ' or ' Only FVG's in the same direction of trend ' mode, both, Support/Resistance lines will be shown,
while in Strict/Super-Strict mode:
• only Support lines will be shown if a bearish FVG appears
• only Resistance lines if a bullish FVG is shown
The lines will still be drawn the the end of the SB session, when a valid FVG appears,
but the S/R lines will remain visible and keep being updated until price reaches that line.
This publication contains a "Minimum Trade Framework (mTFW)", which represents the best-case expected price delivery, this is not your actual trade entry - exit range.
• 40 ticks for index futures or indices
• 15 pips for Forex pairs.
When on ' Strict/Super-Strict ' mode, only S/R lines will be shown which are:
• higher than the lowest FVG bottom + mTFW, in a bullish scenario
• lower than the highest FVG bottom - mTFW, in a bearish scenario
When on ' All FVG/Only FVG's in the same direction of trend ' mode, or on non-Forex/Futures/Indices symbols, S/R needs to be higher/lower than SB session high/low.
🔶 SETTINGS
(Check CONCEPTS for deeper insights and explanation)
🔹 Swing settings (left): Sets the length, which will set the lookback period/sensitivity of the Zigzag patterns (which directs the trend)
🔹 Silver Bullet Session; Show SB session: show lines and labels of SB session
Labels can be disabled separately in the ' Style ' section, color is set at the ' Inputs ' section.
🔹 FVG
– Mode
• All FVG
• Only FVG's in the same direction of trend
• Strict
• Super-Strict
– Colors
– Extend: extend till last bar of SB session
🔹 Targets – support/resistance lines
– Previous session (any): S/R lines fetched between current and previous SB session
– Previous session (similar): S/R lines fetched between current and previous similar SB session
– Colors
– Keep lines (only in strict mode)
🔹 Show
– MSS ~ Session: Show Market Structure Shift , only when this happens during a SB session
– Trend: Show trend (Zigzag, colored ~ trend)
MirPapa:ICT:HTF: FVG OB Threeple# MirPapa:ICT:HTF: FVG OB (Fair Value Gap Order Block)
**Version:** Pine Script® v6
**Author:** © goodia
**License:** MPL-2.0 (Mozilla Public License 2.0)
---
## Overview
“FVG OB” (Fair Value Gap Order Block) identifies higher-timeframe candle ranges where a gap (imbalance) exists between two non-consecutive candles, signaling potential institutional order blocks. This module draws bullish or bearish FVG OB boxes on your lower-timeframe chart, extends them until price interacts a specified number of times, and then finalizes (recolors) the box.
---
## Inputs
- **Enable FVG OB Boxes** (`bool`)
Toggle drawing of HTF FVG OB boxes on the chart.
- **Enable FVG OB Midlines** (`bool`)
Toggle drawing of a midpoint line inside each FVG OB box.
- **FVG OB Close Count** (`int` 1–10)
Number of HTF closes beyond the FVG range required to finalize (recolor) the box.
- **FVG OB Bull Color** (`color`)
Fill & border color for bullish FVG OB boxes.
- **FVG OB Bear Color** (`color`)
Fill & border color for bearish FVG OB boxes.
- **FVG OB Box Transparency** (`int` 1–100)
Opacity level for FVG OB box fills (higher = more transparent).
---
## How It Works
1. **HTF Data Retrieval**
- The script uses `request.security()` (via `GetHTFrevised()`) to fetch HTF OHLC and historical values:
- `_htfHigh3` (high three bars ago) and `_htfLow1` (low one bar ago) for bullish FVG OB.
- `_htfLow3` (low three bars ago) and `_htfHigh1` (high one bar ago) for bearish FVG OB.
- It also tracks the HTF `bar_index` on the lower timeframe to align drawing.
2. **FVG OB Detection**
- **Bullish FVG OB**: Occurs when the HTF low of the previous bar (`low `) is strictly above the HTF high of three bars ago (`high `), creating a gap.
- **Bearish FVG OB**: Occurs when the HTF high of the previous bar (`high `) is strictly below the HTF low of three bars ago (`low `), creating a gap.
3. **Box Creation**
- On each new HTF bar (`ta.change(time(HTF)) != 0`), if a bullish or bearish FVG OB condition is met, the script calls `CreateBoxData()` with:
- **Bullish**: `bottom = HTF low `, `top = HTF high `, `_isBull = true`.
- **Bearish**: `bottom = HTF low `, `top = HTF high `, `_isBull = false`.
- Midline toggled by input.
- A `BoxData` struct is created and stored in either the Bull or Bear array.
4. **Box Extension & Finalization**
- On **every LTF bar**, `ProcessBoxDatas(...)` iterates over all active FVG OB boxes:
1. **Extend Right Edge**: `box.set_right(bar_index)` ensures the box follows the latest bar.
2. **Record Volume Delta**: Tracks buy/sell volume inside the box.
3. **Touch Stage Update**: `modBoxUpdateStage()` increments `_stage` when price touches its “basePoint” (for FVG OB, the basePrice is one side of the gap).
4. **Finalize**: `setBoxFinalize()` checks if the configured number of closes beyond the FVG gap (`FVG OB Close Count`) has occurred. If so:
- `_isActive := false`
- Border and background colors are changed to the “Box Close Color” (input).
- Finalized boxes remain on screen semi-transparent, indicating that the FVG OB zone has been tested.
5. **Midline (Optional)**
- If “Enable FVG OB Midlines” is checked, `ProcessBoxDatas()` also extends a horizontal midpoint line inside the box with `line.set_x2(bar_index)`.
---
## Usage Instructions
1. **Installation**
- Copy the FVG OB section of the Pine Script into TradingView’s Pine Editor (ensure the library import is included).
- Click “Add to Chart.”
2. **Configure Inputs**
- Choose a Higher Time Frame via the dropdown (e.g., “4시간” maps to a 4H timeframe).
- Toggle “Enable FVG OB Boxes” and “Enable FVG OB Midlines.”
- Select colors for bullish and bearish boxes and set transparency.
- Adjust “FVG OB Close Count” to control how many closes beyond the gap finalize the box.
3. **Interpretation**
- **Active FVG OB Boxes** extend to the right until price closes beyond the gap range the specified number of times.
- When finalized, each box changes to the “Box Close Color,” signaling that institutional orders in that gap have likely been filled.
Enjoy precise visualization of higher-timeframe Fair Value Gap Order Blocks on your lower-timeframe chart!
NWOG with FVGThe New Week Opening Gap (NWOG) and Fair Value Gap (FVG) combined indicator is a trading tool designed to analyze price action and detect potential support, resistance, and trade entry opportunities based on two significant concepts:
New Week Opening Gap (NWOG): The price range between the high and low of the first candle of the new trading week.
Fair Value Gap (FVG): A price imbalance or gap between candlesticks, where price may retrace to fill the gap, indicating potential support or resistance zones.
When combined, these two concepts help traders identify key price levels (from the new week open) and price imbalances (from FVGs), which can act as powerful indicators for potential market reversals, retracements, or continuation trades.
1. New Week Opening Gap (NWOG):
Definition:
The New Week Opening Gap (NWOG) refers to the range between the high and low of the first candle in a new trading week (often, the Monday open in most markets).
Purpose:
NWOG serves as a significant reference point for market behavior throughout the week. Price action relative to this range helps traders identify:
Support and Resistance zones.
Bullish or Bearish sentiment depending on price’s relation to the opening gap levels.
Areas where the market may retrace or reverse before continuing in the primary trend.
How NWOG is Identified:
The high and low of the first candle of the new week are drawn on the chart, and these levels are used to assess the market's behavior relative to this range.
Trading Strategy Using NWOG:
Above the NWOG Range: If price is trading above the NWOG levels, it signals bullish sentiment.
Below the NWOG Range: If price is trading below the NWOG levels, it signals bearish sentiment.
Price Touching the NWOG Levels: If price approaches or breaks through the NWOG levels, it can indicate a potential retracement or reversal.
2. Fair Value Gap (FVG):
Definition:
A Fair Value Gap (FVG) occurs when there is a gap or imbalance between two consecutive candlesticks, where the high of one candle is lower than the low of the next candle (or vice versa), creating a zone that may act as a price imbalance.
Purpose:
FVGs represent an imbalance in price action, often indicating that the market moved too quickly and left behind a price region that was not fully traded.
FVGs can serve as areas where price is likely to retrace to fill the gap, as traders seek to correct the imbalance.
How FVG is Identified:
An FVG is detected if:
Bearish FVG: The high of one candle is less than the low of the next (gap up).
Bullish FVG: The low of one candle is greater than the high of the next (gap down).
The area between the gap is drawn as a shaded region, indicating the FVG zone.
Trading Strategy Using FVG:
Price Filling the FVG: Price is likely to retrace to fill the gap. A reversal candle in the FVG zone can indicate a trade setup.
Support and Resistance: FVG zones can act as support (in a bullish FVG) or resistance (in a bearish FVG) if the price retraces to them.
Combined Strategy: New Week Opening Gap (NWOG) and Fair Value Gap (FVG):
The combined use of NWOG and FVG helps traders pinpoint high-probability price action setups where:
The New Week Opening Gap (NWOG) acts as a major reference level for potential support or resistance.
Fair Value Gaps (FVG) represent market imbalances where price might retrace to, filling the gap before continuing its move.
Signal Logic:
Buy Signal:
Price touches or breaks above the NWOG range (indicating a bullish trend) and there is a bullish FVG present (gap indicating a support area).
Price retraces to fill the bullish FVG, offering a potential buy opportunity.
Sell Signal:
Price touches or breaks below the NWOG range (indicating a bearish trend) and there is a bearish FVG present (gap indicating a resistance area).
Price retraces to fill the bearish FVG, offering a potential sell opportunity.
Example:
Buy Setup:
Price breaks above the NWOG resistance level, and a bullish FVG (gap down) appears below. Traders can wait for price to pull back to fill the gap and then take a long position when confirmation occurs.
Sell Setup:
Price breaks below the NWOG support level, and a bearish FVG (gap up) appears above. Traders can wait for price to retrace and fill the gap before entering a short position.
Key Benefits of the Combined NWOG & FVG Indicator:
Combines Two Key Concepts:
NWOG provides context for the market's overall direction based on the start of the week.
FVG highlights areas where price imbalances exist and where price might retrace to, making it easier to spot entry points.
High-Probability Setups:
By combining these two strategies, the indicator helps traders spot high-probability trades based on major market levels (from NWOG) and price inefficiencies (from FVG).
Helps Identify Reversal and Continuation Opportunities:
FVGs act as potential support and resistance zones, and when combined with the context of the NWOG levels, it gives traders clearer guidance on where price might reverse or continue its trend.
Clear Visual Signals:
The indicator can plot the NWOG levels on the chart, and shade the FVG areas, providing a clean and easy-to-read chart with entry signals marked for buy and sell opportunities.
Conclusion:
The New Week Opening Gap (NWOG) and Fair Value Gap (FVG) combined indicator is a powerful tool for traders who use price action strategies. By incorporating the New Week's opening range and identifying gaps in price action, this indicator helps traders identify potential support and resistance zones, pinpoint entry opportunities, and increase the probability of successful trades.
This combined strategy enhances your analysis by adding layers of confirmation for trades based on significant market levels and price imbalances. Let me know if you'd like more details or modifications!
Fair Value Gap Oscillator | Flux Charts💎 GENERAL OVERVIEW
Introducing the new Fair Value Gap Oscillator (FVG Oscillator) indicator! This unique indicator identifies and tracks Fair Value Gaps (FVGs) in price action, presenting them in an oscillator format to reveal market momentum based on FVG strength. It highlights bullish and bearish FVGs while enabling traders to adjust detection sensitivity and apply volume and ATR-based filters for more precise setups. For more information about the process, check the "📌 HOW DOES IT WORK" section.
Features of the new FVG Oscillator:
Fully Customizable FVG Detection
An Oscillator Approach To FVGs
Divergence Markers For Potential Reversals
Alerts For Divergence Labels
Customizable Styling
📌 HOW DOES IT WORK?
Fair Value Gaps are price gaps within bars that indicate inefficiencies, often filled as the market retraces. The FVG Oscillator scans historical bars to identify these gaps, then filters them based on ATR or volume. Each FVG is marked as bullish or bearish according to the trend direction that preceded its formation.
An oscillator is calculated using recent FVGs with this formula :
1. The Oscillator starts as 0.
2. When a new FVG Appears, it contributes (FVG Width / ATR) to the oscillator of the corresponding type.
3. Each confirmed bar, the oscillator is recalculated as OSC = OSC * (1 - Decay Coefficient)
The oscillator aggregates and decays past FVGs, allowing recent FVG activity to dominate the signal. This approach emphasizes current market momentum, with oscillations moving bullish or bearish based on FVG intensity. Divergences are marked where FVG oscillations suggest potential reversals. Bullish Divergence conditions are as follows :
1. The current candlestick low must be the lowest of last 25 bars.
2. Net Oscillator (Shown in gray line by default) must be > 0.
3. The current Bullish FVG Oscillator value should be no more than 0.1 below the highest value from the last 25 bars.
Traders can use divergence signals to get an idea of potential reversals, and use the Net FVG Oscillator as a trend following marker.
🚩 UNIQUENESS
The Fair Value Gap Oscillator stands out by converting FVG activity into an oscillator format, providing a momentum-based visualization of FVGs that reveals market sentiment dynamically. Unlike traditional indicators that statically mark FVG zones, the oscillator decays older FVGs over time, showing only the most recent, relevant activity. This approach allows for real-time insight into market conditions and potential reversals based on oscillating FVG strength, making it both intuitive and powerful for momentum trading.
Another unique feature is the combination of customizable ATR and volume filters, letting traders adapt the indicator to match their strategy and market type. You can also set-up alerts for bullish & bearish divergences.
⚙️ SETTINGS
1. General Configuration
Decay Coefficient -> The decay coefficient for oscillators. Increasing this setting will result in oscillators giving the weight to recent FVGs, while decreasing it will distribute the weight equally to the past and recent FVGs.
2. Fair Value Gaps
Zone Invalidation -> Select between Wick & Close price for FVG Zone Invalidation.
Zone Filtering -> With "Average Range" selected, algorithm will find FVG zones in comparison with average range of last bars in the chart. With the "Volume Threshold" option, you may select a Volume Threshold % to spot FVGs with a larger total volume than average.
FVG Detection -> With the "Same Type" option, all 3 bars that formed the FVG should be the same type. (Bullish / Bearish). If the "All" option is selected, bar types may vary between Bullish / Bearish.
Detection Sensitivity -> You may select between Low, Normal or High FVG detection sensitivity. This will essentially determine the size of the spotted FVGs, with lower sensitivies resulting in spotting bigger FVGs, and higher sensitivies resulting in spotting all sizes of FVGs.
3. Style
Divergence Labels On -> You can switch divergence labels to show up on the chart or the oscillator plot.
Smart Money Flow Index (SMFI) - Advanced SMC [PhenLabs]📊Smart Money Flow Index (SMFI)
Version: PineScript™v6
📌Description
The Smart Money Flow Index (SMFI) is an advanced Smart Money Concepts implementation that tracks institutional trading behavior through multi-dimensional analysis. This comprehensive indicator combines volume-validated Order Block detection, Fair Value Gap identification with auto-mitigation tracking, dynamic Liquidity Zone mapping, and Break of Structure/Change of Character detection into a unified system.
Unlike basic SMC indicators, SMFI employs a proprietary scoring algorithm that weighs five critical factors: Order Block strength (validated by volume), Fair Value Gap size and recency, proximity to Liquidity Zones, market structure alignment (BOS/CHoCH), and multi-timeframe confluence. This produces a Smart Money Score (0-100) where readings above 70 represent optimal institutional setup conditions.
🚀Points of Innovation
Volume-Validated Order Block Detection – Only displays Order Blocks when formation candle exceeds customizable volume multiplier (default 1.5x average), filtering weak zones and highlighting true institutional accumulation/distribution
Auto-Mitigation Tracking System – Fair Value Gaps and Order Blocks automatically update status when price mitigates them, with visual distinction between active and filled zones preventing trades on dead levels
Proprietary Smart Money Score Algorithm – Combines weighted factors (OB strength 25%, FVG proximity 20%, Liquidity 20%, Structure 20%, MTF 15%) into single 0-100 confidence rating updating in real-time
ATR-Based Adaptive Calculations – All distance measurements use 14-period Average True Range ensuring consistent function across any instrument, timeframe, or volatility regime without manual recalibration
Dynamic Age Filtering – Automatically removes liquidity levels and FVGs older than configurable thresholds preventing chart clutter while maintaining relevant levels
Multi-Timeframe Confluence Integration – Analyzes higher timeframe bias with customizable multipliers (2-10x) and incorporates HTF trend direction into Smart Money Score for institutional alignment
🔧Core Components
Order Block Engine – Detects institutional supply/demand zones using characteristic patterns (down-move-then-strong-up for bullish, up-move-then-strong-down for bearish) with minimum volume threshold validation, tracks mitigation when price closes through zones
Fair Value Gap Scanner – Identifies price imbalances where current candle's low/high leaves gap with two-candle-prior high/low, filters by minimum size percentage, monitors 50% fill for mitigation status
Liquidity Zone Mapper – Uses pivot high/low detection with configurable lookback to mark swing points where stop losses cluster, extends horizontal lines to visualize sweep targets, manages lifecycle through age-based removal
Market Structure Analyzer – Tracks pivot progression to identify trend through higher-highs/higher-lows (bullish) or lower-highs/lower-lows (bearish), detects Break of Structure and Change of Character for trend/reversal confirmation
Scoring Calculation Engine – Evaluates proximity to nearest Order Blocks using ATR-normalized distance, assesses FVG recency and distance, calculates liquidity proximity with age weighting, combines structure bias and MTF trend into smoothed final score
🔥Key Features
Customizable Display Limits – Control maximum Order Blocks (1-10), Liquidity Zones (1-10), and FVG age (10-200 bars) to maintain clean charts focused on most relevant institutional levels
Gradient Strength Visualization – All zones render with transparency-adjustable coloring where stronger/newer zones appear more solid and weaker/older zones fade progressively providing instant visual hierarchy
Educational Label System – Optional labels identify each zone type (Bullish OB, Bearish OB, Bullish FVG, Bearish FVG, BOS) with color-coded text helping traders learn SMC concepts through practical application
Real-Time Smart Money Score Dashboard – Top-right table displays current score (0-100) with color coding (green >70, yellow 30-70, red <30) plus trend arrow for at-a-glance confidence assessment
Comprehensive Alert Suite – Configurable notifications for Order Block formation, Fair Value Gap detection, Break of Structure events, Change of Character signals, and high Smart Money Score readings (>70)
Buy/Sell Signal Integration – Automatically plots triangle markers when Smart Money Score exceeds 70 with aligned market structure and fresh Order Block detection providing clear entry signals
🎨Visualization
Order Block Boxes – Shaded rectangles extend from formation bar spanning high-to-low of institutional candle, bullish zones in green, bearish in red, with customizable transparency (80-98%)
Fair Value Gap Zones – Rectangular areas marking imbalances, active FVGs display in bright colors with adjustable transparency, mitigated FVGs switch to gray preventing trades on filled zones
Liquidity Level Lines – Dashed horizontal lines extend from pivot creation points, swing highs in bearish color (short targets above), swing lows in bullish color (long targets below), opacity decreases with age
Structure Labels – "BOS" labels appear above/below price when Break of Structure confirmed, colored by direction (green bullish, red bearish), positioned at 1% beyond highs/lows for visibility
Educational Info Panel – Bottom-right table explains key terminology (OB, FVG, BOS, CHoCH) and score interpretation (>70 high probability) with semi-transparent background for readability
📖Usage Guidelines
General Settings
Show Order Blocks – Default: On, toggles visibility of institutional supply/demand zones, disable when focusing solely on FVGs or Liquidity
Show Fair Value Gaps – Default: On, controls FVG zone display including active and mitigated imbalances
Show Liquidity Zones – Default: On, manages liquidity line visibility, disable on lower timeframes to reduce clutter
Show Market Structure – Default: On, toggles BOS/CHoCH label display
Show Smart Money Score – Default: On, controls score dashboard visibility
Order Block Settings
OB Lookback Period – Default: 20, Range: 5-100, controls bars scanned for Order Block patterns, lower values detect recent activity, higher values find older blocks
Min Volume Multiplier – Default: 1.5, Range: 1.0-5.0, sets minimum volume threshold as multiple of 20-period average, higher values (2.0+) filter for strongest institutional candles
Max Order Blocks to Display – Default: 3, Range: 1-10, limits simultaneous Order Blocks shown, lower settings (1-3) maintain focus on most recent zones
Fair Value Gap Settings
Min FVG Size (%) – Default: 0.3, Range: 0.1-2.0, defines minimum gap size as percentage of close price, lower values detect micro-imbalances, higher values focus on significant gaps
Max FVG Age (bars) – Default: 50, Range: 10-200, removes FVGs older than specified bars, lower settings (10-30) for scalping, higher (100-200) for swing trading
Show FVG Mitigation – Default: On, displays filled FVGs in gray providing visual history, disable to show only active untouched imbalances
Liquidity Zone Settings
Liquidity Lookback – Default: 50, Range: 20-200, sets pivot detection period for swing highs/lows, lower values (20-50) mark shorter-term liquidity, higher (100-200) identify major swings
Max Liquidity Age (bars) – Default: 100, Range: 20-500, removes liquidity lines older than specified bars, adjust based on timeframe
Liquidity Sensitivity – Default: 0.5, Range: 0.1-1.0, controls pivot detection sensitivity, lower values mark only major swings, higher values identify minor swings
Max Liquidity Zones to Display – Default: 3, Range: 1-10, limits total liquidity levels shown maintaining chart clarity
Market Structure Settings
Pivot Length – Default: 5, Range: 3-15, defines bars to left/right for pivot validation, lower values (3-5) create sensitive structure breaks, higher (10-15) filter for major shifts
Min Structure Move (%) – Default: 1.0, Range: 0.1-5.0, sets minimum percentage move required between pivots to confirm structure change
Multi-Timeframe Settings
Enable MTF Analysis – Default: On, activates higher timeframe trend analysis incorporation into Smart Money Score
Higher Timeframe Multiplier – Default: 4, Range: 2-10, multiplies current timeframe to determine analysis timeframe (4x on 15min = 1hour)
Visual Settings
Bullish Color – Default: Green (#089981), sets color for bullish Order Blocks, FVGs, and structure elements
Bearish Color – Default: Red (#f23645), defines color for bearish elements
Neutral Color – Default: Gray (#787b86), controls color of mitigated zones and neutral elements
Show Educational Labels – Default: On, displays text labels on zones identifying type (OB, FVG, BOS), disable once familiar with patterns
Order Block Transparency – Default: 92, Range: 80-98, controls Order Block box transparency
FVG Transparency – Default: 92, Range: 80-98, sets Fair Value Gap zone transparency independently from Order Blocks
Alert Settings
Alert on Order Block Formation – Default: On, triggers notification when new volume-validated Order Block detected
Alert on FVG Formation – Default: On, sends alert when Fair Value Gap appears enabling quick response to imbalances
Alert on Break of Structure – Default: On, notifies when BOS or CHoCH confirmed
Alert on High Smart Money Score – Default: On, alerts when Smart Money Score crosses above 70 threshold indicating high-probability setup
✅Best Use Cases
Order Block Retest Entries – After Break of Structure, wait for price retrace into fresh bullish Order Block with Smart Money Score >70, enter long on zone reaction targeting next liquidity level
Fair Value Gap Retracement Trading – When price creates FVG during strong move then retraces, enter as price approaches unfilled gap expecting institutional orders to continue trend
Liquidity Sweep Reversals – Monitor price approaching swing high/low liquidity zones against prevailing Smart Money Score trend, after stop hunt sweep watch for rejection into premium Order Block/FVG
Multi-Timeframe Confluence Setups – Identify alignment when current timeframe Order Block coincides with higher timeframe FVG plus MTF analysis showing matching trend bias
Break of Structure Continuations – After BOS confirms trend direction, trade pullbacks to nearest Order Block or FVG in direction of structure break using Smart Money Score >70 as entry filter
Change of Character Reversal Plays – When CHoCH detected indicating potential reversal, look for Smart Money Score pivot with opposing Order Block formation then enter on structure confirmation
⚠️Limitations
Lagging Pivot Calculations – Pivot-based features (Liquidity Zones, Market Structure) require bars to right of pivot for confirmation, meaning these elements identify levels retrospectively with delay equal to lookback period
Whipsaw in Ranging Markets – During choppy conditions, Order Blocks fail frequently and structure breaks produce false signals as Smart Money Score fluctuates without clear institutional bias, best used in trending markets
Volume Data Dependency – Order Block volume validation requires accurate volume data which may be incomplete on Forex pairs or limited in crypto exchange feeds
Subjectivity in Scoring Weights – Proprietary 25-20-20-20-15 weighting reflects general institutional behavior but may not optimize for specific instruments or market regimes, user cannot adjust factor weights
Visual Complexity on Lower Timeframes – Sub-hour timeframes generate excessive zones creating cluttered charts, requires aggressive display limit reduction and higher minimum thresholds
No Fundamental Integration – Indicator analyzes purely technical price action and volume without incorporating economic events, news catalysts, or fundamental shifts that override technical levels
💡What Makes This Unique
Unified SMC Ecosystem – Unlike indicators displaying Order Blocks OR FVGs OR Liquidity separately, SMFI combines all three institutional concepts plus market structure into single cohesive system
Proprietary Confidence Scoring – Rather than manual setup assessment, automated Smart Money Score quantifies probability by weighting five institutional dimensions into actionable 0-100 rating
Volume-Filtered Quality – Eliminates weak Order Blocks forming without institutional volume confirmation, ensuring displayed zones represent genuine accumulation/distribution
Adaptive Lifecycle Management – Automatically updates mitigation status and removes aged zones preventing trades on dead levels through continuous validity and age monitoring
Educational Integration – Built-in tooltips, labeled zones, and reference panel make indicator functional for both learning Smart Money Concepts and executing strategies
🔬How It Works
Order Block Detection – Scans for patterns where strong directional move follows counter-move creating last down-candle before rally (bullish OB) or last up-candle before sell-off (bearish OB), validates formations only when candle exhibits volume exceeding configurable multiple (default 1.5x) of 20-bar average volume
Fair Value Gap Identification – Compares current candle’s high/low against two-candles-prior low/high to detect price imbalances, calculates gap size as percentage of close and filters micro-gaps below minimum threshold (default 0.3%), monitors whether subsequent price fills 50% triggering mitigation status
Liquidity Zone Mapping – Employs pivot detection using configurable lookback (default 50 bars) to identify swing highs/lows where retail stops cluster, extends horizontal reference lines from pivot creation and applies age-based filtering to remove stale zones
Market Structure Analysis – Tracks pivot progression using structure-specific lookback (default 5 bars) to determine trend, confirms uptrend when new pivot high exceeds previous by minimum move percentage, detects Break of Structure when price breaks recent pivot level, flags Change of Character for potential reversals
Multi-Timeframe Confluence – When enabled, requests security data from higher timeframe (current TF × HTF multiplier, default 4x), compares HTF close against HTF 20-period MA to determine bias, contributes ±50 points to score ensuring alignment with institutional positioning on superior timeframe
Smart Money Score Calculation – Evaluates Order Block component via ATR-normalized distance producing max 100-point contribution weighted at 25%, assesses FVG factor through age penalty and distance at 20% weight, calculates Liquidity proximity at 20%, incorporates structure bias (±50-100 points) at 20%, adds MTF component at 15%, applies 3-period smoothing to reduce volatility
Visual Rendering and Lifecycle – Draws Order Block boxes, Fair Value Gap rectangles with color coding (green/red active, gray mitigated), extends liquidity dashed lines with fade-by-age opacity, plots BOS labels, displays Smart Money Score dashboard, continuously updates checking mitigation conditions and removing elements exceeding age/display limits
💡Note:
The Smart Money Flow Index combines multiple Smart Money Concepts into unified institutional order flow analysis. For optimal results, use the Smart Money Score as confluence filter rather than standalone entry signal – scores above 70 indicate high-probability setups but should be combined with risk management, higher timeframe bias, and market regime understanding.
Momentum-Based Fair Value Gaps [BackQuant]Momentum-Based Fair Value Gaps
A precision tool that detects Fair Value Gaps and color-codes each zone by momentum, so you can quickly tell which imbalances matter, which are likely to fill, and which may power continuation.
What is a Fair Value Gap
A Fair Value Gap is a 3-candle price imbalance that forms when the middle candle expands fast enough that it leaves a void between candle 1 and candle 3.
Bullish FVG : low > high . This marks a bullish imbalance left beneath price.
Bearish FVG : high < low . This marks a bearish imbalance left above price.
These zones often act as magnets for mean reversion or as fuel for trend continuation when price respects the gap boundary and runs.
Why add momentum
Not all gaps are equal. This script measures momentum with RSI on your chosen source and paints each FVG with a momentum heatmap. Strong-momentum gaps are more likely to hold or propel continuation. Weak-momentum gaps are more likely to fill.
Core Features
Auto FVG Detection with size filters in percent of price.
Momentum Heatmap per gap using RSI with smoothing. Multiple palettes: Gradient, Discrete, Simple, and scientific schemes like Viridis, Plasma, Inferno, Magma, Cividis, Turbo, Jet, plus Red-Green and Blue-White-Red.
Bull and Bear Modes with independent toggles.
Extend Until Filled : keep drawing live to the right until price fully fills the gap.
Auto Remove Filled for a clean chart.
Optional Labels showing the smoothed RSI value stored at the gap’s birth.
RSI-based Filters : only accept bullish gaps when RSI is oversold and bearish gaps when RSI is overbought.
Performance Controls : cap how many FVGs to keep on chart.
Alerts : new bullish or bearish FVG, filled FVG, and extreme RSI FVGs.
How it works
Source for Momentum : choose Returns, Close, or Volume.
Returns computes percent change over a short lookback to focus on impulse quality.
RSI and Smoothing : RSI length and a small SMA smooth the signal to stabilize the color coding.
Gap Scan : each bar checks for a 3-candle bullish or bearish imbalance that also clears your minimum size filter in percent of price.
Heatmap Color : the gap is painted at creation with a color from your palette based on the smoothed RSI value, preserving the momentum signature that formed it.
Lifecycle : if Extend Unfilled is on, the zone projects forward until price fully trades through the far edge. If Auto Remove is on, a filled gap is deleted immediately.
How to use it
Scan for structure : turn on both bullish and bearish FVGs. Start with a moderate Min FVG Size percent to reduce noise. You will see stacked clusters in trends and scattered singletons in chop.
Read the colors : brighter or stronger palette values imply stronger momentum at gap formation. Weakly colored gaps are lower conviction.
Decide bias : bullish FVGs below price suggest demand footprints. Bearish FVGs above price suggest supply footprints. Use the heatmap and RSI value to rank importance.
Choose your playbook :
Mean reversion : target partial or full fills of opposing FVGs that were created on weak momentum or that sit against higher timeframe context.
Trend continuation : look for price to respect the near edge of a strong-momentum FVG, then break away in the direction of the original impulse.
Manage risk : in continuation ideas, invalidation often sits beyond the opposite edge of the active FVG. In reversion ideas, invalidation sits beyond the gap that should attract price.
Two trade playbooks
Continuation - Buy the hold of a bullish FVG
Context uptrend.
A bullish FVG prints with strong RSI color.
Price revisits the top of the gap, holds, and rotates up. Enter on hold or first higher low inside or just above the gap.
Invalidation: below the gap bottom. Targets: prior swing, measured move, or next LV area.
Reversion - Fade a weak bearish FVG toward fill
Context range or fading trend.
A bearish FVG prints with weak RSI color near a completed move.
Price fails to accelerate lower and rotates back into the gap.
Enter toward mid-gap with confirmation.
Invalidation: above gap top. Target: opposite edge for a full fill, or the gap midline for partials.
Key settings
Max FVG Display : memory cap to keep charts fast. Try 30 to 60 on intraday.
Min FVG Size % : sets a quality floor. Start near 0.20 to 0.50 on liquid markets.
RSI Length and Smooth : 14 and 3 are balanced. Increase length for higher timeframe stability.
RSI Source :
Returns : most sensitive to true momentum bursts
Close : traditional.
Volume : uses raw volume impulses to judge footprint strength.
Filter by RSI Extremes : tighten rules so only the most stretched gaps print as signals.
Heatmap Style and Palette : pick a palette with good contrast for your background. Gradient for continuous feel, Discrete for quick zoning, Simple for binary, Palette for scientific schemes.
Extend Unfilled - Auto Remove : choose live projection and cleanup behavior to match your workflow.
Reading the chart
Bullish zones sit beneath price. Respect and hold of the upper boundary suggests demand. Strong green or warm palette tones indicate impulse quality.
Bearish zones sit above price. Respect and hold of the lower boundary suggests supply. Strong red or cool palette tones indicate impulse quality.
Stacking : multiple same-direction gaps stacked in a trend create ladders. Ladders often act as stepping stones for continuation.
Overlapping : opposing gaps overlapping in a small region usually mark a battle zone. Expect chop until one side is absorbed.
Workflow tips
Map higher timeframe trend first. Use lower timeframe FVGs for entries aligned with the higher timeframe bias.
Increase Min FVG Size percent and RSI length for noisy symbols.
Use labels when learning to correlate the RSI numbers with your palette colors.
Combine with VWAP or moving averages for confluence at FVG edges.
If you see repeated fills and refills of the same zone, treat that area as fair value and avoid chasing.
Alerts included
New Bullish FVG
New Bearish FVG
Bullish FVG Filled
Bearish FVG Filled
Extreme Oversold FVG - bullish
Extreme Overbought FVG - bearish
Practical defaults
RSI Length 14, Smooth 3, Source Returns.
Min FVG Size 0.25 percent on liquid majors.
Heatmap Style Gradient, Palette Viridis or Turbo for contrast.
Extend Unfilled on, Auto Remove on for a clean live map.
Notes
This tool does not predict the future. It maps imbalances and momentum so you can frame trades with clearer context, cleaner invalidation, and better ranking of which gaps matter. Use it with risk control and in combination with your broader process.
Fair Value Gap [LuxAlgo]Fair value gaps (FVG) highlight imbalances areas between market participants and have become popular amongst technical analysts. The following script aims to display fair value gaps alongside the percentage of filled gaps and the average duration (in bars) before gaps are filled.
Users can be alerted when an FVG is filled using the alerts built into this script.
🔶 USAGE
In practice, FVG's highlight areas of support (bullish FVG) and resistances (bearish FVG). Once a gap is filled, suggesting the end of the imbalance, we can expect the price to reverse.
This approach is more contrarian in nature, users wishing to use a more trend-following approach can use the identification of FVG as direct signals, going long with the identification of a bullish FVG, and short with a bearish FVG.
🔹 Mitigation
By default, the script highlights the areas of only unmitigated FVG's. Users can however highlight the mitigation level of mitigated FVG's, that is the lower extremity of bullish FVG's and the upper extremity of bearish FVG's.
The user can track the evolution of a mitigated FVG's using the "Dynamic" setting.
🔹 Threshold
The gap height can be used to determine the degree of imbalance between buying and selling market participants. Users can filter fair value gaps based on the gap height using the "Threshold %" setting. Using the "Auto" will make use of an automatic threshold, only keeping more volatile FVG's.
🔶 DETAILS
We use the following rules for detecting FVG's in this script:
Bullish FVG
low > high(t-2)
close(t-1) > high(t-2)
(low - high(t-2)) / high(t-2) > threshold
Upper Bullish FVG = low
Lower Bullish FVG = high(t-2)
Bearish FVG
high < low(t-2)
close(t-1) < low(t-2)
(low(t-2) - high) / high < -threshold
Upper Bearish FVG = low(t-2)
Lower Bearish FVG = high
🔶 SETTINGS
Threshold %: Threshold percentage used to filter our FVG's based on their height.
Auto Threshold: Use the cumulative mean of relative FVG heights as threshold.
Unmitigatted Levels: Extent the mitigation level of the number of unmitigated FVG's set by the user.
Mitigation Levels: Show the mitigation levels of mitigated FVG's.
Timeframe : Timeframe of the price data used to detect FVG's.
Setup Finder by cryptokazancevEnglish
The indicator helps find setups based on Smart Money instruments
What OB and FVG Are
Order Blocks (OB) are a bullish or bearish candle (or several candles) where the next candle (or a sequence of candles) impulsively engulfs the order block.
Imbalance (FVG) is a price inefficiency caused by an impulsive price move due to an abnormal dominance of supply or demand at a price level.
Indicator Settings (in Simple Terms)
Show OB — enable/disable displaying the detected order blocks on the chart.
Show FVG — enable/disable displaying the detected FVG zones.
Max OB (per side) — how many long and how many short order blocks to display at the same time.
Max FVG (per side) — how many long and how many short FVG zones to display at the same time.
Engulfing Window (candles) — how many subsequent candles are allowed to consider the order block “engulfed.”
Color Engulfing Candles — highlight candles where the engulfing occurred to make it easier to spot on history.
OB Invalidation Mode — when to consider an order block “broken” (invalid):
“50%” — the OB is considered invalid if price closes with the candle body below/above the midpoint (50%) of the order block.
“Entry Drill” — the OB becomes invalid on the first touch of the OB zone.
Size Limits via ATR
OB Size in ATR — here ATR is defined as the average candle size over the last 500 bars. It is used to determine the maximum allowed size of an order block.
FVG Size in ATR — the same, but for an FVG zone: a limit on what FVG size is considered acceptable.
Setup Search Mode
Enable Setup Search Mode — when enabled, the indicator will not display all OB and FVG, but only those that contain:
pivots, or
a Sunday Open level, or
both.
Require Pivots / Require Sunday Open — a requirement that the OB/FVG zone must contain pivots and/or Sunday Open levels (depending on the selected option).
Number of Sunday Open Levels — how many Sunday Open levels to draw on the chart.
How to use
Enable Setup Search Mode .
Turn on the requirements Require Pivots and Require Sunday Open so that only the most relevant OB/FVG zones are displayed.
Wait for price to return into the highlighted Order Block or FVG area.
On a lower timeframe, look for an entry model/confirmation, such as:
engulfing,
pin bar,
break of structure / Market Structure Shift (MSS).
Repainting
The indicator does not repaint.
Русский
Индикатор помогает находить сетапы по торговой стратегии Павла Казанцева.
Что такое OB и FVG
Ордерблоки (OB) — это бычья или медвежья свеча (или несколько свеч), при этом следующая свеча (или связка свеч) импульсно поглощает ордерблок.
Имбаланс (FVG) — это ценовая неэффективность, вызванная импульсным движением цены вследствие аномального превосходства спроса/предложения на ценовом уровне.
Настройки индикатора (простыми словами)
Показывать OB — включить/выключить отображение найденных ордерблоков на графике.
Показывать FVG — включить/выключить отображение найденных зон FVG.
Максимум OB (на сторону) — сколько лонговых и сколько шортовых ордерблоков показывать одновременно.
Максимум FVG (на сторону) — сколько лонговых и сколько шортовых зон FVG показывать одновременно.
Окно поглощения (свечей) — сколько следующих свечей допускается, чтобы считать, что ордерблок был “поглощён”.
Окрашивать поглощённые свечи — подсвечивать свечи, где произошло поглощение, чтобы проще было искать это на истории.
Режим инвалидации OB — когда считать ордерблок “сломавшимся” (недействительным):
“50%” — OB считается недействительным, если цена закрепилась телом свечи ниже/выше середины (50%) ордерблока.
“Entry Drill” — OB становится недействительным при первом касании зоны OB.
Ограничение размеров через ATR
Размер OB в ATR — ATR здесь понимается как средний размер свечей за последние 500 баров. От него считается, какой максимальный размер ордерблока допустим.
Размер FVG в ATR — то же самое, но для зоны FVG: ограничение, какой размер FVG считается допустимым.
Режим поиска сетапов
Включить режим поиска сетапов — если включить, индикатор будет показывать не все OB и FVG, а только те, внутри которых есть:
пивоты, или
уровень Sunday Open, или
и то, и другое.
Обязательно Пивоты / Обязательно Sunday Open — требование, чтобы в зоне OB/FVG обязательно были пивоты и/или уровни Sunday Open (в зависимости от выбранной опции).
Количество уровней Sunday Open — сколько уровней Sunday Open рисовать на графике.
Как пользоваться
Включите режим поиска сетапов .
Активируйте требования Обязательно Пивоты и Обязательно Sunday Open , чтобы отображались только наиболее релевантные зоны OB/FVG.
Дождитесь, когда цена вернётся в отмеченный диапазон ордерблока или FVG .
На младшем таймфрейме найдите модель входа/подтверждение, например:
поглощение,
пинбар,
слом структуры / Market Structure Shift (MSS).
Перерисовка
Индикатор ничего не перерисовывает.
Pivots + FVG + Liquidity Sweeps (Smart Entry)//@version=5
indicator("Pivots + FVG + Liquidity Sweeps (Smart Entry)", overlay=true, max_labels_count=500, max_boxes_count=500)
// ===== INPUTS =====
pivotLeft = input.int(5, "Pivot left bars", minval=1)
pivotRight = input.int(5, "Pivot right bars", minval=1)
sweepLookback = input.int(20, "Lookback for sweep detection (bars)")
sweepAtrMultiplier = input.float(1.0, "Sweep strength (ATR multiplier)")
fvg_max_age = input.int(200, "FVG box expiry (bars)")
show_pivots = input.bool(true, "Show pivot markers")
show_sweeps = input.bool(true, "Show liquidity sweeps")
show_fvgs = input.bool(true, "Show FVG boxes")
require_sweep_for_entry = input.bool(false, "Require recent sweep for smart entry")
confirmation_type = input.string("Bullish/Bearish Engulf", "Confirmation type", options= )
fvg_min_width = input.int(1, "Min FVG width (ticks)", minval=0)
// ===== ATR =====
atrLen = input.int(14, "ATR length")
atr = ta.atr(atrLen)
// ===== PIVOTS =====
ph = ta.pivothigh(high, pivotLeft, pivotRight)
pl = ta.pivotlow(low, pivotLeft, pivotRight)
if show_pivots
if not na(ph)
label.new(bar_index - pivotRight, ph, "PH", style=label.style_label_down, color=color.red, textcolor=color.white, size=size.small)
if not na(pl)
label.new(bar_index - pivotRight, pl, "PL", style=label.style_label_up, color=color.green, textcolor=color.white, size=size.small)
// ===== FVG STRUCT =====
type FVG
float top
float bottom
int born_bar
bool bullish
var FVG fvgs = array.new()
var box fvgBoxes = array.new()
// ===== FVG DETECTION =====
if barstate.isconfirmed
prevHigh = high
prevLow = low
if low > prevHigh and (low - prevHigh) >= syminfo.mintick * fvg_min_width
array.push(fvgs, FVG.new(low, prevHigh, bar_index, true))
if high < prevLow and (prevLow - high) >= syminfo.mintick * fvg_min_width
array.push(fvgs, FVG.new(prevLow, high, bar_index, false))
// cleanup old FVGs
for i = array.size(fvgs) - 1 to 0
f = array.get(fvgs, i)
if bar_index - f.born_bar > fvg_max_age
array.remove(fvgs, i)
// ===== DRAW FVG BOXES =====
if show_fvgs
for i = 0 to array.size(fvgBoxes) - 1
box.delete(array.get(fvgBoxes, i))
array.clear(fvgBoxes)
for i = 0 to array.size(fvgs) - 1
f = array.get(fvgs, i)
col = f.bullish ? color.new(color.green, 85) : color.new(color.red, 85)
bx = box.new(f.born_bar, f.top, bar_index, f.bottom, bgcolor=col, border_width=0)
array.push(fvgBoxes, bx)
// ===== LIQUIDITY SWEEPS =====
var int lastBullSweepBar = na
var int lastBearSweepBar = na
priorHigh = ta.highest(high , sweepLookback)
priorLow = ta.lowest(low , sweepLookback)
bullSweep = high > priorHigh + sweepAtrMultiplier * atr and close < priorHigh
bearSweep = low < priorLow - sweepAtrMultiplier * atr and close > priorLow
if barstate.isconfirmed
if bullSweep
lastBullSweepBar := bar_index
if show_sweeps
label.new(bar_index, high, "Bull Sweep", style=label.style_label_down, color=color.orange, textcolor=color.white, size=size.small)
if bearSweep
lastBearSweepBar := bar_index
if show_sweeps
label.new(bar_index, low, "Bear Sweep", style=label.style_label_up, color=color.orange, textcolor=color.white, size=size.small)
// ===== CONFIRMATION =====
isBullEngulf() => close > open and open < close and close > open
isBearEngulf() => close < open and open > close and close < open
isAnyBull() => close > open
isAnyBear() => close < open
// ===== SMART ENTRY =====
for i = array.size(fvgs) - 1 to 0
f = array.get(fvgs, i)
inFvg = close <= f.top and close >= f.bottom
if inFvg
okSweep = true
if require_sweep_for_entry
okSweep := f.bullish ? (not na(lastBullSweepBar) and bar_index - lastBullSweepBar <= sweepLookback) : (not na(lastBearSweepBar) and bar_index - lastBearSweepBar <= sweepLookback)
if okSweep
confirm = confirmation_type == "Bullish/Bearish Engulf" ? (f.bullish ? isBullEngulf() : isBearEngulf()) : confirmation_type == "Close Above/Below FVG" ? (f.bullish ? close > f.top : close < f.bottom) : (f.bullish ? isAnyBull() : isAnyBear())
if confirm
if f.bullish
label.new(bar_index, low, "Smart Long", style=label.style_label_up, color=color.lime, textcolor=color.black, size=size.normal)
else
label.new(bar_index, high, "Smart Short", style=label.style_label_down, color=color.fuchsia, textcolor=color.white, size=size.normal)
break
ICT First Presented FVG with Volume Imbalance [1st P. FVG + VI]The indicator identifies and highlights the first presented Fair Value Gap (FVG) occurringthe morning (09:30–10:00) and afternoon (13:30–14:00) session's first 30 minutes. It includes an optional feature to extend FVG zones when a volume imbalance (V.I.) is detected, providing additional context for areas of potential price inefficiency. This powerful combination helps traders identify significant market structure gaps that often act as support/resistance zones and potential price targets.
What is an FVG?
A Fair Value Gap, often abbreviated as FVG, is a price range on a chart where there is an inefficiency or imbalance in trading. This typically happens when price moves rapidly in one direction, leaving a gap between the wicks or bodies of three consecutive candles. For example, in a bullish move, if the low of the third candle is higher than the high of the first candle, the space between them is the FVG.
What is a Volume Imbalance?
A volume imbalance is a smaller, more precise inefficiency within price action, often visible as a "crack" or thin area in the price delivery. It represents a spot where the volume traded was not balanced between buyers and sellers, often seen as a thin wick or a gap between candle bodies.
FVG + Volume Imbalance:
When you have a fair value gap that contains a volume imbalance, it becomes a more significant area of interest. ICT teaches that you should not ignore a volume imbalance if it’s part of an FVG. In fact, you should use the volume imbalance in conjunction with the FVG to define your trading range more accurately
📊 Volume Imbalance Integration
Toggle Option: Enable/disable volume imbalance detection based on preference
Extended Boundaries: When enabled, FVG boundaries expand to include volume imbalance zones
Accurate Gap Sizing: Total gap calculation includes volume imbalance extensions
Multi-Scenario Support: Handles volume imbalances at start, end, or both sides of FVG formations
📈 Multiple Display Modes
Current Day: Shows only today's FVGs for clean chart analysis
Current Week: Displays all weekly FVGs for broader context
Forward Extension: Extends FVG boxes and CE, Upper/Lower Quadrant lines into the future
📊 Visualization
Bullish FVGs appear in semi-transparent blue or purple zones (depending on session).
Bearish FVGs appear in red or orange zones.
Optional dotted lines mark the CE (midpoint) of each FVG for additional reference.
Quadrant Division: Additional 25%/75% lines for large FVGs (configurable minimum gap size)
🎯 Smart Filtering
First Presentation Only: Only displays the initial FVG in each session, avoiding clutter
Minimum Gap Size: Configurable tick-based thresholds for AM and PM sessions
Core FVG Validation: Ensures only valid Fair Value Gaps are displayed
⚙️ Configuration Options
Display Settings
Show Mode: Current Day or Current Week view
Forward Extension: 1-500 bars projection
Day Labels: Toggle weekday labels in weekly mode
Text Color: Customizable label colors
Volume Imbalance Settings
Include Volume Imbalance: Master toggle for enhanced boundary calculation
Automatic Detection: Identifies imbalance scenarios without additional input
Session-Specific Settings
AM Session (09:30-10:00):
Enable/disable AM FVG detection
Customizable bullish/bearish colors
CE line visibility and coloring
Minimum gap size in ticks
PM Session (13:30-14:00):
Enable/disable PM FVG detection
Customizable bullish/bearish colors
CE line visibility and coloring
Minimum gap size in ticks
Quadrant Settings
Enable/Disable: Toggle quadrant line display
Minimum Gap: Tick threshold for quadrant activation
Line Style: Dotted, dashed, or solid
Color: Customizable quadrant line color
How It Works
FVG Boundary Calculation
Traditional FVG: High to Low (bullish) or Low to High (bearish)
Enhanced FVG: Extended boundaries to include volume imbalance zones when enabled
Total Gap Size: Calculated including any volume imbalance extensions
Volume Imbalance Detection
The indicator identifies volume imbalances by detecting bars where:
Bullish Imbalance: Current bar's body is completely above previous bar's body
Bearish Imbalance: Current bar's body is completely below previous bar's body
⚠️ Disclaimer
This script is a technical visualization tool only.
It does not provide financial advice, signals, or predictions. Always perform independent analysis and manage risk appropriately before making trading decisions.
Inverse FVG with Quadrants [Modified]# Inverse FVG with Quadrants
*Modified version of original indicator by **tradeforopp**
## Overview
This advanced Fair Value Gap (FVG) indicator identifies both regular and inverse fair value gaps with precision, displaying them in a visually intuitive quadrant-based system. The enhanced version now features automatic timeframe selection that aligns higher timeframe FVGs with your current chart period for multi-timeframe analysis.
## Key Features
### 🔹 Fair Value Gap Detection
- **Regular FVGs**: Identifies traditional bullish and bearish fair value gaps
- **Inverse FVGs**: Automatically detects and displays inverse fair value gaps when price closes through a regular FVG
- **Quadrant Display**: Shows only the relevant half of each FVG for cleaner visual analysis (upper quadrant for bullish patterns, lower quadrant for bearish)
### 🔹 Smart Timeframe Management
- **Auto Timeframe Selection**: Automatically selects the appropriate higher timeframe based on your current chart:
- 1min → 15min
- 3min → 30min
- 5min → 1h
- 15min → 4h
- 1h → Daily
- 4h → Weekly
- **Manual Override**: Optional manual timeframe selection still available
### 🔹 Visual Customization
- Adjustable colors for both regular and inverse FVGs
- Optional box extension
- Customizable display limits to prevent chart clutter
- Session filtering capabilities
### 🔹 Trading Signals
- FVGs provide potential support/resistance zones and price targets
- Inverse FVGs offer confirmation of trend continuation or reversal
- Alert conditions for new FVG creation, regular FVG, and inverse FVG events
## How to Use
1. Apply the indicator to your chart
2. Enable "Auto Timeframe Selection" for multi-timeframe analysis (recommended)
3. Adjust displacement settings to filter for more significant FVGs
4. Use regular FVGs as potential zones where price may return to fill the gap
5. Watch for inverse FVGs as confirmation signals when price breaks through regular FVGs
This refined indicator combines powerful FVG analysis with automatic timeframe alignment to provide traders with clear, actionable insights across multiple timeframes. Perfect for both intraday traders and swing traders looking for high-probability entry and exit points.
Credits to @tradeforopp for creating the original version of this indicator. This is a modified version with enhanced features while preserving the core functionality.
## Tips
- Blue boxes (FVG+) indicate bullish fair value gaps (potential support)
- Red boxes (FVG-) indicate bearish fair value gaps (potential resistance)
- When price closes through an FVG, watch for the inverse FVG as a confirmation signal
- Use the dashed centerline as a potential target within each FVG
MMXM ICT [TradingFinder] Market Maker Model PO3 CHoCH/CSID + FVG🔵 Introduction
The MMXM Smart Money Reversal leverages key metrics such as SMT Divergence, Liquidity Sweep, HTF PD Array, Market Structure Shift (MSS) or (ChoCh), CISD, and Fair Value Gap (FVG) to identify critical turning points in the market. Designed for traders aiming to analyze the behavior of major market participants, this setup pinpoints strategic areas for making informed trading decisions.
The document introduces the MMXM model, a trading strategy that identifies market maker activity to predict price movements. The model operates across five distinct stages: original consolidation, price run, smart money reversal, accumulation/distribution, and completion. This systematic approach allows traders to differentiate between buyside and sellside curves, offering a structured framework for interpreting price action.
Market makers play a pivotal role in facilitating these movements by bridging liquidity gaps. They continuously quote bid (buy) and ask (sell) prices for assets, ensuring smooth trading conditions.
By maintaining liquidity, market makers prevent scenarios where buyers are left without sellers and vice versa, making their activity a cornerstone of the MMXM strategy.
SMT Divergence serves as the first signal of a potential trend reversal, arising from discrepancies between the movements of related assets or indices. This divergence is detected when two or more highly correlated assets or indices move in opposite directions, signaling a likely shift in market trends.
Liquidity Sweep occurs when the market targets liquidity in specific zones through false price movements. This process allows major market participants to execute their orders efficiently by collecting the necessary liquidity to enter or exit positions.
The HTF PD Array refers to premium and discount zones on higher timeframes. These zones highlight price levels where the market is in a premium (ideal for selling) or discount (ideal for buying). These areas are identified based on higher timeframe market behavior and guide traders toward lucrative opportunities.
Market Structure Shift (MSS), also referred to as ChoCh, indicates a change in market structure, often marked by breaking key support or resistance levels. This shift confirms the directional movement of the market, signaling the start of a new trend.
CISD (Change in State of Delivery) reflects a transition in price delivery mechanisms. Typically occurring after MSS, CISD confirms the continuation of price movement in the new direction.
Fair Value Gap (FVG) represents zones where price imbalance exists between buyers and sellers. These gaps often act as price targets for filling, offering traders opportunities for entry or exit.
By combining all these metrics, the Smart Money Reversal provides a comprehensive tool for analyzing market behavior and identifying key trading opportunities. It enables traders to anticipate the actions of major players and align their strategies accordingly.
MMBM :
MMSM :
🔵 How to Use
The Smart Money Reversal operates in two primary states: MMBM (Market Maker Buy Model) and MMSM (Market Maker Sell Model). Each state highlights critical structural changes in market trends, focusing on liquidity behavior and price reactions at key levels to offer precise and effective trading opportunities.
The MMXM model expands on this by identifying five distinct stages of market behavior: original consolidation, price run, smart money reversal, accumulation/distribution, and completion. These stages provide traders with a detailed roadmap for interpreting price action and anticipating market maker activity.
🟣 Market Maker Buy Model
In the MMBM state, the market transitions from a bearish trend to a bullish trend. Initially, SMT Divergence between related assets or indices reveals weaknesses in the bearish trend. Subsequently, a Liquidity Sweep collects liquidity from lower levels through false breakouts.
After this, the price reacts to discount zones identified in the HTF PD Array, where major market participants often execute buy orders. The market confirms the bullish trend with a Market Structure Shift (MSS) and a change in price delivery state (CISD). During this phase, an FVG emerges as a key trading opportunity. Traders can open long positions upon a pullback to this FVG zone, capitalizing on the bullish continuation.
🟣 Market Maker Sell Model
In the MMSM state, the market shifts from a bullish trend to a bearish trend. Here, SMT Divergence highlights weaknesses in the bullish trend. A Liquidity Sweep then gathers liquidity from higher levels.
The price reacts to premium zones identified in the HTF PD Array, where major sellers enter the market and reverse the price direction. A Market Structure Shift (MSS) and a change in delivery state (CISD) confirm the bearish trend. The FVG then acts as a target for the price. Traders can initiate short positions upon a pullback to this FVG zone, profiting from the bearish continuation.
Market makers actively bridge liquidity gaps throughout these stages, quoting continuous bid and ask prices for assets. This ensures that trades are executed seamlessly, even during periods of low market participation, and supports the structured progression of the MMXM model.
The price’s reaction to FVG zones in both states provides traders with opportunities to reduce risk and enhance precision. These pullbacks to FVG zones not only represent optimal entry points but also create avenues for maximizing returns with minimal risk.
🔵 Settings
Higher TimeFrame PD Array : Selects the timeframe for identifying premium/discount arrays on higher timeframes.
PD Array Period : Specifies the number of candles for identifying key swing points.
ATR Coefficient Threshold : Defines the threshold for acceptable volatility based on ATR.
Max Swing Back Method : Choose between analyzing all swings ("All") or a fixed number ("Custom").
Max Swing Back : Sets the maximum number of candles to consider for swing analysis (if "Custom" is selected).
Second Symbol for SMT : Specifies the second asset or index for detecting SMT divergence.
SMT Fractal Periods : Sets the number of candles required to identify SMT fractals.
FVG Validity Period : Defines the validity duration for FVG zones.
MSS Validity Period : Sets the validity duration for MSS zones.
FVG Filter : Activates filtering for FVG zones based on width.
FVG Filter Type : Selects the filtering level from "Very Aggressive" to "Very Defensive."
Mitigation Level FVG : Determines the level within the FVG zone (proximal, 50%, or distal) that price reacts to.
Demand FVG : Enables the display of demand FVG zones.
Supply FVG : Enables the display of supply FVG zones.
Zone Colors : Allows customization of colors for demand and supply FVG zones.
Bottom Line & Label : Enables or disables the SMT divergence line and label from the bottom.
Top Line & Label : Enables or disables the SMT divergence line and label from the top.
Show All HTF Levels : Displays all premium/discount levels on higher timeframes.
High/Low Levels : Activates the display of high/low levels.
Color Options : Customizes the colors for high/low lines and labels.
Show All MSS Levels : Enables display of all MSS zones.
High/Low MSS Levels : Activates the display of high/low MSS levels.
Color Options : Customizes the colors for MSS lines and labels.
🔵 Conclusion
The Smart Money Reversal model represents one of the most advanced tools for technical analysis, enabling traders to identify critical market turning points. By leveraging metrics such as SMT Divergence, Liquidity Sweep, HTF PD Array, MSS, CISD, and FVG, traders can predict future price movements with precision.
The price’s interaction with key zones such as PD Array and FVG, combined with pullbacks to imbalance areas, offers exceptional opportunities with favorable risk-to-reward ratios. This approach empowers traders to analyze the behavior of major market participants and adopt professional strategies for entry and exit.
By employing this analytical framework, traders can reduce errors, make more informed decisions, and capitalize on profitable opportunities. The Smart Money Reversal focuses on liquidity behavior and structural changes, making it an indispensable tool for financial market success.
Fair Value Gaps Mitigation Oscillator [LuxAlgo]The Fair Value Gaps Mitigation Oscillator is an oscillator based on the traditional Fair Value Gaps (FVGs) imbalances. The oscillator displays the current total un-mitigated values for the number of FVGs chosen by the user.
The indicator also displays each New FVG as a bar representing the current ratio of the New FVG in relation to the current un-mitigated total for its direction.
🔶 USAGE
When an FVG forms, it is often interpreted as strong market sentiment in the direction of the gap. For example, an upward FVG during an uptrend is typically seen as a confirmation of the strength and continuation of the trend, as it indicates that buyers are willing to purchase at higher prices without much resistance, suggesting strong demand and positive sentiment.
By analyzing the mitigation (or lack thereof), we can visualize the increase of directional strength in a trend. This is where the proposed oscillator is useful.
🔶 DETAILS
The oscillator's values are expressed as Percentages (%). Each FVG is allocated 100% of the total of its width with a max potential value of 100 and minimum potential value of 0.
Based on the "FVG Lookback" Input, the FVGs are scaled to fit within the range of +1 to -1. Using a higher "FVG Lookback" value will allow you to get indications of longer-term trends.
A higher value of the normalized bullish FVG areas suggest a stronger and cleaner uptrend, while lower values of the bearish the normalized bullish FVG areas suggest a stronger and cleaner downtrend.
+1 or -1 indicates that there is a Full Lookback of FVGs, and each one is fully un-mitigated, and the opposite direction of FVGs is entirely Mitigated.
When the price closes over/under or within an FVG it begins to get mitigated, when this happens the % of mitigation is subtracted from the total.
When a New FVG is formed, a Histogram bar is created representing the ratio of the current FVG's width to the total width off all un-mitigated FVGs.
The entire bar represents 100% of total un-mitigated FVG Width.
The filled area represents the current FVG's width relative to the whole.
A 50% hash mark is also displayed for reference.
🔶 SETTINGS
FVG Lookback - Determines the number of FVGs (Bullish and Bearish Pairs) to keep in memory for analysis.






















