Supports & Resistances [UAlgo]The "Supports & Resistances " indicator is designed to identify and visualize key support and resistance levels on the price chart. It utilizes the Average True Range (ATR) and Pivot Points to define the boundaries of S & R zones and considers historical price action to assess the strength of these zones.
🔶 How to Obtain Zones
The script continuously analyzes the price action and identifies potential support and resistance zones based on the following criteria:
Zone Creation: For swing highs, a zone is created with the high price at the zone length as the top and the top minus the Average True Range (ATR) as the bottom. Conversely, for swing lows, the zone is created with the low price at the zone length as the bottom and the low plus the ATR as the top.
Zone Strength Calculation: The script iterates through historical bars within the zone and counts how many times the price (low for support, high for resistance) touched but failed to break entirely through the zone. This count is assigned as the zone's "strength".
Zone Display and Removal: It identifying zones by assigning a "strength" value based on how many times the price has approached but failed to break the zone. This helps prioritize stronger potential support/resistance levels. Only zones exceeding the defined "strength threshold" are visually displayed on the chart. Weaker zones or those broken by price are automatically removed.
🔶 Parameters
Zone Length: Traders can adjust S & R detection sensitivity, length to be used to find pivot points.
Strength Threshold: Set the minimum number of times the price needs to touch but fail to break a zone for it to be considered "strong" and displayed.
Visual Settings: Tailor the appearance of the support/resistance zones by defining separate colors and text size for borders, backgrounds, and zone text.
🔶 Disclaimer
The "Supports & Resistances " indicator is provided for educational and informational purposes only.
It should not be considered as financial advice or a recommendation to buy or sell any financial instrument.
The use of this indicator involves inherent risks, and users should employ their own judgment and conduct their own research before making any trading decisions. Past performance is not indicative of future results.
🔷 Related Scripts
Support and Resistance with Signals
ATR Based Support and Resistance Zones
스크립트에서 "zone"에 대해 찾기
Smart Money Concept [TradingFinder] Major OB + FVG + Liquidity🔵 Introduction
"Smart Money" refers to funds under the control of institutional investors, central banks, funds, market makers, and other financial entities. Ordinary people recognize investments made by those who have a deep understanding of market performance and possess information typically inaccessible to regular investors as "Smart Money".
Consequently, when market movements often diverge from expectations, traders identify the footprints of smart money. For example, when a classic pattern forms in the market, traders take short positions. However, the market might move upward instead. They attribute this contradiction to smart money and seek to capitalize on such inconsistencies in their trades.
The "Smart Money Concept" (SMC) is one of the primary styles of technical analysis that falls under the subset of "Price Action". Price action encompasses various subcategories, with one of the most significant being "Supply and Demand", in which SMC is categorized.
The SMC method aims to identify trading opportunities by emphasizing the impact of large traders (Smart Money) on the market, offering specific patterns, techniques, and trading strategies.
🟣 Key Terms of Smart Money Concept (SMC)
• Market Structure (Trend)
• Change of Character (ChoCh)
• Break of Structure (BoS)
• Order Blocks (Supply and Demand)
• Imbalance (IMB)
• Inefficiency (IFC)
• Fair Value Gap (FVG)
• Liquidity
• Premium and Discount
🔵 How Does the "Smart Money Concept Indicator" Work?
🟣 Market Structure
a. Accumulation
b. Market-Up
c. Distribution
d. Market-Down
a) Accumulation Phase : During the accumulation period, typically following a downtrend, smart money enters the market without significantly affecting the pricing trend.
b) Market-Up Phase : In this phase, the price of an asset moves upward from the accumulation range and begins to rise. Usually, the buying by retail investors is the main driver of this trend, and due to positive market sentiment, it continues.
c) Distribution Phase : The distribution phase, unlike the accumulation stage, occurs after an uptrend. In this phase, smart money attempts to exit the market without causing significant price fluctuations.
d) Market-Down Phase : In this stage, the price of an asset moves downward from the distribution phase, initiating a prolonged downtrend. Smart money liquidates all its positions by creating selling pressure, trapping latecomer investors.
The result of these four phases in the market becomes the market trend.
Types of Trends in Financial Markets :
a. Up-Trend
b. Down Trend
c. Range (No Trend)
a) Up-Trend : The market breaks consecutive highs.
b) Down Trend : The market breaks consecutive lows.
c) No Trend or Range : The market oscillates within a range without breaking either highs or lows.
🟣 Change of Character (ChoCh)
The "ChoCh" or "Change of Character" pattern indicates an initial change in order flow in financial markets. This structural change occurs when a major pivot in the opposite direction of the market trend fails. It signals a potential change in the market trend and can serve as a signal for short-term or long-term trend changes in a trading symbol.
🟣 Break of Structure (BoS)
The "BoS" or "Break of Structure" pattern indicates the continuation of the trend in financial markets. This structure forms when, in an uptrend, the price breaks its ceiling or, in a downtrend, the price breaks its floor.
🟣 Order Blocks (Supply and Demand)
Order blocks consist of supply and demand areas where the likelihood of price reversal is higher. There are six order blocks in this indicator, categorized based on their origin and formation reasons.
a. Demand Main Zone, "ChoCh" Origin.
b. Demand Sub Zone, "ChoCh" Origin.
c. Demand All Zone, "BoS" Origin.
d. Supply Main Zone, "ChoCh" Origin.
e. Supply Sub Zone, "ChoCh" Origin.
f. Supply All Zone, "BoS" Origin.
🟣 FVG | Inefficiency | Imbalance
These three terms are almost synonymous. They describe the presence of gaps between consecutive candle shadows. This inefficiency occurs when the market moves rapidly. Primarily, imbalances and these rapid movements stem from the entry of smart money and the imbalance between buyer and seller power. Therefore, identifying these movements is crucial for traders.
These areas are significant because prices often return to fill these gaps or even before they occur to fill price gaps.
🟣 Liquidity
Liquidity zones are areas where there is a likelihood of congestion of stop-loss orders. Liquidity is considered the driving force of the entire market, and market makers may manipulate the market using these zones. However, in many cases, this does not happen because there is insufficient liquidity in some areas.
Types of Liquidity in Financial Markets :
a. Trend Lines
b. Double Tops | Double Bottoms
c. Triple Tops | Triple Bottoms
d. Support Lines | Resistance Lines
All four types of liquidity in this indicator are automatically identified.
🟣 Premium and Discount
Premium and discount zones can assist traders in making better decisions. For instance, they may sell positions in expensive ranges and buy in cheaper ranges. The closer the price is to the major resistance, the more expensive it is, and the closer it is to the major support, the cheaper it is.
🔵 How to Use
🟣 Change of Character (ChoCh) and Break of Structure (BoS)
This indicator detects "ChoCh" and "BoS" in both Minor and Major states. You can turn on the display of these lines by referring to the last part of the settings.
🟣 Order Blocks (Supply and Demand)
Order blocks are Zones where the probability of price reversal is higher. In demand Zones you can buy opportunities and in supply Zones you can check sell opportunities.
The "Refinement" feature allows you to adjust the width of the order block according to your strategy. There are two modes, "Aggressive" and "Defensive," in the "Order Block Refine". The difference between "Aggressive" and "Defensive" lies in the width of the order block.
For risk-averse traders, the "Defensive" mode is suitable as it provides a lower loss limit and a greater reward-to-risk ratio. For risk-taking traders, the "Aggressive" mode is more appropriate. These traders prefer to enter trades at higher prices, and this mode, which has a wider order block width, is more suitable for this group of individuals.
🟣 Fair Value Gap (FVG) | Imbalance (IMB) | Inefficiency (IFC)
In order to identify the "fair value gap" on the chart, it must be analyzed candle by candle. In this process, it is important to pay attention to candles with a large size, and a candle and a candle should be examined before that.
Candles before and after this central candle should have long shadows and their bodies should not overlap with the central candle body. The distance between the shadows of the first and third candles is known as the FVG range.
These areas work in two ways :
• Supply and demand area : In this case, the price reacts to these areas and the trend is reversed.
• Liquidity zone : In this scenario, the price "fills" the zone and then reaches the order block.
Important note : In most cases, the FVG zone of very small width acts as a supply and demand zone, while the zone of significant width acts as a liquidity zone and absorbs price.
When the FVG filter is activated, the FVG regions are filtered based on the specified algorithm.
FVG filter types include the following :
1. Very Aggressive Mode : In addition to the initial condition, an additional condition is considered. For bullish FVG, the maximum price of the last candle must be greater than the maximum price of the middle candle.
Similarly, for a bearish FVG, the minimum price of the last candle must be lower than the minimum price of the middle candle. This mode removes the minimum number of FVGs.
2. Aggressive : In addition to the very aggressive condition, the size of the middle candle is also considered. The size of the center candle should not be small and therefore more FVGs are removed in this case.
3. Defensive : In addition to the conditions of the very aggressive mode, this mode also considers the size of the middle pile, which should be relatively large and make up the majority of the body.
Also, to identify bullish FVGs, the second and third candles must be positive, while for bearish FVGs, the second and third candles must be negative. This mode filters out a significant number of FVGs and keeps only those of good quality.
4. Very Defensive : In addition to the conditions of the defensive mode, in this mode the first and third candles should not be very small-bodied doji candles. This mode filters out most FVGs and only the best quality ones remain.
🟣 Liquidity
These levels are where traders intend to exit their trades. "Market makers" or smart money usually accumulate or distribute their trading positions near these levels, where many retail traders have placed their "stop loss" orders. When liquidity is collected from these losses, the price often reverses.
A "Stop hunt" is a move designed to offset liquidity generated by established stop losses. Banks often use major news events to trigger stop hunts and capture liquidity released into the market. For example, if they intend to execute heavy buy orders, they encourage others to sell through stop-hots.
Consequently, if there is liquidity in the market before reaching the order block area, the validity of that order block is higher. Conversely, if the liquidity is close to the order block, that is, the price reaches the order block before reaching the liquidity limit, the validity of that order block is lower.
🟣 Alert
With the new alert functionality in this indicator, you won't miss any important trading signals. Alerts are activated when the price hits the last order block.
1. It is possible to set alerts for each "symbol" and "time frame". The system will automatically detect both and include them in the warning message.
2. Each alert provides the exact date and time it was triggered. This helps you measure the timeliness of the signal and evaluate its relevance.
3. Alerts include target order block price ranges. The "Proximal" level represents the initial price level strike, while the "Distal" level represents the maximum price gap in the block. These details are included in the warning message.
4. You can customize the alert name through the "Alert Name" entry.
5. Create custom messages for "long" and "short" alerts to be sent with notifications.
🔵 Setting
a. Pivot Period of Order Blocks Detector :
Using this parameter, you can set the zigzag period that is formed based on the pivots.
b. Order Blocks Validity Period (Bar) :
You can set the validity period of each Order Block based on the number of candles that have passed since the origin of the Order Block.
c. Demand Main Zone, "ChoCh" Origin :
You can control the display or not display as well as the color of Demand Main Zone, "ChoCh" Origin.
d. Demand Sub Zone, "ChoCh" Origin :
You can control the display or not display as well as the color of Demand Sub Zone, "ChoCh" Origin.
e. Demand All Zone, "BoS" Origin :
You can control the display or not display as well as the color of Demand All Zone, "BoS" Origin.
f. Supply Main Zone, "ChoCh" Origin :
You can control the display or not display as well as the color of Supply Main Zone, "ChoCh" Origin.
g. Supply Sub Zone, "ChoCh" Origin :
You can control the display or not display as well as the color of Supply Sub Zone, "ChoCh" Origin.
h. Supply All Zone, "BoS" Origin :
You can control the display or not display as well as the color of Supply All Zone, "BoS" Origin.
i. Refine Demand Main : You can choose to be refined or not and also the type of refining.
j. Refine Demand Sub : You can choose to be refined or not and also the type of refining.
k. Refine Demand BoS : You can choose to be refined or not and also the type of refining.
l. Refine Supply Main : You can choose to be refined or not and also the type of refining.
m. Refine Supply Sub : You can choose to be refined or not and also the type of refining.
n. Refine Supply BoS : You can choose to be refined or not and also the type of refining.
o. Show Demand FVG : You can choose to show or not show Demand FVG.
p. Show Supply FVG : You can choose to show or not show Supply FVG
q. FVG Filter : You can choose whether FVG is filtered or not. Also specify the type of filter you want to use.
r. Show Statics High Liquidity Line : Show or not show Statics High Liquidity Line.
s. Show Statics Low Liquidity Line : Show or not show Statics Low Liquidity Line.
t. Show Dynamics High Liquidity Line : Show or not show Dynamics High Liquidity Line.
u. Show Dynamics Low Liquidity Line : Show or not show Dynamics Low Liquidity Line.
v. Statics Period Pivot :
Using this parameter, you can set the Swing period that is formed based on Static Liquidity Lines.
w. Dynamics Period Pivot :
Using this parameter, you can set the Swing period that is formed based Dynamics Liquidity Lines.
x. Statics Liquidity Line Sensitivity :
is a number between 0 and 0.4. Increasing this number decreases the sensitivity of the "Statics Liquidity Line Detection" function and increases the number of lines identified. The default value is 0.3.
y. Dynamics Liquidity Line Sensitivity :
is a number between 0.4 and 1.95. Increasing this number increases the sensitivity of the "Dynamics Liquidity Line Detection" function and decreases the number of lines identified. The default value is 1.
z. Alerts Name : You can customize the alert name using this input and set it to your desired name.
aa. Alert Demand Main Mitigation :
If you want to receive the alert about Demand Main 's mitigation after setting the alerts, leave this tick on. Otherwise, turn it off.
bb. Alert Demand Sub Mitigation :
If you want to receive the alert about Demand Sub's mitigation after setting the alerts, leave this tick on. Otherwise, turn it off.
cc. Alert Demand BoS Mitigation :
If you want to receive the alert about Demand BoS's mitigation after setting the alerts, leave this tick on. Otherwise, turn it off.
dd. Alert Supply Main Mitigation :
If you want to receive the alert about Supply Main's mitigation after setting the alerts, leave this tick on. Otherwise, turn it off.
ee. Alert Supply Sub Mitigation :
If you want to receive the alert about Supply Sub's mitigation after setting the alerts, leave this tick on. Otherwise, turn it off.
ff. Alert Supply BoS Mitigation :
If you want to receive the alert about Supply BoS's mitigation after setting the alerts, leave this tick on. Otherwise, turn it off.
gg. Message Frequency :
This parameter, represented as a string, determines the frequency of announcements. Options include: 'All' (triggers the alert every time the function is called), 'Once Per Bar' (triggers the alert only on the first call within the bar), and 'Once Per Bar Close' (activates the alert only during the final script execution of the real-time bar upon closure). The default setting is 'Once per Bar'.
hh. Show Alert time by Time Zone :
The date, hour, and minute displayed in alert messages can be configured to reflect any chosen time zone. For instance, if you prefer London time, you should input 'UTC+1'. By default, this input is configured to the 'UTC' time zone.
ii. Display More Info : The 'Display More Info' option provides details regarding the price range of the order blocks (Zone Price), along with the date, hour, and minute. If you prefer not to include this information in the alert message, you should set it to 'Off'.
You also have access to display or not to display, choose the Style and Color of all the lines below :
a. Major Bullish "BoS" Lines
b. Major Bearish "BoS" Lines
c. Minor Bullish "BoS" Lines
d. Minor Bearish "BoS" Lines
e. Major Bullish "ChoCh" Lines
f. Major Bearish "ChoCh" Lines
g. Minor Bullish "ChoCh" Lines
h. Minor Bearish "ChoCh" Lines
i. Last Major Support Line
j. Last Major Resistance Line
k. Last Minor Support Line
l. Last Minor Resistance Line
ORB Algo | Flux Charts💎 GENERAL OVERVIEW
Introducing our new ORB Algo indicator! ORB stands for "Opening Range Breakout" which is a common trading strategy. The indicator can analyze the market trend in the current session and give "Buy / Sell", "Take Profit" and "Stop Loss" signals. For more information about the analyzing process of the indicator, you can read "How Does It Work ?" section of the description.
Features of the new ORB Algo indicator :
Buy & Sell Signals
Up To 3 Take Profit Signals
Stop-Loss Signals
Alerts for Buy / Sell, Take-Profit and Stop-Loss
Customizable Algoritm
Session Dashboard
Backtesting Dashboard
📌 HOW DOES IT WORK ?
This indicator works best in 1-minute timeframe. The idea is that the trend of the current session can be forecasted by analyzing the market for a while after the session starts. However, each market has it's own dynamics and the algorithm will need fine-tuning to get the best performance possible. So, we've implemented a "Backtesting Dashboard" that shows the past performance of the algorithm in the current ticker with your current settings. Always keep in mind that past performance does not guarantee future results.
Here are the steps of the algorithm explained briefly :
1. The algorithm follows and analyzes the first 30 minutes (can be adjusted) of the session.
2. Then, algorithm checks for breakouts of the opening range's high or low.
3. If a breakout happens in a bullish or a bearish direction, the algorithm will now check for retests of the breakout. Depending on the sensitivity setting, there must be 0 / 1 / 2 / 3 failed retests for the breakout to be considered as reliable.
4. If the breakout is reliable, the algorithm will give an entry signal.
5. After the position entry, algorithm will now wait for Take-Profit or Stop-Loss zones and signal if any of them occur.
If you wonder how does the indicator find Take-Profit & Stop-Loss zones, you can check the "Settings" section of the description.
🚩UNIQUENESS
While there are indicators that show the opening range of the session, they come short with features like indicating breakouts, entries, and Take-Profit & Stop-Loss zones. We are also aware of that different stock markets have different dynamics, and tuning the algorithm for different markets is really important for better results, so we decided to make the algorithm fully customizable. Besides all that, our indicator contains a detailed backtesting dashboard, so you can see past performance of the algorithm in the current ticker. While past performance does not yield any guarantee for future results, we believe that a backtesting dashboard is necessary for tuning the algorithm. Another strength of this indicator is that there are multiple options for detection of Take-Profit and Stop-Loss zones, which the trader can select one of their liking.
⚙️SETTINGS
Keep in mind that best chart timeframe for this indicator to work is the 1-minute timeframe.
TP = Take-Profit
SL = Stop-Loss
EMA = Exponential Moving Average
OR = Opening Range
ATR = Average True Range
1. Algorithm
ORB Timeframe -> This setting determines the timeframe that the algorithm will analyze the market after a new session begins before giving any signals. It's important to experiment with this setting and find the best option that suits the current ticker for the best performance. More volatile stocks will often require this setting to be larger, while more stabilized stocks may have this setting shorter.
Sensitivity -> This setting determines how much failed retests are needed to take a position entry. Higher senstivity means that less retests are needed to consider the breakout as reliable. If you think that the current ticker makes strong movements in a bullish & bearish direction after a breakout, you should set this setting higher. If you think the opposite, meaning that the ticker does not decide the trend right after a breakout, this setting show be lower.
(High = 0 Retests, Medium = 1 Retest, Low = 2 Retests, Lowest = 3 Retests)
Breakout Condition -> The condition for the algorithm to detect breakouts.
Close = Bar needs to close higher than the OR High Line in a bullish breakout, or lower than the OR Low Line in a bearish breakout. EMA = The EMA of the bar must be higher / lower than OR Lines instead of the close price.
TP Method -> The method for the algorithm to use when determining TP zones.
Dynamic = This TP method essentially tries to find the bar that price starts declining the current trend and going to the other direction, and puts a TP zone there. To achieve this, it uses an EMA line, and when the close price of a bar crosses the EMA line, It's a TP spot.
ATR = In this TP method, instead of a dynamic approach the TP zones are pre-determined using the ATR of the entry bar. This option is generally for traders who just want to know their TP spots beforehand while trading. Selecting this option will also show TP zones at the ORB Dashboard.
"Dynamic" option generally performs better, while the "ATR" method is safer to use.
EMA Length -> This setting determines the length of the EMA line used in "Dynamic TP method" and "EMA Breakout Condition". This is completely up to the trader's choice, though the default option should generally perform well. You might want to experiment with this setting and find the optimal length for the current ticker.
Stop-Loss -> Algorithm will place the Stop-Loss zone using setting.
Safer = The SL zone will be placed closer to the OR High for a bullish entry, and closer to the OR Low for a bearish entry.
Balanced = The SL zone will be placed in the center of OR High & OR Low
Risky = The SL zone will be placed closer to the OR Low for a bullish entry, and closer to the OR High for a bearish entry.
Adaptive SL -> This option only takes effect if the first TP zone is hit.
Enabled = After the 1st TP zone is hit, the SL zone will be moved to the entry price, essentially making the position risk-free.
Disabled = The SL zone will never change.
2. ORB Dashboard
ORB Dashboard shows the information about the current session.
3. ORB Backtesting
ORB Backtesting Dashboard allows you to see past performance of the algorithm in the current ticker with current settings.
Total amount of days that can be backtested depends on your TV subscription.
Backtesting Exit Ratios -> You can select how much of percent your entry will be closed at any TP zone while backtesting. For example, %90, %5, %5 means that %90 of the position will be closed at the first TP zone, %5 of it will be closed at the 2nd TP zone, and %5 of it will be closed at the last TP zone.
MA 3:1 & CZsThis is the script that finds Consolidation Zones in Real Time accompanied by Three Moving Averages (20-50-200).
How does it work?
-The script finds the highest/lowest bars using "Loopback Period".
-Then calculate the address.
-Using direction and high/low bar information, calculate Consolidation Zones in real time.
-If the length of the consolidation area is equal to or greater than the minimum length defined by the user, this area is displayed as Consolidation Zone.
-Then, the Consolidation Zone is automatically extended if there is no rupture.
If you increase the loopback length, you will get larger Consolidation Zones.
The Consolidation Zones allow us to operate within said Zones, becoming independent of the instability of the chart outside said Zones.
We can set a Resistance (green arrow) at the Support of the next higher Zone and a Support (red arrow) at the Resistance of the lower Zone.
Session Dynamics & Pivot Overlay (Arjo)## **OVERVIEW**
The **Session Dynamics & Pivot Overlay (Arjo)** is a visual analysis tool that displays session-based price ranges, anchored volume-weighted averages, daily pivot levels, and smoothed trend conditions on the chart. It highlights how price interacts with custom sessions, midpoint levels, and dynamic ranges, providing a structured visual layout that helps users observe market behavior over time without implying any form of prediction or trading signal.
## **CONCEPTS**
This indicator incorporates several widely used analytical concepts:
- **Session Ranges:** Identifies user-defined time windows and visually displays their high, low, and midpoint behavior throughout the session.
- **VWAP (Morning Session):** Shows volume-weighted average price calculations for a defined morning period, assisting with visual comparison between price and weighted averages.
- **Daily Pivot Levels:** Displays R1–R2, S1–S2, central pivot, and associated levels derived from prior daily price data.
- **Trend Smoothing:** Uses SuperSmoother filtering and an additional EMA to highlight whether the smoothed trend is rising or falling.
- **EMA + ATR Bands:** Plots a 20-period EMA with upper and lower ATR-derived bands to help visualize short-term price displacement relative to average true range.
All of these elements are presented solely for structural and comparative chart analysis.
## **FEATURES**
- **Custom Session Visualization:** Automatically draws session boxes, capturing the evolving high, low, and midpoint throughout the defined intraday window.
- **Dynamic Midline Calculation:** A midpoint line is updated continuously during the session to visually anchor price within the session’s range.
- **Morning Session VWAP:** Displays a dedicated VWAP line for the morning window with adjustable source and configuration options.
- **Daily Pivot Lines:** Automatically plots pivot, BC/TC, R1–R2, and S1–S2 levels with customizable colors, widths, and line styles.
- **Trend-Responsive Pivot Display:** Optionally toggles visibility of R2 or S2 depending on the direction of the smoothed trend.
- **EMA + ATR Zones:** Renders a 20-EMA and ATR-based support/resistance zone using filled regions for enhanced visual clarity.
- **Full Customization:** Multiple color, transparency, line-style, and display options allow users to adapt the presentation to their charting preferences.
- **Overlay Compatible:** Designed to work directly on price charts without obstructing candles or other overlays.
## **HOW TO USE**
Users can interact with the indicator entirely through the settings panel:
- Adjust session timings to match preferred market hours or custom internal zones.
- Enable or disable the display of pivot levels, VWAP, or the ATR/EMA zone.
- Customize colors and line styles to improve visibility according to the chart background or personal preference.
- Observe how price behaves relative to the session box, midpoint, VWAP, and pivot levels for contextual understanding.
- Utilize the smoothed trend condition to see when the indicator chooses to display certain pivot extensions.
These elements help users interpret chart structure, volatility, and intraday behavior in a visually organized manner.
## **CONCLUSION**
The ** Session Dynamics & Pivot Overlay (Arjo) ** indicator offers a consolidated view of session structure, pivot levels, VWAP, and smoothed trend conditions. Its purpose is to improve visual clarity and assist users in understanding market context without issuing directives or trade suggestions. It functions as an educational tool that enhances chart interpretation and supports structured analysis.
---
## **DISCLAIMER**
This indicator is for educational and visual analysis purposes only. It does not provide trading signals, financial advice, or guaranteed outcomes. Users should conduct their own research and consult a licensed financial professional when necessary. All trading decisions are solely the responsibility of the user.
Happy Trading (Arjo)
SR & POI Indicator//@version=5
indicator(title='SR & POI Indicator', overlay=true, max_boxes_count=500, max_lines_count=500, max_labels_count=500)
//============================================================================
// SUPPLY/DEMAND & POI SETTINGS
//============================================================================
swing_length = input.int(10, title = 'Swing High/Low Length', group = 'Supply/Demand Settings', minval = 1, maxval = 50)
history_of_demand_to_keep = input.int(20, title = 'History To Keep', group = 'Supply/Demand Settings', minval = 5, maxval = 50)
box_width = input.float(2.5, title = 'Supply/Demand Box Width', group = 'Supply/Demand Settings', minval = 1, maxval = 10, step = 0.5)
show_price_action_labels = input.bool(false, title = 'Show Price Action Labels', group = 'Supply/Demand Visual Settings')
supply_color = input.color(color.new(#EDEDED,70), title = 'Supply', group = 'Supply/Demand Visual Settings', inline = '3')
supply_outline_color = input.color(color.new(color.white,75), title = 'Outline', group = 'Supply/Demand Visual Settings', inline = '3')
demand_color = input.color(color.new(#00FFFF,70), title = 'Demand', group = 'Supply/Demand Visual Settings', inline = '4')
demand_outline_color = input.color(color.new(color.white,75), title = 'Outline', group = 'Supply/Demand Visual Settings', inline = '4')
bos_label_color = input.color(color.white, title = 'BOS Label', group = 'Supply/Demand Visual Settings')
poi_label_color = input.color(color.white, title = 'POI Label', group = 'Supply/Demand Visual Settings')
swing_type_color = input.color(color.black, title = 'Price Action Label', group = 'Supply/Demand Visual Settings')
//============================================================================
// SR SETTINGS
//============================================================================
enableSR = input(true, "SR On/Off", group="SR Settings")
colorSup = input(#00DBFF, "Support Color", group="SR Settings")
colorRes = input(#E91E63, "Resistance Color", group="SR Settings")
strengthSR = input.int(2, "S/R Strength", 1, group="SR Settings")
lineStyle = input.string("Dotted", "Line Style", , group="SR Settings")
lineWidth = input.int(2, "S/R Line Width", 1, group="SR Settings")
useZones = input(true, "Zones On/Off", group="SR Settings")
useHLZones = input(true, "High Low Zones On/Off", group="SR Settings")
zoneWidth = input.int(2, "Zone Width %", 0, tooltip="it's calculated using % of the distance between highest/lowest in last 300 bars", group="SR Settings")
expandSR = input(true, "Expand SR", group="SR Settings")
//============================================================================
// SUPPLY/DEMAND FUNCTIONS
//============================================================================
// Function to add new and remove last in array
f_array_add_pop(array, new_value_to_add) =>
array.unshift(array, new_value_to_add)
array.pop(array)
// Function for swing H & L labels
f_sh_sl_labels(array, swing_type) =>
var string label_text = na
if swing_type == 1
if array.get(array, 0) >= array.get(array, 1)
label_text := 'HH'
else
label_text := 'LH'
label.new(bar_index - swing_length, array.get(array,0), text = label_text, style=label.style_label_down, textcolor = swing_type_color, color = color.new(swing_type_color, 100), size = size.tiny)
else if swing_type == -1
if array.get(array, 0) >= array.get(array, 1)
label_text := 'HL'
else
label_text := 'LL'
label.new(bar_index - swing_length, array.get(array,0), text = label_text, style=label.style_label_up, textcolor = swing_type_color, color = color.new(swing_type_color, 100), size = size.tiny)
// Function to check overlapping
f_check_overlapping(new_poi, box_array, atr) =>
atr_threshold = atr * 2
okay_to_draw = true
for i = 0 to array.size(box_array) - 1
top = box.get_top(array.get(box_array, i))
bottom = box.get_bottom(array.get(box_array, i))
poi = (top + bottom) / 2
upper_boundary = poi + atr_threshold
lower_boundary = poi - atr_threshold
if new_poi >= lower_boundary and new_poi <= upper_boundary
okay_to_draw := false
break
else
okay_to_draw := true
okay_to_draw
// Function to draw supply or demand zone
f_supply_demand(value_array, bn_array, box_array, label_array, box_type, atr) =>
atr_buffer = atr * (box_width / 10)
box_left = array.get(bn_array, 0)
box_right = bar_index
var float box_top = 0.00
var float box_bottom = 0.00
var float poi = 0.00
if box_type == 1
box_top := array.get(value_array, 0)
box_bottom := box_top - atr_buffer
poi := (box_top + box_bottom) / 2
else if box_type == -1
box_bottom := array.get(value_array, 0)
box_top := box_bottom + atr_buffer
poi := (box_top + box_bottom) / 2
okay_to_draw = f_check_overlapping(poi, box_array, atr)
if box_type == 1 and okay_to_draw
box.delete( array.get(box_array, array.size(box_array) - 1) )
f_array_add_pop(box_array, box.new( left = box_left, top = box_top, right = box_right, bottom = box_bottom, border_color = supply_outline_color,
bgcolor = supply_color, extend = extend.right, text = 'SUPPLY', text_halign = text.align_center, text_valign = text.align_center, text_color = poi_label_color, text_size = size.small, xloc = xloc.bar_index))
box.delete( array.get(label_array, array.size(label_array) - 1) )
f_array_add_pop(label_array, box.new( left = box_left, top = poi, right = box_right, bottom = poi, border_color = color.new(poi_label_color,90),
bgcolor = color.new(poi_label_color,90), extend = extend.right, text = 'POI', text_halign = text.align_left, text_valign = text.align_center, text_color = poi_label_color, text_size = size.small, xloc = xloc.bar_index))
else if box_type == -1 and okay_to_draw
box.delete( array.get(box_array, array.size(box_array) - 1) )
f_array_add_pop(box_array, box.new( left = box_left, top = box_top, right = box_right, bottom = box_bottom, border_color = demand_outline_color,
bgcolor = demand_color, extend = extend.right, text = 'DEMAND', text_halign = text.align_center, text_valign = text.align_center, text_color = poi_label_color, text_size = size.small, xloc = xloc.bar_index))
box.delete( array.get(label_array, array.size(label_array) - 1) )
f_array_add_pop(label_array, box.new( left = box_left, top = poi, right = box_right, bottom = poi, border_color = color.new(poi_label_color,90),
bgcolor = color.new(poi_label_color,90), extend = extend.right, text = 'POI', text_halign = text.align_left, text_valign = text.align_center, text_color = poi_label_color, text_size = size.small, xloc = xloc.bar_index))
// Function to change supply/demand to BOS if broken
f_sd_to_bos(box_array, bos_array, label_array, zone_type) =>
if zone_type == 1
for i = 0 to array.size(box_array) - 1
level_to_break = box.get_top(array.get(box_array,i))
if close >= level_to_break
copied_box = box.copy(array.get(box_array,i))
f_array_add_pop(bos_array, copied_box)
mid = (box.get_top(array.get(box_array,i)) + box.get_bottom(array.get(box_array,i))) / 2
box.set_top(array.get(bos_array,0), mid)
box.set_bottom(array.get(bos_array,0), mid)
box.set_extend( array.get(bos_array,0), extend.none)
box.set_right( array.get(bos_array,0), bar_index)
box.set_text( array.get(bos_array,0), 'BOS' )
box.set_text_color( array.get(bos_array,0), bos_label_color)
box.set_text_size( array.get(bos_array,0), size.small)
box.set_text_halign( array.get(bos_array,0), text.align_center)
box.set_text_valign( array.get(bos_array,0), text.align_center)
box.delete(array.get(box_array, i))
box.delete(array.get(label_array, i))
if zone_type == -1
for i = 0 to array.size(box_array) - 1
level_to_break = box.get_bottom(array.get(box_array,i))
if close <= level_to_break
copied_box = box.copy(array.get(box_array,i))
f_array_add_pop(bos_array, copied_box)
mid = (box.get_top(array.get(box_array,i)) + box.get_bottom(array.get(box_array,i))) / 2
box.set_top(array.get(bos_array,0), mid)
box.set_bottom(array.get(bos_array,0), mid)
box.set_extend( array.get(bos_array,0), extend.none)
box.set_right( array.get(bos_array,0), bar_index)
box.set_text( array.get(bos_array,0), 'BOS' )
box.set_text_color( array.get(bos_array,0), bos_label_color)
box.set_text_size( array.get(bos_array,0), size.small)
box.set_text_halign( array.get(bos_array,0), text.align_center)
box.set_text_valign( array.get(bos_array,0), text.align_center)
box.delete(array.get(box_array, i))
box.delete(array.get(label_array, i))
// Function to extend box endpoint
f_extend_box_endpoint(box_array) =>
for i = 0 to array.size(box_array) - 1
box.set_right(array.get(box_array, i), bar_index + 100)
//============================================================================
// SR FUNCTIONS
//============================================================================
percWidth(len, perc) => (ta.highest(len) - ta.lowest(len)) * perc / 100
//============================================================================
// SUPPLY/DEMAND CALCULATIONS
//============================================================================
atr = ta.atr(50)
swing_high = ta.pivothigh(high, swing_length, swing_length)
swing_low = ta.pivotlow(low, swing_length, swing_length)
var swing_high_values = array.new_float(5,0.00)
var swing_low_values = array.new_float(5,0.00)
var swing_high_bns = array.new_int(5,0)
var swing_low_bns = array.new_int(5,0)
var current_supply_box = array.new_box(history_of_demand_to_keep, na)
var current_demand_box = array.new_box(history_of_demand_to_keep, na)
var current_supply_poi = array.new_box(history_of_demand_to_keep, na)
var current_demand_poi = array.new_box(history_of_demand_to_keep, na)
var supply_bos = array.new_box(5, na)
var demand_bos = array.new_box(5, na)
// New swing high
if not na(swing_high)
f_array_add_pop(swing_high_values, swing_high)
f_array_add_pop(swing_high_bns, bar_index )
if show_price_action_labels
f_sh_sl_labels(swing_high_values, 1)
f_supply_demand(swing_high_values, swing_high_bns, current_supply_box, current_supply_poi, 1, atr)
// New swing low
else if not na(swing_low)
f_array_add_pop(swing_low_values, swing_low)
f_array_add_pop(swing_low_bns, bar_index )
if show_price_action_labels
f_sh_sl_labels(swing_low_values, -1)
f_supply_demand(swing_low_values, swing_low_bns, current_demand_box, current_demand_poi, -1, atr)
f_sd_to_bos(current_supply_box, supply_bos, current_supply_poi, 1)
f_sd_to_bos(current_demand_box, demand_bos, current_demand_poi, -1)
f_extend_box_endpoint(current_supply_box)
f_extend_box_endpoint(current_demand_box)
//============================================================================
// SR CALCULATIONS & PLOTTING
//============================================================================
rb = 10
prd = 284
ChannelW = 10
label_loc = 55
style = lineStyle == "Solid" ? line.style_solid : lineStyle == "Dotted" ? line.style_dotted : line.style_dashed
ph = ta.pivothigh(rb, rb)
pl = ta.pivotlow (rb, rb)
sr_levels = array.new_float(21, na)
prdhighest = ta.highest(prd)
prdlowest = ta.lowest(prd)
cwidth = percWidth(prd, ChannelW)
zonePerc = percWidth(300, zoneWidth)
aas = array.new_bool(41, true)
u1 = 0.0, u1 := nz(u1 )
d1 = 0.0, d1 := nz(d1 )
highestph = 0.0, highestph := highestph
lowestpl = 0.0, lowestpl := lowestpl
var sr_levs = array.new_float(21, na)
label hlabel = na, label.delete(hlabel )
label llabel = na, label.delete(llabel )
var sr_lines = array.new_line(21, na)
var sr_linesH = array.new_line(21, na)
var sr_linesL = array.new_line(21, na)
var sr_linesF = array.new_linefill(21, na)
var sr_labels = array.new_label(21, na)
if ph or pl
for x = 0 to array.size(sr_levels) - 1
array.set(sr_levels, x, na)
highestph := prdlowest
lowestpl := prdhighest
countpp = 0
for x = 0 to prd
if na(close )
break
if not na(ph ) or not na(pl )
highestph := math.max(highestph, nz(ph , prdlowest), nz(pl , prdlowest))
lowestpl := math.min(lowestpl, nz(ph , prdhighest), nz(pl , prdhighest))
countpp += 1
if countpp > 40
break
if array.get(aas, countpp)
upl = (ph ? high : low ) + cwidth
dnl = (ph ? high : low ) - cwidth
u1 := countpp == 1 ? upl : u1
d1 := countpp == 1 ? dnl : d1
tmp = array.new_bool(41, true)
cnt = 0
tpoint = 0
for xx = 0 to prd
if na(close )
break
if not na(ph ) or not na(pl )
chg = false
cnt += 1
if cnt > 40
break
if array.get(aas, cnt)
if not na(ph )
if high <= upl and high >= dnl
tpoint += 1
chg := true
if not na(pl )
if low <= upl and low >= dnl
tpoint += 1
chg := true
if chg and cnt < 41
array.set(tmp, cnt, false)
if tpoint >= strengthSR
for g = 0 to 40 by 1
if not array.get(tmp, g)
array.set(aas, g, false)
if ph and countpp < 21
array.set(sr_levels, countpp, high )
if pl and countpp < 21
array.set(sr_levels, countpp, low )
// Plot SR
var line highest_ = na, line.delete(highest_)
var line lowest_ = na, line.delete(lowest_)
var line highest_fill1 = na, line.delete(highest_fill1)
var line highest_fill2 = na, line.delete(highest_fill2)
var line lowest_fill1 = na, line.delete(lowest_fill1)
var line lowest_fill2 = na, line.delete(lowest_fill2)
hi_col = close >= highestph ? colorSup : colorRes
lo_col = close >= lowestpl ? colorSup : colorRes
if enableSR
highest_ := line.new(bar_index - 311, highestph, bar_index, highestph, xloc.bar_index, expandSR ? extend.both : extend.right, hi_col, style, lineWidth)
lowest_ := line.new(bar_index - 311, lowestpl , bar_index, lowestpl , xloc.bar_index, expandSR ? extend.both : extend.right, lo_col, style, lineWidth)
if useHLZones
highest_fill1 := line.new(bar_index - 311, highestph + zonePerc, bar_index, highestph + zonePerc, xloc.bar_index, expandSR ? extend.both : extend.right, na)
highest_fill2 := line.new(bar_index - 311, highestph - zonePerc, bar_index, highestph - zonePerc, xloc.bar_index, expandSR ? extend.both : extend.right, na)
lowest_fill1 := line.new(bar_index - 311, lowestpl + zonePerc , bar_index, lowestpl + zonePerc , xloc.bar_index, expandSR ? extend.both : extend.right, na)
lowest_fill2 := line.new(bar_index - 311, lowestpl - zonePerc , bar_index, lowestpl - zonePerc , xloc.bar_index, expandSR ? extend.both : extend.right, na)
linefill.new(highest_fill1, highest_fill2, color.new(hi_col, 80))
linefill.new(lowest_fill1 , lowest_fill2 , color.new(lo_col, 80))
if ph or pl
for x = 0 to array.size(sr_lines) - 1
array.set(sr_levs, x, array.get(sr_levels, x))
for x = 0 to array.size(sr_lines) - 1
line.delete(array.get(sr_lines, x))
line.delete(array.get(sr_linesH, x))
line.delete(array.get(sr_linesL, x))
linefill.delete(array.get(sr_linesF, x))
if array.get(sr_levs, x) and enableSR
line_col = close >= array.get(sr_levs, x) ? colorSup : colorRes
array.set(sr_lines, x, line.new(bar_index - 355, array.get(sr_levs, x), bar_index, array.get(sr_levs, x), xloc.bar_index, expandSR ? extend.both : extend.right, line_col, style, lineWidth))
if useZones
array.set(sr_linesH, x, line.new(bar_index - 355, array.get(sr_levs, x) + zonePerc, bar_index, array.get(sr_levs, x) + zonePerc, xloc.bar_index, expandSR ? extend.both : extend.right, na))
array.set(sr_linesL, x, line.new(bar_index - 355, array.get(sr_levs, x) - zonePerc, bar_index, array.get(sr_levs, x) - zonePerc, xloc.bar_index, expandSR ? extend.both : extend.right, na))
array.set(sr_linesF, x, linefill.new(array.get(sr_linesH, x), array.get(sr_linesL, x), color.new(line_col, 80)))
for x = 0 to array.size(sr_labels) - 1
label.delete(array.get(sr_labels, x))
if array.get(sr_levs, x) and enableSR
lab_loc = close >= array.get(sr_levs, x) ? label.style_label_up : label.style_label_down
lab_col = close >= array.get(sr_levs, x) ? colorSup : colorRes
array.set(sr_labels, x, label.new(bar_index + label_loc, array.get(sr_levs, x), str.tostring(math.round_to_mintick(array.get(sr_levs, x))), color=lab_col , textcolor=#000000, style=lab_loc))
hlabel := enableSR ? label.new(bar_index + label_loc + math.round(math.sign(label_loc)) * 20, highestph, "High Level : " + str.tostring(highestph), color=hi_col, textcolor=#000000, style=label.style_label_down) : na
llabel := enableSR ? label.new(bar_index + label_loc + math.round(math.sign(label_loc)) * 20, lowestpl , "Low Level : " + str.tostring(lowestpl) , color=lo_col, textcolor=#000000, style=label.style_label_up ) : na
Volume Pressure OscillatorThe Volume Pressure Oscillator (VPO) is a momentum-based indicator that measures the directional pressure of cumulative volume delta (CVD) combined with price efficiency. It oscillates between 0 and 100, with readings above 50 indicating net buying pressure and readings below 50 indicating net selling pressure.
The indicator is designed to identify the strength and sustainability of volume-driven trends while remaining responsive during consolidation periods.
How the Indicator Works
The VPO analyzes volume flow by examining price action at lower timeframes to build a Cumulative Volume Delta (CVD). For each chart bar, the indicator looks at intrabar price movements to classify volume as either buying volume or selling volume. These classifications are accumulated into a running total that tracks net directional volume.
The indicator then measures the momentum of this CVD over both short-term and longer-term periods, providing responsiveness to recent changes while maintaining awareness of the broader trend. These momentum readings are normalized using percentile ranking, which creates a stable 0-100 scale that works consistently across different instruments and market conditions.
A key feature is the extreme zone persistence mechanism. When the indicator enters extreme zones (above 80 or below 20), it maintains elevated readings as long as volume pressure continues in the same direction. This allows the VPO to stay in extreme zones during strong trends rather than quickly reverting to neutral, making it useful for identifying sustained volume pressure rather than just temporary spikes.
What Makes This Indicator Different
While many indicators measure volume or volume delta, the VPO specifically measures how aggressively CVD is currently changing and whether that pressure is being sustained. It's the difference between knowing "more volume has accumulated on the buy side" versus "buying pressure is intensifying right now and shows signs of continuation."
1. Focus on CVD Momentum, Not CVD Levels
Most CVD indicators display the cumulative volume delta as a line that trends up or down indefinitely. The VPO is fundamentally different - it measures the slope of CVD rather than the absolute level. This transforms CVD from an unbounded cumulative metric into a bounded 0-100 oscillator that shows the intensity and direction of current volume pressure, not just the historical accumulation.
2. Designed to Stay in Extremes During Trends
Unlike traditional oscillators that treat extreme readings (above 80 or below 20) as overbought/oversold reversal signals, the VPO is engineered to oscillate within extreme zones during strong trends. When sustained buying or selling pressure exists, the indicator remains elevated (e.g., 80-95 or 5-20) rather than quickly reverting to neutral. This makes it useful for trend continuation identification rather than exclusively for reversal trading.
3. Percentile-Based Normalization
The VPO uses percentile ranking over a lookback window, which provides consistent behavior across different instruments, timeframes, and volatility regimes without constant recalibration.
4. Dual-Timeframe Momentum Synthesis
The indicator simultaneously considers short-term CVD momentum (responsive to recent changes) and longer-term CVD momentum (tracking trend direction), weighted and combined with a slow-moving trend bias. This multi-timeframe approach helps it stay responsive in ranging markets while maintaining context during trends.
How to Use the Indicator
Understanding the Zones:
80-100 (Strong Buying Pressure): CVD momentum is strongly positive. In trending markets, the indicator oscillates within this zone rather than immediately reverting to neutral. This suggests sustained accumulation and trend continuation probability.
60-80 (Moderate Buying): Positive volume pressure but not extreme. Suitable for identifying pullback entry opportunities within uptrends.
40-60 (Neutral Zone): Volume pressure is balanced or unclear. No strong directional edge from volume. Often seen during consolidation or trend transitions.
20-40 (Moderate Selling): Negative volume pressure developing. May indicate distribution or downtrend continuation setups.
0-20 (Strong Selling Pressure): CVD momentum is strongly negative. During downtrends, sustained readings in this zone suggest continued distribution and downside follow-through probability.
Practical Applications:
Trend Confirmation: When price makes new highs/lows, check if VPO confirms with similarly elevated readings. Divergences (price making new highs while VPO fails to reach prior highs) may indicate weakening momentum.
Range Trading: During consolidation, the VPO typically oscillates between 30-70. Readings toward the low end of the range (30-40) may present accumulation opportunities, while readings at the high end (60-70) may indicate distribution zones.
Extreme Persistence: If VPO reaches 90+ or drops below 10, this indicates exceptional volume pressure. Rather than fading these extremes immediately, monitor whether the indicator stays elevated. Sustained extreme readings suggest strong trend continuation potential.
Context with Price Action: The VPO is most effective when combined with price action or other orderflow indicators. Use the indicator to gauge whether volume is confirming or contradicting.
What the Indicator Does NOT Do:
It does not provide specific entry or exit signals
It does not predict future price direction
It does not guarantee profitable trades
It should not be used as a standalone trading system
Settings Explanation
Momentum Period (Default: 14)
This parameter controls the lookback period for CVD rate-of-change calculations.
Lower values (5-10): Make the indicator more responsive to recent volume changes. Useful for shorter-term trading and more active oscillation. May produce more whipsaws in choppy markets.
Default value (14): Provides balanced responsiveness while filtering out most noise. Suitable for swing trading and daily timeframe analysis.
Higher values (20-50): Create smoother readings and focus on longer-term volume trends. Better for position trading and reducing false signals, but with slower reaction to genuine changes in volume pressure.
Important Notes:
This indicator requires intrabar data to function properly. On some instruments or timeframes where lower timeframe data is not available, the indicator may not display.
The indicator uses request.security_lower_tf() which has a limit of intrabars. On higher timeframes, this provides extensive history, but on very low timeframes (<1-minute charts), the indicator may only cover limited historical bars.
Volume data quality varies by exchange and instrument. The indicator's effectiveness depends on accurate volume reporting from the data feed.
Supply & demand with qualifieres [By:CienF-OTC]🚀 Supply & Demand (S/D) Zones Indicator - Precision Pattern 🚀
This Advanced Supply and Demand (S/D) Zones Indicator is engineered to identify high-probability zones: Indecisive Base (Consolidation) followed by an Explosive Exit (Expansion), coupled with a strict momentum validation process.
🎯 Key Features and High-Precision Logic 🎯
The indicator filters potential zones through three critical movement stages:
1. Strict Indecisive Base Detection:
Rule: A candle is defined as an Indecisive Base if its body is less than or equal to 50% of its total range (High - Low). This accurately captures Dojis, Spinning Tops, and true equilibrium candles.
Zone Drawing: The zone covers the price range (High/Low) of one or more consecutive base candles.
2. Validation of the Explosive Exit:
The candle immediately following the base must be an Explosive/Decisive Candle, exceeding a minimum body threshold (default 50.0% in the current version) to confirm significant capital entry.
3. Strict Momentum and Freshness Filters
The core of the indicator's precision lies in these filters, which you can activate in the settings:
🚫 Anti-Stall Filter (Strict Follow-up): The candle that follows the explosion CANNOT be Indecisive (i.e., its body cannot be $\leq 50\%$ of its range). If the follow-up candle is weak, the zone is rejected for lack of true commitment. (Note: This filter is set to OFF by default in v6.0 for flexibility but highly recommended for high-probability setups).
Freshness (Mitigation): Zones that have been previously tested/touched by the price (mitigated) are deactivated and colored gray (optional) or automatically deleted, keeping your chart clean and showing only active, fresh zones.
Range Oscillator (Zeiierman)█ Overview
Range Oscillator (Zeiierman) is a dynamic market oscillator designed to visualize how far the price is trading relative to its equilibrium range. Instead of relying on traditional overbought/oversold thresholds, it uses adaptive range detection and heatmap coloring to reveal where price is trading within a volatility-adjusted band.
The oscillator maps market movement as a heat zone, highlighting when the price approaches the upper or lower range boundaries and signaling potential breakout or mean-reversion conditions.
Highlights
Adaptive range detection based on ATR and weighted price movement.
Heatmap-driven coloring that visualizes volatility pressure and directional bias.
Clear transition zones for detecting trend shifts and equilibrium points.
█ How It Works
⚪ Range Detection
The indicator identifies a dynamic price range using two main parameters:
Minimum Range Length: The number of bars required to confirm that a valid range exists.
Range Width Multiplier: Expands or contracts the detected range proportionally to the ATR (Average True Range).
This approach ensures that the oscillator automatically adapts to both trending and ranging markets without manual recalibration.
⚪ Weighted Mean Calculation
Instead of a simple moving average, the script calculates a weighted equilibrium mean based on the size of consecutive candle movements:
Larger price changes are given greater weight, emphasizing recent volatility.
⚪ Oscillator Formula
Once the range and equilibrium mean are defined, the oscillator computes:
Osc = 100 * (Close - Mean) / RangeATR
This normalizes price distance relative to the dynamic range size — producing consistent readings across volatile and quiet periods.
█ Heatmap Logic
The Range Oscillator includes a built-in heatmap engine that color-codes each oscillator value based on recent price interaction intensity:
Strong Bullish Zones: Bright green — price faces little resistance upward.
Weak Bullish Zones: Muted green — uptrend continuation but with minor hesitation.
Transition Zones: Blue — areas of uncertainty or trend shift.
Weak Bearish Zones: Maroon — downtrend pressure but soft momentum.
Strong Bearish Zones: Bright red — strong downside continuation with low resistance.
Each color band adapts dynamically using:
Number of Heat Levels: Controls granularity of the heatmap.
Minimum Touches per Level: Defines how reactive or “sensitive” each color zone is.
█ How to Use
⚪ Trend & Momentum Confirmation
When the oscillator stays above +0 with green coloring, it suggests sustained bullish pressure.
Similarly, readings below –0 with red coloring, it suggests sustained bearish pressure.
⚪ Range Breakouts
When the oscillator line breaks above +100 or below –100, the price is exceeding its normal volatility range, often signaling breakout potential or exhaustion extremes.
⚪ Mean Reversion Trades
Look for the oscillator to cross back toward zero after reaching an extreme. These transitions (often marked by blue tones) can identify early reversals or range resets.
⚪ Divergence
Use oscillator peaks and troughs relative to price action to spot hidden strength or weakness before the next move.
█ Settings
Minimum Range Length: Number of bars needed to confirm a valid range.
Range Width Multiplier: Expands or contracts range width based on ATR.
Number of Heat Levels: Number of gradient bands used in the oscillator.
Minimum Touches per Level: Sensitivity threshold for when a zone becomes “hot.”
-----------------
Disclaimer
The content provided in my scripts, indicators, ideas, algorithms, and systems is for educational and informational purposes only. It does not constitute financial advice, investment recommendations, or a solicitation to buy or sell any financial instruments. I will not accept liability for any loss or damage, including without limitation any loss of profit, which may arise directly or indirectly from the use of or reliance on such information.
All investments involve risk, and the past performance of a security, industry, sector, market, financial product, trading strategy, backtest, or individual's trading does not guarantee future results or returns. Investors are fully responsible for any investment decisions they make. Such decisions should be based solely on an evaluation of their financial circumstances, investment objectives, risk tolerance, and liquidity needs.
Inversion Fair Value Gap Signals [AlgoAlpha]🟠 OVERVIEW
This script is a custom signal tool called Inversion Fair Value Gap Signals (IFVG) , designed to detect, track, and visualize fair value gaps (FVGs) and their inversions directly on price charts. It identifies bullish and bearish imbalances, monitors when these zones are mitigated or rejected, and extends them until resolution or expiration. What makes this script original is the inclusion of inversion logic—when a gap is filled, the area flips into an opposite "inversion fair value gap," creating potential reversal or continuation zones that give traders additional context beyond classic FVG analysis.
🟠 CONCEPTS
The script builds on the Smart Money Concepts (SMC) principle of fair value gaps, where inefficiencies form when price moves too quickly in one direction. Detection requires a three-bar sequence: a strong up or down move that leaves untraded price between bar highs and lows. To refine reliability, the script adds an ATR-based size filter and prevents overlap between zones. Once created, gaps are tracked in arrays until mitigation (price closing back into the gap), expiration, or transformation into an inversion zone. Inversions act as polarity flips, where bullish gaps become bearish resistance and bearish gaps become bullish support. Lower-timeframe volume data is also displayed inside zones to highlight whether buying or selling pressure dominated during gap creation.
🟠 FEATURES
Automatic detection of bullish and bearish FVGs with ATR-based thresholding.
Inversion logic: mitigated gaps flip into opposite-colored IFVG zones.
Volume text overlay inside each zone showing up vs down volume.
Visual markers (△/▽ for FVG, ▲/▼ for IFVG) when price exits a zone without mitigation.
🟠 USAGE
Apply the indicator to any chart and enable/disable bullish or bearish FVG detection depending on your focus. Use the colored gap zones as areas of interest: bullish gaps suggest possible continuation to the upside until mitigated, while bearish gaps suggest continuation down. When a gap flips into an inversion zone, treat it as potential support/resistance—bullish IFVGs below price may act as demand, while bearish IFVGs above price may act as supply. Watch the embedded up/down volume data to gauge the strength of participants during gap formation. Use the △/▽ and ▲/▼ markers to spot when price rejects gaps or inversions without filling them, which can indicate strong trending momentum. For practical use, combine alerts with your trade plan to track when new gaps form, when old ones are resolved, or when key zones flip into inversions, helping you align entries, targets, or reversals with institutional order flow logic.
Structural Liquidity Signals [BullByte]Structural Liquidity Signals (SFP, FVG, BOS, AVWAP)
Short description
Detects liquidity sweeps (SFPs) at pivots and PD/W levels, highlights the latest FVG, tracks AVWAP stretch, arms percentile extremes, and triggers after confirmed micro BOS.
Full description
What this tool does
Structural Liquidity Signals shows where price likely tapped liquidity (stop clusters), then waits for structure to actually change before it prints a trigger. It spots:
Liquidity sweeps (SFPs) at recent pivots and at prior day/week highs/lows.
The latest Fair Value Gap (FVG) that often “pulls” price or serves as a reaction zone.
How far price is stretched from two VWAP anchors (one from the latest impulse, one from today’s session), scaled by ATR so it adapts to volatility.
A “percentile” extreme of an internal score. At extremes the script “arms” a setup; it only triggers after a small break of structure (BOS) on a closed bar.
Originality and design rationale, why it’s not “just a mashup”
This is not a mashup for its own sake. It’s a purpose-built flow that links where liquidity is likely to rest with how structure actually changes:
- Liquidity location: We focus on areas where stops commonly cluster—recent pivots and prior day/week highs/lows—then detect sweeps (SFPs) when price wicks beyond and closes back inside.
- Displacement context: We track the last Fair Value Gap (FVG) to account for recent inefficiency that often acts as a magnet or reaction zone.
- Stretch measurement: We anchor VWAP to the latest N-bar impulse and to the Daily session, then normalize stretch by ATR to assess dislocation consistently across assets/timeframes.
- Composite exhaustion: We combine stretch, wick skew, and volume surprise, then bend the result with a tanh transform so extremes are bounded and comparable.
- Dynamic extremes and discipline: Rather than triggering on every sweep, we “arm” at statistical extremes via percent-rank and only fire after a confirmed micro Break of Structure (BOS). This separates “interesting” from “actionable.”
Key concepts
SFP (liquidity sweep): A candle briefly trades beyond a level (where stops sit) and closes back inside. We detect these at:
Pivots (recent swing highs/lows confirmed by “left/right” bars).
Prior Day/Week High/Low (PDH/PDL/PWH/PWL).
FVG (Fair Value Gap): A small 3‑bar gap (bar2 high vs bar1 low, or vice versa). The latest gap often acts like a magnet or reaction zone. We track the most recent Up/Down gap and whether price is inside it.
AVWAP stretch: Distance from an Anchored VWAP divided by ATR (volatility). We use:
Impulse AVWAP: resets on each new N‑bar high/low.
Daily AVWAP: resets each new session.
PR (Percentile Rank): Where the current internal score sits versus its own recent history (0..100). We arm shorts at high PR, longs at low PR.
Micro BOS: A small break of the recent high (for longs) or low (for shorts). This is the “go/no‑go” confirmation.
How the parts work together
Find likely liquidity grabs (SFPs) at pivots and PD/W levels.
Add context from the latest FVG and AVWAP stretch (how far price is from “fair”).
Build a bounded score (so different markets/timeframes are comparable) and compute its percentile (PR).
Arm at extremes (high PR → short candidate; low PR → long candidate).
Only print a trigger after a micro BOS, on a closed bar, with spacing/cooldown rules.
What you see on the chart (legend)
Lines:
Teal line = Impulse AVWAP (resets on new N‑bar extreme).
Aqua line = Daily AVWAP (resets each session).
PDH/PDL/PWH/PWL = prior day/week levels (toggle on/off).
Zones:
Greenish box = latest Up FVG; Reddish box = latest Down FVG.
The shading/border changes after price trades back through it.
SFP labels:
SFP‑P = SFP at Pivot (dotted line marks that pivot’s price).
SFP‑L = SFP at Level (at PDH/PDL/PWH/PWL).
Throttle: To reduce clutter, SFPs are rate‑limited per direction.
Triggers:
Triangle up = long trigger after BOS; triangle down = short trigger after BOS.
Optional badge shows direction and PR at the moment of trigger.
Optional Trigger Zone is an ATR‑sized box around the trigger bar’s close (for visualization only).
Background:
Light green/red shading = a long/short setup is “armed” (not a trigger).
Dashboard (Mini/Pro) — what each item means
PR: Percentile of the internal score (0..100). Near 0 = bullish extreme, near 100 = bearish extreme.
Gauge: Text bar that mirrors PR.
State: Idle, Armed Long (with a countdown), or Armed Short.
Cooldown: Bars remaining before a new setup can arm after a trigger.
Bars Since / Last Px: How long since last trigger and its price.
FVG: Whether price is in the latest Up/Down FVG.
Imp/Day VWAP Dist, PD Dist(ATR): Distance from those references in ATR units.
ATR% (Gate), Trend(HTF): Status of optional regime filters (volatility/trend).
How to use it (step‑by‑step)
Keep the Safety toggles ON (default): triggers/visuals on bar‑close, optional confirmed HTF for trend slope.
Choose timeframe:
Intraday (5m–1h) or Swing (1h–4h). On very fast/thin charts, enable Performance mode and raise spacing/cooldown.
Watch the dashboard:
When PR reaches an extreme and an SFP context is present, the background shades (armed).
Wait for the trigger triangle:
It prints only after a micro BOS on a closed bar and after spacing/cooldown checks.
Use the Trigger Zone box as a visual reference only:
This script never tells you to buy/sell. Apply your own plan for entry, stop, and sizing.
Example:
Bullish: Sweep under PDL (SFP‑L) and reclaim; PR in lower tail arms long; BOS up confirms → long trigger on bar close (ATR-sized trigger zone shown).
Bearish: Sweep above PDH/pivot (SFP‑L/P) and reject; PR in upper tail arms short; BOS down confirms → short trigger on bar close (ATR-sized trigger zone shown).
Settings guide (with “when to adjust”)
Safety & Stability (defaults ON)
Confirm triggers at bar close, Draw visuals at bar close: Keep ON for clean, stable prints.
Use confirmed HTF values: Applies to HTF trend slope only; keeps it from changing until the HTF bar closes.
Performance mode: Turn ON if your chart is busy or laggy.
Core & Context
ATR Length: Bigger = smoother distances; smaller = more reactive.
Impulse AVWAP Anchor: Larger = fewer resets; smaller = resets more often.
Show Daily AVWAP: ON if you want session context.
Use last FVG in logic: ON to include FVG context in arming/score.
Show PDH/PDL/PWH/PWL: ON to see prior day/week levels that often attract sweeps.
Liquidity & Microstructure
Pivot Left/Right: Higher values = stronger/rarer pivots.
Min Wick Ratio (0..1): Higher = only more pronounced SFP wicks qualify.
BOS length: Larger = stricter BOS; smaller = quicker confirmations.
Signal persistence: Keeps SFP context alive for a few bars to avoid flicker.
Signal Gating
Percent‑Rank Lookback: Larger = more stable extremes; smaller = more reactive extremes.
Arm thresholds (qHi/qLo): Move closer to 0.5 to see more arms; move toward 0/1 to see fewer arms.
TTL, Cooldown, Min bars and Min ATR distance: Space out triggers so you’re not reacting to minor noise.
Regime Filters (optional)
ATR percentile gate: Only allow triggers when volatility is at/above a set percentile.
HTF trend gate: Only allow longs when the HTF slope is up (and shorts when it’s down), above a minimum slope.
Visuals & UX
Only show “important” SFPs: Filters pivot SFPs by Volume Z and |Impulse stretch|.
Trigger badges/history and Max badge count: Control label clutter.
Compact labels: Toggle SFP‑P/L vs full names.
Dashboard mode and position; Dark theme.
Reading PR (the built‑in “oscillator”)
PR ~ 0–10: Potential bullish extreme (long side can arm).
PR ~ 90–100: Potential bearish extreme (short side can arm).
Important: “Armed” ≠ “Enter.” A trigger still needs a micro BOS on a closed bar and spacing/cooldown to pass.
Repainting, confirmations, and HTF notes
By default, prints wait for the bar to close; this reduces repaint‑like effects.
Pivot SFPs only appear after the pivot confirms (after the chosen “right” bars).
PD/W levels come from the prior completed candles and do not change intraday.
If you enable confirmed HTF values, the HTF slope will not change until its higher‑timeframe bar completes (safer but slightly delayed).
Performance tips
If labels/zones clutter or the chart lags:
Turn ON Performance mode.
Hide FVG or the Trigger Zone.
Reduce badge history or turn badge history off.
If price scaling looks compressed:
Keep optional “score”/“PR” plots OFF (they overlay price and can affect scaling).
Alerts (neutral)
Structural Liquidity: LONG TRIGGER
Structural Liquidity: SHORT TRIGGER
These fire when a trigger condition is met on a confirmed bar (with defaults).
Limitations and risk
Not every sweep/extreme reverses; false triggers occur, especially on thin markets and low timeframes.
This indicator does not provide entries, exits, or position sizing—use your own plan and risk control.
Educational/informational only; no financial advice.
License and credits
© BullByte - MPL 2.0. Open‑source for learning and research.
Built from repeated observations of how liquidity runs, imbalance (FVG), and distance from “fair” (AVWAPs) combine, and how a small BOS often marks the moment structure actually shifts.
HeatCandleHeatCandle - AOC Indicator
✨ Features
📊 Heat-Map Candles: Colors candles based on the price’s deviation from a Triangular Moving Average (TMA), creating a heat-map effect to visualize price zones.
📏 Zone-Based Coloring: Assigns colors to 20 distinct zones (Z0 to Z19) based on the percentage distance from the TMA, with customizable thresholds.
⚙️ Timeframe-Specific Zones: Tailored zone thresholds for 1-minute, 5-minute, 15-minute, 30-minute, 1-hour, and 4-hour timeframes for precise analysis.
🎨 Customizable Visuals: Gradient color scheme from deep blue (oversold) to red (overbought) for intuitive price movement interpretation.
🛠️ Adjustable Parameters: Configure TMA length and threshold multiplier to fine-tune sensitivity.
🛠️ How to Use
Add to Chart: Apply the "HeatCandle - AOC" indicator on TradingView.
Configure Inputs:
TMA Length: Set the period for the Triangular Moving Average (default: 150).
Threshold Multiplier: Adjust the multiplier to scale zone sensitivity (default: 1.0).
Analyze: Observe colored candles on the chart, where colors indicate the price’s deviation from the TMA:
Dark blue (Z0) indicates strong oversold conditions.
Red (Z19) signals strong overbought conditions.
Track Trends: Use the color zones to identify potential reversals, breakouts, or trend strength based on price distance from the TMA.
🎯 Why Use It?
Visual Clarity: The heat-map candle coloring simplifies identifying overbought/oversold conditions at a glance.
Timeframe Flexibility: Zone thresholds adapt to the selected timeframe, ensuring relevance across short and long-term trading.
Customizable Sensitivity: Adjust TMA length and multiplier to match your trading style or market conditions.
Versatile Analysis: Ideal for scalping, swing trading, or trend analysis when combined with other indicators.
📝 Notes
Ensure sufficient historical data for accurate TMA calculations, especially with longer lengths.
The indicator is most effective on volatile markets where price deviations are significant.
Pair with momentum indicators (e.g., RSI, MACD) or support/resistance levels for enhanced trading strategies.
Happy trading! 🚀📈
Dynamic Volume Clusters with Retest Signals (Zeiierman)█ Overview
The Dynamic Volume Clusters with Retest Signals indicator is designed to detect key Volume Clusters and provide Retest Signals. This tool is specifically engineered for traders looking to capitalize on volume-based trends, reversals, and key price retest points.
The indicator seamlessly combines volume analysis, dynamic cluster calculations, and retest signal logic to present a comprehensive trading framework. It adapts to market conditions, identifying clusters of volume activity and signaling when the price retests critical zones.
█ How It Works
⚪ Volume Cluster Detection
The indicator dynamically calculates volume clusters by analyzing the highest and lowest price points within a specified lookback period.
Cluster Logic:
Bright Lines (Strong Red/Green):
These indicate that the price has frequently revisited these levels, creating a dense cluster.
Such areas serve as support or resistance, where significant historical trading has occurred, often acting as barriers to price movement.
Traders should consider these levels as potential reversal zones or consolidation points.
Faded or Darker Lines:
These lines indicate areas where the price has less historical activity, suggesting weaker clustering.
These zones have less market memory and are more likely to break, supporting trend continuation and rapid price movement.
⚪ Candle Color Logic (Market Memory)
Blue Candles (High Cluster Density):
Candles turn blue when the price has revisited a particular area many times.
This signals a highly clustered zone, likely to act as a barrier, creating consolidation or range phases.
These areas indicate strong market memory, potentially rejecting price attempts to break through.
Green or Red Candles (Low Cluster Density):
Once the price breaks out of these dense clusters, the candles turn green (bullish) or red (bearish).
This suggests the price has moved into a less clustered territory, where the path forward is clearer and trends are likely to extend without immediate resistance.
⚪ Retest Signal Logic
The indicator identifies critical retest points where the price crosses a cluster boundary and then reverses. These points are essential for traders looking to catch continuation or reversal setups.
⚪ Dynamic Price Clustering
The indicator dynamically adapts the clustering logic based on price movement and volume shifts.
Uses a dynamic moving average (VPMA) to maintain adaptive cluster levels.
Integrates a Kalman Filter for smoothing, reducing noise, and improving trend clarity.
Automatically updates as new data is received, keeping the clusters relevant in real-time.
█ How to Use
⚪ Trend Following & Reversal Detection
Use Retest signals to identify potential trend continuation or reversal points.
⚪ Trading Volume Clusters and Market Memory
Identify Key Zones:
Focus on bright, saturated cluster lines (strong red or green) as they indicate high market memory, where price has spent significant time in the past.
These zones are likely to exhibit a more choppy market. Apply range or mean reversion strategies.
Spot Potential Breakouts:
Faded or darker cluster lines indicate areas of low market memory, where the price has moved quickly and spent less time.
Use these areas to identify possible trend setups, as they represent lower resistance to price movement.
⚪ Interpreting Candle Colors for Market Phases
Blue Candles (High Cluster Density):
When candles turn blue, it signals that the price has revisited this area multiple times, creating a dense cluster.
These zones often trap price movement, leading to consolidations or range phases.
Use these areas as caution zones, where price can slow down or reverse.
Green or Red Candles (Low Cluster Density):
Once the price breaks out of these clustered zones, the candles turn green (bullish) or red (bearish), indicating lower market memory.
This signals a trend initiation with less immediate resistance, ideal for momentum and breakout trades.
Use these signals to identify emerging trends and ride the momentum.
█ Settings
Range Lookback Period: Sets the number of bars for calculating the range.
Zone Width (% of Range): Determines how wide the volume clusters are relative to the calculated range.
Volume Line Colors: Customize the appearance of bullish and bearish lines.
Retest Signals: Toggle the appearance of Triangle Up/Down retest markers.
Minimum Bars for Retest: Define the minimum number of bars required before a retest is valid.
Maximum Bars for Retest: Set the maximum number of bars within which a retest can occur.
Price Cluster Period: Adjusts the sensitivity of the dynamic clustering logic.
Cluster Confirmation: Controls how tightly the clusters respond to price action.
Price Cluster Start/Peak: Sets the minimum and maximum touches required to fully form a cluster.
-----------------
Disclaimer
The content provided in my scripts, indicators, ideas, algorithms, and systems is for educational and informational purposes only. It does not constitute financial advice, investment recommendations, or a solicitation to buy or sell any financial instruments. I will not accept liability for any loss or damage, including without limitation any loss of profit, which may arise directly or indirectly from the use of or reliance on such information.
All investments involve risk, and the past performance of a security, industry, sector, market, financial product, trading strategy, backtest, or individual's trading does not guarantee future results or returns. Investors are fully responsible for any investment decisions they make. Such decisions should be based solely on an evaluation of their financial circumstances, investment objectives, risk tolerance, and liquidity needs.
iFVG (BPR)
This indicator detects Fair Value Gaps (FVGs) and Inversion Zones (iFVGs) based concept from the ICT methodology.
An iFVG forms when a bullish and a bearish FVG overlap, creating a double imbalance zone. These are high-reaction points often targeted by smart money.
🔷 What It Detects
Bullish FVG: When the high of Candle 1 is lower than the low of Candle 3
Bearish FVG: When the low of Candle 1 is higher than the high of Candle 3
iFVG (or BPR): When a bullish and bearish FVG overlap, forming a double imbalance zone
🔷Mitigation Logic
An FVG or BPR becomes an iFVG when price closes against its original bias Once this happens, the zone is reclassified as a potential support or resistance (iFVG)
If price later mitigates the iFVG, all visual elements are automatically removed to keep the chart clean
🔷Visual Output
Standard FVGs: Customizable lines between Candle 1 and Candle 3
iFVGs (mitigated BPRs): Adjustable and highlighted rectangles to show the full zone
Mitigation Type: FVG or iFVG zones disappear when 50% of the zone is reached
🔷Custom Settings
Show Last Zones: Set how many recent zones to display on the chart (max 100)
Mitigation Type: Based on the percentage of zone coverage
Color & Style: Customize the appearance of FVG and iFVG zones
🔷 Use Case
This indicator is designed for real-time institutional analysis, helping traders identify:
Recent imbalances (FVGs)
Confluence zones (iFVGs = BPRs)
High-reaction points in the market
Ideal when combined with market structure, liquidity levels, and Kill Zones
Best used in combination with market structure, liquidity zones, and Kill Zone timing .
Dskyz (DAFE) Turning Point Indicator - Dskyz (DAFE) Turning Point Indicator — Smart Reversal Signals
Inspired by the intelligent logic of a pervious indicator I saw. This script represents a next-generation reversal detection system—completely re-engineered with cutting-edge filters, adaptive logic, and intelligent dashboards.
The Dskyz (DAFE) Turning Point Indicator
🧠 What Is It?
is designed to identify key market reversal zones with extraordinary accuracy by combining trend direction, volatility confirmation, price action patterns, and smart filtering layers—all visualized in a highly interactive and informative chart overlay.
This isn’t just a signal generator—it’s a decision-making assistant.
⚙️ Inputs & How to Use Them
All input fields are grouped for ease-of-use and explanation:
🔸 Reversal Logic Settings
Source: The price source used for signal generation (default: hlcc4). Can be changed to any standard price formula (open, close, hl2, etc.).
ATR Period: Used for determining volatility and dynamic trailing stop logic.
Supertrend Factor / Period: Calculates directional movement to detect trending vs choppy zones.
Reversal Sensitivity Thresholds: Internal logic filters minor pullbacks from true reversals.
🔸 Filters
Trend Filter: Enables trend-only signals (optional).
Volume Spike Filter: Confirms reversals with significant volume activity.
Volatility Zone Coloring: Visually highlights high-volatility areas to avoid late entries or fakeouts.
Custom High/Low Detection: Smart local top/bottom scanning to reinforce accuracy.
🔸 Visual & Dashboard Options
Signal Labels: Toggle signal labels on the chart.
Color Theme: Choose your visual theme for easier visibility.
Dashboard Toggle: Activate a compact dashboard summarizing strategy health (win rate, drawdown, trend state, volatility).
🧩 Functions Used
ta.supertrend(): Determines trend direction for signal confirmation and filtering.
ta.atr(): Calculates real-time volatility to determine trailing stop exits and visual zones.
ta.rsi() (internally optimized): Helps filter overbought/oversold conditions.
Local High/Low Scanner: Tracks recent pivots using a custom dynamic lookback.
Signal Engine: Consolidates multiple confirmation layers before plotting.
🚀 What Makes It Unique?
Unlike traditional reversal indicators, this one combines:
Multi-factor signal validation: No single indicator makes the call—volume, trend, price action, and volatility all contribute.
Adaptive filtering: The indicator evolves with the market—less noise, smarter signals.
Visual volatility heatmap zones: Avoid entering during uncertainty or manipulation spikes.
Interactive trend dashboard: Immediate insight into the strength and condition of the current market phase.
Highly customizable: Turn features on/off to match your trading style—scalping, swing, or trend-following.
Precision timing: Uses optimized versions of RSI and ATR that adjust automatically with price context.
🧬 Recommended for:
Commodity: Futures, Forex, Crypto
Timeframes: 1m to 1h for active traders. 4h+ for swing trades.
Pair With: Support/resistance zones, Fibonacci levels, and smart money concepts for additional confluence.
🎯 Why It Works
- Traditional reversal signals suffer from lag and noise. This system filters both by:
- Using multi-source confirmation, not just price movement.
-Tracking volatility directly, not assuming static markets.
-Detecting exhaustion, not just divergence.
-Keeping your screen clean, with only the most relevant data shown.
🧾 Credit & Acknowledgement
🧠 Original Concept Inspiration: This project was deeply inspired by the work of Enes_Yetkin_ and their approach to reversal detection. This version expands on the concept with additional technical layers, updated visuals, and real-time adaptability.
📌 Final Thoughts
This is more than a reversal tool. It's a market condition interpreter, entry/exit planner, and risk assistant all in one. Every aspect is engineered to give you an edge—especially when timing means everything.
Use it with discipline. Use it with clarity. Trade smarter.
**I will continue to release incredible strategies and indicators until I turn this into a brand or until someone offers me a contract.
-Dskyz
Statistical OHLC Projections [neo|]█ OVERVIEW
Statistical OHLC Projections is an indicator designed to offer users a customizable deep-dive on measuring historical price levels for any timeframe. The indicator separates price into two distinct levels, "Manipulation" and "Distribution", where the idea is that for higher timeframe candles, e.g. an up-close candle, the distance from the open to the bottom of the wick would constitute the Manipulation, and the rest would be considered the Distribution. By measuring out these levels, we can gain insight on how far the market may move from higher timeframe opens to their manipulations and distributions, and apply this knowledge to our analysis.
IMPORTANT: Since levels are based on the lookback available on your chart, if the levels aren't being displayed this likely means you don't have enough lookback for your selected timeframe. To check this, enable the stat table to see how many values are available for your timeframe, and either reduce the lookback or increase your chart timeframe.
█ CONCEPTS
The core concept revolves around understanding market behavior through the lens of historical candle structure. The indicator dissects OHLC data to provide statistical boundaries of expected price movement.
- Manipulation Levels: These represent the areas typically seen as liquidity grabs or false moves where price extends in one direction before reversing.
- Distribution Levels: These highlight where the bulk of directional movement tends to occur, often following the manipulation move.
The tool aggregates this data across your selected timeframe to inform you of potential levels associated with it.
█ FEATURES
Multiple Display Types: Display statistical data through two sleek styles, areas or lines. Where areas represent the area between two customizable lookback values, and lines represent one average value.
Adjustable Timeframe Selection: Whether you want to see data based on the 1D chart, or the 1W chart, anything is possible. Simply change the timeframe on the dropdown menu and if there is sufficient lookback the indicator will adjust to your requested timeframe.
Customizable Historical Lookback: By default, the indicator will measure the average 60 values of your requested timeframe, however this may be adjusted to be higher or lower based on your preference. If you want to measure recent moves, 10-20 lookback may be better for you, or if you want more data for less volatile instruments, a value of 100 may be better.
Historical Display: Prevent historical levels from being removed by unchecking the "Remove Previous Drawings" option, this will allow you to examine how the levels previously interacted with price.
NY Midnight Anchoring: By checking the "Use NY Midnight" option, you may see the projection anchored to the New York midnight open time, which is often a significant level on indices.
Alerts: You may enable alerts for any of the indicator's provided levels to stay informed, even when off the charts.
█ How to use
To use the indicator, simply apply it to your chart and modify any of your desired inputs.
By default, the indicator will provide levels for the "1D" timeframe, with a desired lookback of 60, on most instruments and plans this can be gotten when you are on the 30 minute timeframe or above.
When price reaches or extends beyond a manipulation level, observe how it reacts and whether it rejects from that level, if it does this may be an indication that the candle for the timeframe you selected may be reversing.
█ SETTINGS AND OPTIONS
Customize the indicator’s behavior, timeframe sources, and visual appearance to fit your analysis style. Each setting has been designed with flexibility in mind, whether you're working on lower or higher timeframes.
Display Mode: Switch between different display styles for levels: - Default: Shows all statistical levels as individual lines.
- Areas: Plots filled zones between two customizable lookbacks to represent the range between them.
This is ideal for visually mapping high-probability zones of price activity.
Timeframe Settings:
- Show First/Second Timeframe: Choose to show one or both timeframe projections simultaneously.
- First Timeframe / Second Timeframe: Define the higher timeframe candle you want to base calculations on (e.g., 1D, 1W).
- Use NY Midnight: When enabled and using the daily timeframe, the levels will be anchored to the New York Midnight Open (00:00 EST), a key institutional timing reference, especially useful for indices and forex.
Calculation Settings:
- Main Lookback Period: The number of historical candles used in the statistical calculations. A lower number focuses on recent price action, while a higher number smooths results across broader history.
- First Lookback / Second Lookback: Used when “Areas” mode is selected to define the range of the shaded zone. For example, an area from 20 to 60 candles creates a band between short- and long-term price behavior averages.
Visual Settings:
- Line Style: Set your preferred visual style: Solid, Dashed, or Dotted.
- Remove Previous Drawings: When enabled, only the most recent projection is shown on the chart. Disable to retain previous levels and visually backtest their reactions over time.
Color Settings:
Customize each level independently to match your chart theme:
- Manipulation High/Low
- Distribution High/Low
- Open Level
- Label Text Color
Premium/Discount Zones:
- Enable Premium/Discount Zones: Overlay price zones above and below equilibrium to visualize potential overbought (premium) and oversold (discount) areas.
- Premium/Discount Colors: Fully customizable zone colors for clarity and emphasis.
Table Settings:
- Show Statistics Table: Adds an on-chart table summarizing key levels from your active timeframe(s).
- Table Cell Color: Set the background color of the table cells for visibility.
- Table Position: Choose from preset chart locations to position the table where it works best for your layout.
Alerts:
Stay on top of price interactions with key levels even when you're away from the charts.
- Manipulation Hits (High)
- Manipulation Hits (Low)
- Distribution Hits (High)
- Distribution Hits (Low)
Liquidity Location Detector [BigBeluga]
This indicator helps traders identify potential liquidity zones by detecting significant volume levels at key highs and lows. By using color intensity and scoring numbers, it visually highlights areas where liquidity concentration may be highest while incorporating trend analysis through EMAs.
🔵Key Features:
Liquidity Zone Detection: Automatically detects and marks areas where significant volume has accumulated at swing highs and lows.
Dynamic Box Plotting: Draws liquidity boxes at key highs and lows, updating based on market conditions.
Volume Strength Scaling: Uses a scoring system to rank liquidity zones, helping traders identify the strongest areas.
Color Intensity for Volume Strength: More transperent color indicate less liquidity, while less transperent represent stronger volume concentrations.
Customizable Display: Users can adjust the number of displayed liquidity zones and modify colors to suit their trading style.
Real-Time Liquidity Adaptation: As price interacts with liquidity zones, the indicator updates dynamically to reflect changing market conditions.
Auto-Stopping Liquidity Zones: Liquidity boxes automatically stop extending to the right once price crosses them, preventing outdated zones from interfering with live market action.
Trend Analysis with EMAs: Includes two optional EMAs (fast and slow) to help traders analyze market trends. Users can enable or disable these EMAs in the settings and use crossover signals for trend confirmation.
🔵Usage:
Identify Key Liquidity Areas: Use color intensity and transparency levels to determine high-impact liquidity zones.
Support & Resistance Confirmation: Liquidity zones can act as potential support and resistance levels, enhancing trade decision-making.
Market Structure Analysis: Observe how price interacts with liquidity to anticipate breakout or reversal points.
Scalping & Swing Trading: Works for both short-term and long-term traders looking for liquidity-based trade setups.
Liquidation Map Insight: A liquidity map highlights areas where large amounts of leveraged positions (both long and short) are likely to get liquidated. Since many traders use leverage, sharp price movements can trigger a cascade of liquidations, leading to rapid price surges or drops. Monitoring these liquidity zones and trends helps traders anticipate where price might react strongly.
Liquidity Location Detector is an essential tool for traders seeking to map out potential liquidity zones, providing deeper insights into market structure and trading volume dynamics.
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.
GOLDEN RSI by @thejamiulGOLDEN RSI thejamiul is a versatile Relative Strength Index (RSI)-based tool designed to provide enhanced visualization and additional insights into market trends and potential reversal points. This indicator improves upon the traditional RSI by integrating gradient fills for overbought/oversold zones and divergence detection features, making it an excellent choice for traders who seek precise and actionable signals.
Source of this indicator : This indicator is based on @TradingView original RSI indicator with a little bit of customisation to enhance overbought and oversold identification.
Key Features
1. Customizable RSI Settings:
RSI Length: Adjust the RSI calculation period to suit your trading style (default: 14).
Source Selection: Choose the price source (e.g., close, open, high, low) for RSI calculation.
2. Gradient-Filled RSI Zones:
Overbought Zone (80-100): Gradient fill with shades of green to indicate strong bullish conditions.
Oversold Zone (0-20): Gradient fill with shades of red to highlight strong bearish conditions.
3. Support and Resistance Levels:
Upper Band: 80
Middle Bands: 60 (bullish) and 40 (bearish)
Lower Band: 20
These levels help identify overbought, oversold, and neutral zones.
4. Divergence Detection:
Bullish Divergence: Detects lower lows in price with corresponding higher lows in RSI, signaling potential upward reversals.
Bearish Divergence: Detects higher highs in price with corresponding lower highs in RSI, indicating potential downward reversals.
Visual Indicators:
Bullish divergence is marked with green labels and line plots.
Bearish divergence is marked with red labels and line plots.
5. Alert Functionality:
Custom Alerts: Set up alerts for bullish or bearish divergences to stay notified of potential trading opportunities without constant chart monitoring.
6. Enhanced Chart Visualization:
RSI Plot: A smooth and visually appealing RSI curve.
Color Coding: Gradient and fills for better distinction of trading zones.
Pivot Labels: Clear identification of divergence points on the RSI plot.
Fibonacci Channel Standard Deviation levels based off 200MAThis script dynamically combines Fibonacci levels with the 200-period simple moving average (SMA), offering a powerful tool for identifying high-probability support and resistance zones. By adjusting to the changing 200 SMA, the script remains relevant across different market phases.
Key Features:
Dynamic Fibonacci Levels:
The script automatically calculates Fibonacci retracements and extensions relative to the 200 SMA.
These levels adapt to market trends, offering more relevant zones compared to static Fibonacci tools.
Support and Resistance Zones:
In uptrends, price often respects retracement levels above the 200 SMA (e.g., 38.2%, 50%, 61.8%).
In downtrends, price may interact with retracements and extensions below the 200 SMA (e.g., 23.6%, 1.618).
Customizable Confluence Zones:
Key levels such as the golden pocket (61.8%–65%) are highlighted as high-probability zones for reversals or continuations.
Extensions (e.g., 1.618) can serve as profit targets or bearish continuation points.
Practical Applications:
Identifying Reversal Zones:
Look for confluence between Fibonacci levels and the 200 SMA to identify potential reversal points.
Example: A pullback to the 61.8%–65% golden pocket near the 200 SMA often signals a bullish reversal.
Trend Confirmation:
In uptrends, price respecting Fibonacci retracements above the 200 SMA (e.g., 38.2%, 50%) confirms strength.
Use Fibonacci extensions (e.g., 1.618) as profit targets during strong trends.
Dynamic Risk Management:
Place stop-losses just below key Fibonacci retracement levels near the 200 SMA to minimize risk.
Bearish Scenarios:
Below the 200 SMA, Fibonacci retracements and extensions act as resistance levels and bearish targets.
How to Use:
Volume Confirmation: Watch for volume spikes near Fibonacci levels to confirm support or resistance.
Price Action: Combine with candlestick patterns (e.g., engulfing candles, pin bars) for precise entries.
Trend Indicators: Use in conjunction with shorter moving averages or RSI to confirm market direction.
Example Setup:
Scenario: Price retraces to the 61.8% Fibonacci level while holding above the 200 SMA.
Confirmation: Volume spikes, and a bullish engulfing candle forms.
Action: Enter long with a stop-loss just below the 200 SMA and target extensions like 1.618.
Key Takeaways:
The 200 SMA serves as a reliable long-term trend anchor.
Fibonacci retracements and extensions provide dynamic zones for trade entries, exits, and risk management.
Combining this tool with volume, price action, or other indicators enhances its effectiveness.
Session Sweeps [LuxAlgo]The Session Sweeps indicator combines ICT-based features for a complete trading methodology involving market sessions, market structure, and fair value gaps to find optimal entry conditions for trading price action.
Traders frequently tend to place stop/limit orders at the high and low points of major trading sessions such as Asian (Tokyo), European (London), and North American (New York), resulting in the establishment of liquidity pools at those particular levels. The Session Sweeps indicator is crafted to recognize and underscore occurrences of session sweeps or liquidity sweeps during these major trading sessions.
🔶 USAGE
Default settings utilize major forex trading sessions, yet users can select their preferred opening and closing times, rename the sessions, or adjust the colors. It's important to note that the specified times for each session align with the respective local timezones: Asian (Tokyo) UTC+9, European (London) UTC, and North American (New York) UTC-5.
If the price briefly crosses either the highest or lowest point of a market session. These movements, aiming at triggering stop losses, suggest potential shifts in the market direction. Detecting such movements is the fundamental purpose and core functionality of the script.
🔹Market Structure Shifts
A Market Structure Shift refers to a change in market direction, either from an uptrend to a downtrend or vice versa. A part of a common entry model when using session sweeps is waiting for the formation of a CHoCH after a session sweep.
🔹Fair Value Gaps
A Fair Value Gap (FVG) holds particular appeal for price action traders, emerging when there are inefficiencies or imbalances in the market, often a result of uneven buying and selling activity. The underlying concept of FVGs is that the market tends to revisit these inefficiencies before resuming its trajectory in alignment with the initial impulsive move.
After the formation of a CHoCH traders can enter a position when the price enters the area of a Fair Value Gap (FVG).
🔹Setup Examples
This entry setup is commonly used by ICT traders and is shared for informational & educational purposes only.
Long Positions (5-Minute Timeframe):
Wait for the previous session's low to be swept.
Look for a Bullish Choch.
Find a Bullish FVG formed by or before the Choch.
Entry Point: At the FVG.
Take Profit (TP): At the session high or aim for a 1:2 Risk-Reward Ratio.
Stop Loss (SL): At the session low or nearest Swing Low.
Take partial profits at intermediate swings, but don’t shift SL prematurely.
Short Positions (5-Minute Timeframe):
Wait for the previous session's high to be swept.
Look for a Bearish Choch.
Find a FVG formed by or before the Choch.
Entry Point: At the FVG.
Take Profit (TP): At the previous session's low or aim for a 1:2 RR.
Stop Loss (SL): At the session high or nearest Swing High.
Take partial profits at intermediate swings, but don’t shift SL prematurely.
🔶 SETTINGS
🔹Session Sweeps
Buyside Sweep Zones, Color, and Margin: toggles the visibility of bullside sweep zones, customizes the associated color, and sets the margin value defining the range of a bullside sweep zone.
Sellside Sweep Zones, Color, and Margin: toggles the visibility of sell-side sweep zones, customizes the associated color, and sets the margin value defining the range of a sell-side sweep zone.
Sweep Margin Length: specifies the maximum allowed length of a sweep zone invalidation, the length over which the price slightly invalidated the margin range.
Detect Sweeps Once per Session: if enabled will detect only once a sweep zone within a session.
Hide Fake Sweep Zones, and Color: controls the visibility and color of the fake sweep zones.
🔹Sessions
Session (Asia, London, New York AM, and New York PM), Start Time, and End Time: enables or disables the visibility of the named market session range, and customization of the session hours.
Color: color customization option of the named session.
Extend Max/Min: extends the highest and lowest price levels of the named session until the end of the next enabled session. This option is recommended to be enabled when sweep zone detection is activated to observe the relationship between the sweep zone and previous session extreme levels.
Extend Mid: extends the mean price levels of the named session until the end of the next enabled session. The extended line may serve as potential support and resistance levels.
Fill: enables/disables background coloring of the named session.
New York DST | London DST: enabling this option initiates Daylight Saving Time (DST) for New York or London. Note: Daylight Saving Time is not applied to the Asian (Tokyo) session.
Sessions Extreme Lines | Sessions Names: toggles the visibility of the highest and lowest price levels, as well as the names, for all market sessions.
Session Lines Width: sets the width of the lines for all sessions.
Session Fill Transparency: sets the background color transparency of the range for all sessions.
🔹Market Structure Shifts
Market Structure Shifts: toggles the visibility of market structure shifts, also known as change of character (CHoCH).
Detection Length: specifies the detection length.
Market Structure Shifts; Bull & Bear: color customization options.
🔹Fair Value Gaps
Fair Value Gaps: toggles the visibility of the fair value gaps.
Fair Value Gap Width Filter: specifies the filtering multiplier; additional details can be found in the tooltip of the respective input option.
Bullish & Bearish Imbalance: color customization options.
🔹Sessions Tabular View
Sessions Tabular View: toggles the visibility of the tabular view of the sessions, displaying date &time, status, and countdown counter.
Hide if not Forex Market Instrument: checks the market and automatically enables/disables the option based on the market instrument.
Table Text Size & Position: size and placement customization options
🔶 LIMITATIONS
Please be aware that fair value gap filtering cannot be applied to the initial 144 candles (with a fixed-length ATR) as the ATR value necessary for filtering won't be available during this period.
🔶 RELATED SCRIPTS
Buyside-Sellside-Liquidity
Sessions
Liquidity-Voids-FVG
Thank you to our community for the recommendation of this script. To explore additional conceptual scripts and related content, we invite you to visit >>> LuxAlgo-Scripts .
TTP IFVG Signals With EMA /ICT Gold scalpingThis script uses original logic and alerting rules. in Japan
finding ICT IFVG and EMA conditions.
#IFVG, Forex, ICT, EMA, Scalping, Indicator
This indicator automatically finds IFVG (Imbalance / Fair Value Gap) zones and gives you a buy or sell signal when price comes back and breaks out through that gap.
It also draws a colored box over the gap so you can see the zone visually, and it raises alerts when a new signal appears.
High-level logic:
On every bar, the script looks back up to “IFVG_GapBars” bars.
For each offset i it checks a 3-candle pattern:
– If the low of the newer candle is above the high of the older candle: bullish FVG (price jumped up, leaving a gap).
– If the high of the newer candle is below the low of the older candle: bearish FVG (price jumped down, leaving a gap).
When a valid FVG is found:
– For a bullish FVG it looks for a later close that breaks down through that gap (sell signal).
– For a bearish FVG it looks for a later close that breaks up through that gap (buy signal).
– A moving-average trend filter must agree (downtrend for sells, uptrend for buys).
– It checks that price has not already “filled” the gap before the breakout.
If all conditions are satisfied, it:
– Sets signal_dir = 1 for a buy, or -1 for a sell.
– Draws a box from the original FVG bar to the bar just before the breakout (extended a bit to the right), between the gap high and gap low.
– Plots an ▲ label for buys or ▼ label for sells.
– Triggers the corresponding alert conditions.
Now the parameters:
PipSizeMultilier (PipSizeManual)
Multiplies the symbol’s minimum tick size (syminfo.mintick).
It is used when converting “MinFVG_Pips” into an actual price distance.
If you feel the indicator is too sensitive (too many small gaps), you can increase this multiplier to effectively require a larger price difference.
TickSize
Internal value = syminfo.mintick * PipSizeMultiplier.
This is the actual price step the script uses as a “pip” when checking minimum gap size.
FVG Search Lookback (IFVG_GapBars)
How many bars back from the current bar the script will scan for a 3-candle FVG pattern.
Larger value = it can find older FVGs, but loop cost is higher.
Min FVG Size (Pips/Points) (MinFVG_Pips)
Minimum allowed size of the gap, measured in “pips/points” using TickSize.
If the vertical distance between the gap high and gap low is smaller than this, the gap is ignored.
0.0 means “no size filter” (every FVG is allowed).
FVG Epsilon (Price Units) (FVG_EpsPoints)
Tolerance for the FVG detection.
It is subtracted/added in the condition that checks “low > old high” or “high < old low”.
0.0 means strict gap (no overlap at all). A small positive epsilon allows tiny overlaps to still count as a gap.
Show IFVG Zones (ShowZones)
If true, the script draws a box over the IFVG zone when a signal is confirmed.
If false, no boxes are drawn; you only see the ▲ / ▼ markers and alerts.
Buy Zone Color (ZoneColorBuy)
Fill color and border color for boxes created from bearish FVGs that later produce a buy signal.
Sell Zone Color (ZoneColorSell)
Fill color and border color for boxes created from bullish FVGs that later produce a sell signal.
Box Extension (Bars) (BoxExtension)
How many extra bars to extend the right side of the box beyond the breakout bar.
The internal right coordinate is “bar_index - 1 + BoxExtension”.
Increase this if you want the zone to visually extend further into the future.
MA Period (MA_Period)
Lookback length of the moving average used as a trend filter.
MA Type (MA_Kind)
Type of moving average: “SMA” or “EMA”.
If SMA is chosen, the script uses ta.sma; if EMA, it uses ta.ema.
Moving-average filter behavior:
For sell signals (from bullish FVG): MA must be sloping down (MA < MA ) and price must be below MA.
For buy signals (from bearish FVG): MA must be sloping up (MA > MA ) and price must be above MA.
If these conditions are not satisfied, the FVG is ignored even if the gap and breakout conditions are met.
Signals and alerts:
signal_dir = 1 → buy signal, ▲ label below the bar, “IFVG Buy Alert” / “IFVG Buy/Sell Alert” can fire.
signal_dir = -1 → sell signal, ▼ label above the bar, “IFVG Sell Alert” / “IFVG Buy/Sell Alert” can fire.
signal_dir = 0 → no new signal on this bar.
In short:
This indicator finds 3-candle IFVG gaps, filters them by size and trend, waits for a clean breakout through the gap, draws a box on the original gap zone, and gives you a clear buy or sell signal plus alerts.
Extended SOPR Indicator - SSOPR Tops (A/B toggle)Extended SOPR Indicator — SSOPR Tops and Lows (A/B toggle)
Observation-only. Data: Glassnode SOPR.
Overview
This indicator extends the classical SOPR (Spent Output Profit Ratio) to improve readability and reduce noise on charts. SOPR measures whether coins moved on-chain were spent at a profit or at a loss. In brief: SOPR > 1 → spending at profit; SOPR < 1 → spending at loss. SSOPR (from "Smoothed SOPR") applies optional log transform (centers baseline at 0), smoothing (standard or adaptive), and adds structured signals: Z‑score lows (capitulation), buy zones , and top detection after prolonged elevation.
Why extend SOPR? (SSOPR vs classical SOPR)
• Noise reduction: Raw daily SOPR can whipsaw around its baseline. SSOPR uses smoothing and (optionally) adaptive smoothing so regimes are visible without overfitting.
• Better readability: The log transform shifts the break-even line to 0, making “profit territory” (above 0) and “loss territory” (below 0) visually intuitive on oscillators.
• Actionable context: Z‑score highlights extreme lows (capitulation risk), a simple buy-zone threshold marks potential accumulation, and a structured top pattern (with a time factor) helps frame distribution phases after sustained elevation.
What the script plots
• Smoothed SOPR (SSOPR): An orange line representing the smoothed SOPR (with optional log transform and optional adaptive smoothing).
• Top markers: A red triangle appears once at the onset of a confirmed top pattern.
• Background shading:
– Soft green: Buy zone when SSOPR falls below the “Buy Threshold.” (+ Z‑score capitulation zones (extreme lows)).
– Soft red: Top‑zone shading when the top criteria are met but before the single triangle fires.
Inputs & parameters
• Smoothing Length (default 14): Base window for smoothing SSOPR. Higher values = smoother, slower response.
• Apply Log Transform (default ON): Uses log(SOPR) so the baseline is 0 (log(1)=0). Above 0 → net profit regime; below 0 → net loss regime.
• Adaptive Smoothing (default OFF): Expands smoothing length as volatility rises using a standard deviation proxy; reduces whipsaws while preserving structure.
• Z‑score Threshold for Lows (default −2.5): Highlights capitulation zones when SSOPR deviates far below its rolling mean.
• SSOPR Buy Threshold (default −0.02): Simple rule-of-thumb level for potential accumulation context when below (log scale).
• SSOPR Top Threshold (default +0.005): Minimum elevation required for “profit territory” when assessing tops (log scale).
• Min Bars Above Threshold Before Top (default 50): Ensures prolonged elevation before calling a top.
• Lookback for Peak Detection (default 50): Window used to locate the recent high.
• Drop % from Peak to Confirm Top (default 5%): Confirms the start of distribution from a local high.
• Highlight Background : Toggles shaded zones.
Top detection (indicator-only)
A top fires when ALL of the following are true:
SSOPR spent at least Min Bars Above Threshold above the Top Threshold (sustained elevation).
The rising phase test passes (Option A or B; see below).
A drop from the local peak exceeds Drop % within the Lookback window.
The peak occurred in profit territory (SSOPR > Top Threshold).
To avoid repeated signals during the decline, the script emits the triangle once, at onset.
Rising‑phase switch: Option A vs Option B
• Option A — Up‑step ratio : Over the last A: Bars for Rising Check (default 50), it requires that at least A: Required Up‑Step Ratio (default 60%) of bars were rising (each bar compared to the previous). This favors gradual, persistent advances and filters out “choppy” lifts.
• Option B — Net slope : Compares current SSOPR to its value B: Bars Back for Net Slope ago (default 50). If higher, the series is considered rising. This is simpler and reacts faster in volatile phases but can admit brief pseudo‑trends.
Guidance : Prefer A for conservative confirmation in slow, persistent cycles; use B when trend moves are strong and you need timely detection.
Interpretation guide
• Regimes (log view): Above 0 → spending at profit; below 0 → spending at loss.
• Capitulation lows: When Z‑score < threshold, conditions often reflect forced/liquidity‑driven spending. Treat as context, not signals.
• Buy zone: SSOPR < Buy Threshold flags potential accumulation conditions (combine with price structure).
• Tops: After prolonged elevation, a confirmed top often coincides with profit‑taking/distribution phases.
Recommended timeframes
• Daily : Code optimized for daily timeframe.
Method summary
• SSOPR source: GLASSNODE:BTC_SOPR (via request.security ).
• Optional log transform: sopr → log(sopr) to normalize around 0.
• Smoothing: SMA over Smoothing Length , optionally adaptive using local volatility (std dev).
• Z‑score: (SSOPR − mean) / std dev, highlighting extreme lows.
• Top: Requires long elevation above Top Threshold , rising‑phase (A/B), and a subsequent drop > Drop % from recent high.
Limitations & notes
• SOPR reflects on‑chain movements; some activity occurs off‑chain (exchanges, internal transfers). Not all moves imply sale; aggregation makes it a usable proxy for profit/loss realization.
• Higher smoothing reduces noise but delays signals; adaptive smoothing can help but is still a trade‑off.
• Treat thresholds as context markers. They are not entry/exit signals by themselves.
• Use with price structure, volume, and other on‑chain indicators (e.g., realized price bands, dormancy/CDD) for confluence.
How to use (examples)
• Advance holding above 0 (log view): Retests of 0 from above that hold—while SSOPR remains elevated—often mark absorption; look for Top conditions only after sustained elevation and a confirmed drop from peak.
• Downtrend below 0: Rejections near 0 can align with continued loss realization; extreme Z‑score lows suggest capitulation risk—context for accumulation, not a blind buy.
Recommended settings
• Weekly: Log ON, Smoothing Length 14–30, Adaptive ON, Buy Threshold −0.02, Top Threshold +0.005, Rising Method A, Min Bars 50.
• Daily: Log ON, Smoothing Length 14–20, Adaptive OFF or ON (depending on noise), Rising Method B for timely slope checks.
Credits & references
• SOPR metric: Renato Shirakashi; documentation: Glassnode , CryptoQuant , overview: Bitbo .
Disclaimer
This script is for research/education on market behavior. It is not financial advice. Indicators provide context; decisions remain your responsibility.
Tags
bitcoin, btc, on‑chain, sopr, ssopr, glassnode, oscillator, regime, distribution, capitulation






















