Risk Indicator# Risk Indicator
A dynamic risk analysis tool that helps traders identify optimal entry and exit points using a normalized risk scale from 0 to 1. The indicator combines price action, moving averages, and logarithmic scaling to provide clear visual signals for different risk zones.
### Key Features
• Displays risk levels on a scale of 0-1 with intuitive color gradients (blue → cyan → green → yellow → orange → red)
• Shows predicted price levels for different risk values
• Divides the chart into 5 DCA (Dollar Cost Average) zones
• Includes customizable alerts for rapid risk changes and zone transitions
• Automatically adjusts to market conditions using dynamic ATH/ATL calculations
### Customizable Parameters
• SMA Period: Adjust the smoothing period for the baseline moving average
• Power Factor: Fine-tune the sensitivity of risk calculations
• Initial ATL Value: Set the starting point for ATL calculations
• Label Offset: Adjust the position of price level labels
• Visual Options: Toggle price levels and zone labels
• Alert Settings: Customize alert thresholds and enable/disable notifications
### Risk Zones Explained
The indicator divides the chart into five distinct zones:
- 0.0-0.2: DCA 5x (Deep Blue) - Strongest buy zone
- 0.2-0.4: DCA 4x (Cyan) - Strong buy zone
- 0.4-0.6: DCA 3x (Green) - Neutral zone
- 0.6-0.8: DCA 2x (Yellow/Orange) - Take profit zone
- 0.8-1.0: DCA 1x (Red) - Strong take profit / potential sell zone
### Alerts
Built-in alerts for:
• Rapid increases in risk level
• Rapid decreases in risk level
• Entry into buy zones
• Entry into sell zones
### How to Use
1. Add the indicator to your chart
2. Adjust the SMA period and power factor to match your trading timeframe
3. Monitor the risk level and corresponding price predictions
4. Use the DCA zones to guide your position sizing
5. Set up alerts for your preferred risk thresholds
### Tips
- Lower risk values (blue/cyan) suggest potentially good entry points
- Higher risk values (orange/red) suggest taking profits or reducing position size
- Use in conjunction with other technical analysis tools for best results
- Adjust the power factor to fine-tune sensitivity to price movements
### Notes
- Past performance is not indicative of future results
- This indicator is meant to be used as part of a complete trading strategy
- Always manage your risk and position size according to your trading plan
Version 1.0
在脚本中搜索"zone"
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
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.
DB Change Forecast ProDB Change Forecast Pro
What does the indicator do?
The DB Change Forecast Pro is a unique indicator that uses price change on HLC3 to detect buy and sell periods along with plotting a linear regression price channel with oversold and undersold zones. It also has a linear regression change forecast mode to optionally project market direction.
Change is calculated by taking a two-bar change of HLC3 and dividing that by the price or, optionally, a fixed divisor.
A fast-moving change cloud is then calculated and displayed as the "regular version" plot (shown in light gray). When the cloud bottom is above low, a buy zone is detected. When the cloud top is below the high, a sell zone is detected.
The linear regression price channel is calculated similarly but using a much slower change rate. The linear regression price channel shows reasonable high, low and HLC3 ranges. At the bar's opening, the channel will be more compact and come fairly accurate about 1/4 into the bar timeframe.
The change forecasted price is projected on the right side of the current bar to indicate the current timeframe direction. Please note this forecasting feature is shown in orange when it's early in the timeframe and gray when the timeframe is more likely to produce an accurate direction forecast for the upcoming bar.
You can use these projected dashed lines to see possible market movements for the Current bar and possible market direction for the next bar. Kindly note these projects change; they should be used to understand possible extreme highs/lows for the current bar or market direction.
The indicator includes an optional change forecast projection feature hidden by default. It will project the market forecast channel with an offset of 1. The forecast is defaulted to an offset of 1 to show market direction. However, you can modify to zero the offset to show the current bar forecast and forecast history.
How should this indicator be used?
First, very important,
1. Settings > Set Symbol to Desired
2. Settings > Set High Timeframe to "Chart"
3. Settings > Ensure "Use price as divisor" is checked.
It's recommended to use this indicator in higher timeframes. Buy and sell signals are displayed in real-time. However, waiting until 1/4 to 1/2 into the current bar is recommended before taking action, and change can happen.
The buy/sell signals (zones) provide recommendations on playing a long vs. a short. When in a buy sone, only play longs. When in a sell zone, only play shorts.
Then use the linear regression price channel oversold and undersold zones to optionally open and close positions within the buy/sell zones.
For example, consider opening a long in a buy zone when the linear regression price channel shows undersold. Then consider closing the long when the price moves into the linear regression oversold or higher. Then repeat as long as it's in the buy zone. Then vice versa for sell zones and shorting.
At basic design, buy in the buy zone, sell or short in the sell zone. If you are up for higher trading frequencies, use the linear regression price channel as described in the example above.
Please note, as, with all indicators, you may need to adjust to fit the indicator to your symbol and desired timeframe.
This is only an example of use. Please use this indicator as your own risk and after doing your due diligence.
Does the indicator include any alerts?
Yes,
"DB CFHLC3: Signal BUY" - Is triggered when a buy signal is fired.
"DB CFHLC3: Signal SELL" - Is triggered when a sell signal is fired.
"DB CFHLC3: Zone BUY" - Is triggered when a buy zone is detected.
"DB CFHLC3: Zeon SELL" - Is triggered when a sell zone is detected.
"DB CFHLC3: Oversold SELL" - Is triggered when the price exceeds the oversold level.
"DB CFHLC3: Undersold BUY" - Is triggered when the price goes below the undersold level.
Any other tips?
Once you have configured the indicator for your symbol and chart timeframe. Meaning the plots are displayed over the price. Check out larger timeframes such as W, 2W, 3W, 4W, M, and 4M. It works wonderfully for showing market lows and highs for long-term investing too!
Another, tip is to combine it with your favorite indicator, such as TTM Squeeze or MACD for confirmation purposes. You may be surprised how fast the indicator shows market direction changes on higher timeframes.
You can just as easily use a high timeframe such as D, 2D, or 3D for day trading due to how the linear price channel works.
Why am I not selling this indicator?
I would like to bless the TradingView community, and I enjoy publishing custom indicators.
If you enjoy this indicator, please consider leaving a thumbs up or a comment for others to know about your experience or recommendations.
Enjoy!
Daily maximum price range for Credit SpreadsVolatility & Momentum for Credit Spreads
It is a specialized mean-reversion tool designed primarily for options traders focusing on Credit Spreads (specifically 0DTE on SPX) and intraday reversals. By combining Volume Weighted Average Price (VWAP) with VIX-adjusted volatility bands, this indicator identifies statistical extremes where price is likely to revert.
Unlike standard Bollinger Bands or Keltner Channels, TITAN adapts its width based on real-time implied volatility (VIX), ensuring that your "overextended" zones are accurate whether the market is calm or chaotic.
🎯 Core Concept
The indicator relies on the principle that price moves within a definable "Daily Range" relative to the VWAP. When price pushes to the outer limits of this range while simultaneously hitting RSI extremes; it signals a high-probability reversal setup ideal for selling premium.
🛠 How It Works
The engine is built on three pillars:
Volatility-Adaptive Bands: The bands are calculated using a 14-day Average Daily Range (ADR), which is then dynamically scaled by the current VIX relative to a baseline. If VIX spikes, the bands widen instantly to keep you safe from premature entries.
Momentum Triggers: Signals are generated only when the RSI (14) hits extreme Overbought (>70) or Oversold (<30) levels.
"Golden Hour" Filtering: To avoid market open noise or late-day chop, the indicator includes a customizable time filter (Default: 10:15 – 11:30 AM EST). Signals outside this window are suppressed to enforce trading discipline.
🚀 Key Features
Visual Strategy Simulation: The indicator now includes a built-in "Strike Simulator." Upon the first valid signal of the session, it automatically plots a horizontal "Strike Line" at the Outer Band ± a user-defined buffer (e.g., 10 points). This helps you visualize your theoretical strike price for the rest of the day.
Bull & Bear Zones: Color-coded fills (Green for Bullish Buy Zones, Red for Bearish Sell Zones) make it easy to see market context at a glance.
Live Dashboard: A Heads-Up Display (HUD) in the bottom right shows real-time RSI values, Golden Hour status, and current signal state.
Unified Alert System: A single master alert condition triggers if price hits an RSI extreme OR touches a volatility band during your active trading window.
📉 How to Trade It (Example Strategy)
Wait for the Window: Ensure the "Golden Hour" on the dashboard reads ACTIVE (Default 10:15 AM EST).
Identify the Zone: Short Setup (Call Credit Spread): Price pushes into the Red Zone (Outer High). Long Setup (Put Credit Spread): Price pushes into the Green Zone (Outer Low).
Confirm the Signal: Look for the Diamond Icon. This confirms RSI has hit the extreme threshold.
Check the "Strike Line": Use the simulated horizontal line to identify where your short strike would be (Outer Band + Buffer) to verify it is at a safe distance from current price.
⚙️ Settings
ADR Length: Lookback period for daily range calculation (Default: 10).
Baseline VIX:* The standard VIX level used for normalization (Default: 15.0).
Inner/Outer Multipliers: Controls the width of the bands.
Golden Hour: The specific time window for valid signals.
Strike Buffer: Points added to the outer band to simulate your option strike price.
⚠️ Disclaimer
This tool is for informational purposes only. Trading options, especially 0DTE credit spreads, involves significant risk. Always backtest strategies and manage risk accordingly.
Piv X# Piv X Pro - Multi-Layer Reversal Detection System
## Overview
Piv X Pro is an advanced technical analysis indicator that combines dynamic pivot detection, Williams %R momentum divergence analysis, and multiple VWAP anchoring methods to identify high-probability mean reversion opportunities. Unlike simple indicator combinations, this script implements a layered filtration system where each component validates and refines signals from the previous layer, resulting in significantly fewer but higher-quality reversal setups.
## Core Methodology
### 1. Dynamic ATR-Based Pivot Detection
The script uses an adaptive pivot detection algorithm that adjusts sensitivity based on market volatility. Instead of fixed lookback periods, pivot strength is calculated dynamically using Average True Range (ATR):
**Calculation:** `pivot_strength = max(min_strength, min(ATR / mintick * multiplier, max_strength))`
This ensures:
- More sensitive pivots in low volatility (smaller ATR)
- More significant pivots in high volatility (larger ATR)
- Automatic adaptation across different market conditions and timeframes
**Significance Filtering:** Pivots must exceed a minimum ATR distance from recent price action (default 0.3 ATR) to filter noise. This prevents minor price fluctuations from being marked as significant pivots.
**Volume Confirmation (Optional):** Pivots can optionally require volume spikes (default 1.5x average volume) to ensure institutional participation.
### 2. Williams %R Momentum Divergence Engine
The script detects classic and hidden divergences between price pivots and Williams %R oscillator readings:
**Bullish Divergence Detection:**
- Price makes a lower low (confirmed pivot low)
- Williams %R makes a higher low (momentum improving)
- Divergence occurs in oversold zone (Williams %R ≤ -80)
- Lookback range: 60 bars maximum
**Bearish Divergence Detection:**
- Price makes a higher high (confirmed pivot high)
- Williams %R makes a lower high (momentum weakening)
- Divergence occurs in overbought zone (Williams %R ≥ -20)
- Lookback range: 60 bars maximum
**Divergence-Anchored VWAPs:** When a divergence is detected, a new VWAP calculation begins from that point, tracking institutional positioning relative to the momentum shift. This provides a dynamic mean reversion target that resets at each confirmed divergence.
### 3. Confluence Scoring System
Each detected pivot receives a numerical score (0-150+ points) based on multiple independent confirmation factors:
**Scoring Components:**
- Base Pivot Detection: 10 points
- Volume Spike Confirmation: 15 points
- Higher Timeframe Trend Alignment (4H EMA): 20 points
- RSI Extreme Levels (oversold/overbought): 25 points
- Mean Reversion Distance (>2.5 ATR from HTF MA): 20 points
- Exhaustion Patterns (price move + volume spike): 10 points
- ATR Price Confirmation: 10 points
- RSI Divergence: 15 points
- Swing Failure Pattern (SFP): 15 points
- Liquidity Sweep: 10 points
- Candle Reversal Confirmation: 10 points
- Key Level Alignment (previous day/week highs/lows): 10 points
- Fair Value Gap (FVG) Fill: 10 points
- Session Weighting (London/NY sessions): 10 points
- Multi-Timeframe Pivot Confluence: 15 points
**Zone Classification:**
- Regular Zones: Score 60-89 (green/purple boxes)
- Golden Zones: Score 90+ (yellow boxes with thicker borders)
Higher scores indicate stronger confluence and higher probability setups, but no prediction is guaranteed.
### 4. Mean Reversion Distance Filter
The script calculates how far price has stretched from the higher timeframe moving average:
**Calculation:** `distance_from_htf_ma = (close - HTF_EMA) / ATR`
**Mean Reversion Condition:**
- For long setups: Price >2.5 ATR below HTF EMA when HTF trend is up
- For short setups: Price >2.5 ATR above HTF EMA when HTF trend is down
This ensures pivots are only highlighted when price is statistically stretched and likely to revert toward the mean.
### 5. Multi-Period VWAP Framework
The script provides multiple VWAP calculations for different analysis purposes:
**Extreme VWAPs:**
- Bottom VWAP: Anchored to the absolute lowest low in the lookback period (default 50 bars)
- Top VWAP: Anchored to the absolute highest high in the lookback period
**Periodic VWAPs:**
- 4D VWAP: Resets every 4 days
- 9D VWAP: Resets every 9 days
- 4H VWAP: Resets every 4 hours
- 8H VWAP: Resets every 8 hours
- Weekly VWAP: Resets at the start of each week
- Monthly VWAP: Resets at the start of each month
- Yearly VWAP: Resets at the start of each year
**Previous Period VWAPs:**
- Previous Weekly, Monthly, and Yearly VWAPs are displayed as reference levels for support/resistance
**Divergence VWAPs:**
- Bullish Divergence VWAP: Resets at each bullish Williams %R divergence
- Bearish Divergence VWAP: Resets at each bearish Williams %R divergence
### 6. IBSS Pro Mean Reversion System
An integrated scalping system that provides entry signals within high-probability pivot zones:
**Components:**
- Dual EMA System: Fast EMA (12) and Slow EMA (26) with color-coded trend visualization
- RSI Oversold/Overbought Detection: Configurable levels (default 30/70)
- Zone-Based Entry: Signals only trigger when price is within active pivot zones (0.3 ATR around confirmed pivots)
- ATR-Based Dynamic Stops: Stop losses trail with position using ATR multiplier
**Signal Generation:**
- Buy signals: RSI crosses above oversold + Fast EMA > Slow EMA + Price in pivot low zone
- Sell signals: RSI crosses below overbought + Fast EMA < Slow EMA + Price in pivot high zone
## Why This Combination is Unique
This is not a simple indicator mashup. The components work together in a specific hierarchy:
1. **Williams %R Divergence** identifies momentum shifts before price confirms the reversal
2. **Dynamic Pivots** mark actual price structure extremes with ATR-based significance filtering
3. **Confluence Scoring** quantifies setup quality using 10+ independent confirmation factors
4. **Mean Reversion Distance** confirms price is statistically stretched (>2.5 ATR from HTF MA)
5. **VWAP Framework** tracks institutional positioning and provides objective mean levels
6. **IBSS Signals** provide precise entries within high-probability zones
Each layer filters the previous one, resulting in significantly fewer but higher-quality signals than any single indicator alone. The divergence-anchored VWAPs are unique - they reset at momentum shifts rather than arbitrary time periods, providing more relevant mean reversion targets.
## How to Use This Indicator
### For Swing Trading (15m-1H Charts)
1. Wait for a major pivot to form (diamond marker appears below/above bars)
2. Check the confluence score displayed in the zone label
3. Look for Golden Zones (score 90+, yellow boxes with thicker borders)
4. Enter when price enters the pivot zone (0.3 ATR around the pivot)
5. Use the nearest VWAP level as first target
6. Set stop loss beyond the pivot zone (typically 0.5-1 ATR)
### For Scalping (5m-15m Charts)
1. Enable IBSS Pro Signals in settings
2. Wait for price to enter an active pivot zone (colored boxes appear)
3. Take IBSS diamond signals that form within zones
4. Use ATR-based stop losses (dashed lines appear automatically if enabled)
5. Exit at pivot VWAP or opposite zone edge
### Visual Elements Explained
- **White/Purple Crosses**: Williams Divergence VWAPs (momentum-based mean reversion targets)
- **Green/Red Crosses**: Bottom/Top VWAPs (absolute extreme levels)
- **Colored Boxes**: Pivot reversal zones (opacity indicates confluence score)
- **Yellow Boxes**: Golden zones (90+ score, highest probability setups)
- **Small Diamonds**: Regular pivot detections
- **Green/Red Tiny Diamonds**: IBSS scalp entry signals (if enabled)
- **White/Purple MAs**: IBSS trend filter (12/26 EMA with cloud)
- **Dotted Lines**: Structure lines connecting consecutive pivots of same type
- **Blue Dashed Lines**: Market Structure Shift (CHoCH) markers
### Recommended Settings
**Conservative (Lower Timeframes 1m-5m):**
- ATR Pivot Strength: 0.8-1.0
- Volume Threshold: 2.0
- Min Pivot Significance: 0.4-0.5
- Enable ATR Confirmation: Yes
- Real-Time Mode: Off
- Score Threshold: 80+
**Aggressive (Higher Timeframes 15m-1H):**
- ATR Pivot Strength: 0.6-0.8
- Volume Threshold: 1.5
- Min Pivot Significance: 0.3
- Enable ATR Confirmation: No
- Real-Time Mode: On
- Score Threshold: 60+
## Chart Requirements
This indicator should be used **alone on a clean chart** with:
- Standard candlestick or bar chart type (NO Heikin Ashi, Renko, Point & Figure, or Range charts)
- No other indicators overlaid (all functionality is self-contained)
- Symbol and timeframe clearly visible in chart
- Full indicator name "Piv X Pro" visible in chart legend
## Important Disclaimers
- Past performance does not guarantee future results
- All signals are probabilistic indicators, not trading guarantees
- Use proper risk management and position sizing
- Test thoroughly on demo accounts before live trading
- Higher confluence scores indicate better setups but no prediction is certain
- Mean reversion strategies work best in ranging/choppy markets; may underperform in strong trending markets
- The lookahead bias warning: HTF EMA uses `barmerge.lookahead_on` for trend filtering only (not for signal generation), which may cause historical bars to show different trend states than real-time
## Key Differentiators
Unlike basic pivot or VWAP indicators:
- **Dynamic ATR-based pivot detection** vs static lookback periods
- **Quantified confluence scoring** vs subjective interpretation
- **Mean reversion distance filtering** (>2.5 ATR from HTF MA) vs all pivots shown
- **Divergence-anchored VWAPs** vs static period VWAPs
- **Multi-layer confirmation system** (10+ independent factors) vs single signal generation
- **Integrated scalping system** that only triggers in high-probability zones
This script is open-source and available for educational purposes. Users are encouraged to understand the methodology before using it for live trading decisions.
BUZARA// © Buzzara
// =================================
// PLEASE SUPPORT THE TEAM
// =================================
//
// Telegram: t.me
// =================================
//@version=5
VERSION = ' Buzzara2.0'
strategy('ALGOX V6_1_24', shorttitle = '🚀〄 Buzzara2.0 〄🚀'+ VERSION, overlay = true, explicit_plot_zorder = true, pyramiding = 0, default_qty_type = strategy.percent_of_equity, initial_capital = 1000, default_qty_value = 1, calc_on_every_tick = false, process_orders_on_close = true)
G_SCRIPT01 = '■ ' + 'SAIYAN OCC'
//#region ———— <↓↓↓ G_SCRIPT01 ↓↓↓> {
// === INPUTS ===
res = input.timeframe('15', 'TIMEFRAME', group ="NON REPAINT")
useRes = input(true, 'Use Alternate Signals')
intRes = input(10, 'Multiplier for Alernate Signals')
basisType = input.string('ALMA', 'MA Type: ', options= )
basisLen = input.int(50, 'MA Period', minval=1)
offsetSigma = input.int(5, 'Offset for LSMA / Sigma for ALMA', minval=0)
offsetALMA = input.float(2, 'Offset for ALMA', minval=0, step=0.01)
scolor = input(false, 'Show coloured Bars to indicate Trend?')
delayOffset = input.int(0, 'Delay Open/Close MA', minval=0, step=1,
tooltip = 'Forces Non-Repainting')
tradeType = input.string('BOTH', 'What trades should be taken : ',
options = )
//=== /INPUTS ===
h = input(false, 'Signals for Heikin Ashi Candles')
//INDICATOR SETTINGS
swing_length = input.int(10, 'Swing High/Low Length', group = 'Settings', minval = 1, maxval = 50)
history_of_demand_to_keep = input.int(20, 'History To Keep', minval = 5, maxval = 50)
box_width = input.float(2.5, 'Supply/Demand Box Width', group = 'Settings', minval = 1, maxval = 10, step = 0.5)
//INDICATOR VISUAL SETTINGS
show_zigzag = input.bool(false, 'Show Zig Zag', group = 'Visual Settings', inline = '1')
show_price_action_labels = input.bool(false, 'Show Price Action Labels', group = 'Visual Settings', inline = '2')
supply_color = input.color(#00000000, 'Supply', group = 'Visual Settings', inline = '3')
supply_outline_color = input.color(#00000000, 'Outline', group = 'Visual Settings', inline = '3')
demand_color = input.color(#00000000, 'Demand', group = 'Visual Settings', inline = '4')
demand_outline_color = input.color(#00000000, 'Outline', group = 'Visual Settings', inline = '4')
bos_label_color = input.color(#00000000, 'BOS Label', group = 'Visual Settings', inline = '5')
poi_label_color = input.color(#00000000, 'POI Label', group = 'Visual Settings', inline = '7')
poi_border_color = input.color(#00000000, 'POI border', group = 'Visual Settings', inline = '7')
swing_type_color = input.color(#00000000, 'Price Action Label', group = 'Visual Settings', inline = '8')
zigzag_color = input.color(#00000000, 'Zig Zag', group = 'Visual Settings', inline = '9')
//END SETTINGS
// 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 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 = swing_type_color,
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 = swing_type_color,
size = size.tiny)
// FUNCTION MAKE SURE SUPPLY ISNT OVERLAPPING
f_check_overlapping(new_poi, box_array, atrValue) =>
atr_threshold = atrValue * 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, atrValue) =>
atr_buffer = atrValue * (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, atrValue)
// okay_to_draw = true
//delete oldest box, and then create a new box and add it to the array
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 = poi_border_color,
bgcolor = poi_border_color, 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 = poi_border_color,
bgcolor = poi_border_color, 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 A 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 ta.crossover(close, level_to_break)
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 ta.crossunder(close, level_to_break)
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 MANAGE CURRENT BOXES BY CHANGING 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)
//
stratRes = timeframe.ismonthly ? str.tostring(timeframe.multiplier * intRes, '###M') :
timeframe.isweekly ? str.tostring(timeframe.multiplier * intRes, '###W') :
timeframe.isdaily ? str.tostring(timeframe.multiplier * intRes, '###D') :
timeframe.isintraday ? str.tostring(timeframe.multiplier * intRes, '####') :
'60'
src = h ? request.security(ticker.heikinashi(syminfo.tickerid),
timeframe.period, close, lookahead = barmerge.lookahead_off) : close
// CALCULATE ATR
atrValue = ta.atr(50)
// CALCULATE SWING HIGHS & SWING LOWS
swing_high = ta.pivothigh(high, swing_length, swing_length)
swing_low = ta.pivotlow(low, swing_length, swing_length)
// ARRAYS FOR SWING H/L & BN
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)
// ARRAYS FOR SUPPLY / DEMAND
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)
// ARRAYS FOR SUPPLY / DEMAND POI LABELS
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)
// ARRAYS FOR BOS
var supply_bos = array.new_box(5, na)
var demand_bos = array.new_box(5, na)
//END CALCULATIONS
// NEW SWING HIGH
if not na(swing_high)
//MANAGE SWING HIGH VALUES
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, atrValue)
// NEW SWING LOW
else if not na(swing_low)
//MANAGE SWING LOW VALUES
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, atrValue)
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)
channelBal = input.bool(false, "Channel Balance", group = "CHART")
lr_slope(_src, _len) =>
x = 0.0, y = 0.0, x2 = 0.0, xy = 0.0
for i = 0 to _len - 1
val = _src
per = i + 1
x += per
y += val
x2 += per * per
xy += val * per
_slp = (_len * xy - x * y) / (_len * x2 - x * x)
_avg = y / _len
_int = _avg - _slp * x / _len + _slp
lr_dev(_src, _len, _slp, _avg, _int) =>
upDev = 0.0, dnDev = 0.0
val = _int
for j = 0 to _len - 1
price = high - val
if price > upDev
upDev := price
price := val - low
if price > dnDev
dnDev := price
price := _src
val += _slp
//
= ta.kc(close, 80, 10.5)
= ta.kc(close, 80, 9.5)
= ta.kc(close, 80, 8)
= ta.kc(close, 80, 3)
barsL = 10
barsR = 10
pivotHigh = fixnan(ta.pivothigh(barsL, barsR) )
pivotLow = fixnan(ta.pivotlow(barsL, barsR) )
source = close, period = 150
= lr_slope(source, period)
= lr_dev(source, period, s, a, i)
y1 = low - (ta.atr(30) * 2), y1B = low - ta.atr(30)
y2 = high + (ta.atr(30) * 2), y2B = high + ta.atr(30)
x1 = bar_index - period + 1, _y1 = i + s * (period - 1), x2 = bar_index, _y2 = i
//Functions
//Line Style function
get_line_style(style) =>
out = switch style
'???' => line.style_solid
'----' => line.style_dashed
' ' => line.style_dotted
//Function to get order block coordinates
get_coordinates(condition, top, btm, ob_val)=>
var ob_top = array.new_float(0)
var ob_btm = array.new_float(0)
var ob_avg = array.new_float(0)
var ob_left = array.new_int(0)
float ob = na
//Append coordinates to arrays
if condition
avg = math.avg(top, btm)
array.unshift(ob_top, top)
array.unshift(ob_btm, btm)
array.unshift(ob_avg, avg)
ob := ob_val
//Function to remove mitigated order blocks from coordinate arrays
remove_mitigated(ob_top, ob_btm, ob_left, ob_avg, target, bull)=>
mitigated = false
target_array = bull ? ob_btm : ob_top
for element in target_array
idx = array.indexof(target_array, element)
if (bull ? target < element : target > element)
mitigated := true
array.remove(ob_top, idx)
array.remove(ob_btm, idx)
array.remove(ob_avg, idx)
array.remove(ob_left, idx)
mitigated
//Function to set order blocks
set_order_blocks(ob_top, ob_btm, ob_left, ob_avg, ext_last, bg_css, border_css, lvl_css)=>
var ob_box = array.new_box(0)
var ob_lvl = array.new_line(0)
//Global elements
var os = 0
var target_bull = 0.
var target_bear = 0.
// Create non-repainting security function
rp_security(_symbol, _res, _src) =>
request.security(_symbol, _res, _src )
htfHigh = rp_security(syminfo.tickerid, res, high)
htfLow = rp_security(syminfo.tickerid, res, low)
// Main Indicator
// Functions
smoothrng(x, t, m) =>
wper = t * 2 - 1
avrng = ta.ema(math.abs(x - x ), t)
smoothrng = ta.ema(avrng, wper) * m
rngfilt(x, r) =>
rngfilt = x
rngfilt := x > nz(rngfilt ) ? x - r < nz(rngfilt ) ? nz(rngfilt ) : x - r : x + r > nz(rngfilt ) ? nz(rngfilt ) : x + r
percWidth(len, perc) => (ta.highest(len) - ta.lowest(len)) * perc / 100
securityNoRep(sym, res, src) => request.security(sym, res, src, barmerge.gaps_off, barmerge.lookahead_on)
swingPoints(prd) =>
pivHi = ta.pivothigh(prd, prd)
pivLo = ta.pivotlow (prd, prd)
last_pivHi = ta.valuewhen(pivHi, pivHi, 1)
last_pivLo = ta.valuewhen(pivLo, pivLo, 1)
hh = pivHi and pivHi > last_pivHi ? pivHi : na
lh = pivHi and pivHi < last_pivHi ? pivHi : na
hl = pivLo and pivLo > last_pivLo ? pivLo : na
ll = pivLo and pivLo < last_pivLo ? pivLo : na
f_chartTfInMinutes() =>
float _resInMinutes = timeframe.multiplier * (
timeframe.isseconds ? 1 :
timeframe.isminutes ? 1. :
timeframe.isdaily ? 60. * 24 :
timeframe.isweekly ? 60. * 24 * 7 :
timeframe.ismonthly ? 60. * 24 * 30.4375 : na)
f_kc(src, len, sensitivity) =>
basis = ta.sma(src, len)
span = ta.atr(len)
wavetrend(src, chlLen, avgLen) =>
esa = ta.ema(src, chlLen)
d = ta.ema(math.abs(src - esa), chlLen)
ci = (src - esa) / (0.015 * d)
wt1 = ta.ema(ci, avgLen)
wt2 = ta.sma(wt1, 3)
f_top_fractal(_src) => _src < _src and _src < _src and _src > _src and _src > _src
f_bot_fractal(_src) => _src > _src and _src > _src and _src < _src and _src < _src
top_fractal = f_top_fractal(src)
bot_fractal = f_bot_fractal(src)
f_fractalize (_src) => top_fractal ? 1 : bot_fractal ? -1 : 0
f_findDivs(src, topLimit, botLimit) =>
fractalTop = f_fractalize(src) > 0 and src >= topLimit ? src : na
fractalBot = f_fractalize(src) < 0 and src <= botLimit ? src : na
highPrev = ta.valuewhen(fractalTop, src , 0)
highPrice = ta.valuewhen(fractalTop, high , 0)
lowPrev = ta.valuewhen(fractalBot, src , 0)
lowPrice = ta.valuewhen(fractalBot, low , 0)
bearSignal = fractalTop and high > highPrice and src < highPrev
bullSignal = fractalBot and low < lowPrice and src > lowPrev
// Get user input
enableSR = input(false , "SR On/Off", group="SR")
colorSup = input(#00000000 , "Support Color", group="SR")
colorRes = input(#00000000 , "Resistance Color", group="SR")
strengthSR = input.int(2 , "S/R Strength", 1, group="SR")
lineStyle = input.string("Dotted", "Line Style", , group="SR")
lineWidth = input.int(2 , "S/R Line Width", 1, group="SR")
useZones = input(true , "Zones On/Off", group="SR")
useHLZones = input(true , "High Low Zones On/Off", group="SR")
zoneWidth = input.int(2 , "Zone Width %", 0,
tooltip = "it's calculated using % of the distance between highest/lowest in last 300 bars", group="SR")
expandSR = input(true , "Expand SR")
// Get components
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 (not na(ph) or not na(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 = (not na(ph ) and (ph != 0) ? high : low ) + cwidth
dnl = (not na(ph ) and (ph != 0) ? 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 (not na(ph ) and countpp < 21)
array.set(sr_levels, countpp, high )
if (not na(pl ) and countpp < 21)
array.set(sr_levels, countpp, low )
// Plot
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, hi_col)
linefill.new(lowest_fill1 , lowest_fill2 , lo_col)
if (not na(ph) or not na(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 (not na(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), line_col))
for x = 0 to array.size(sr_labels) - 1
label.delete(array.get(sr_labels, x))
if (not na(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
// Get components
rsi = ta.rsi(close, 28)
//rsiOb = rsi > 78 and rsi > ta.ema(rsi, 10)
//rsiOs = rsi < 27 and rsi < ta.ema(rsi, 10)
rsiOb = rsi > 65 and rsi > ta.ema(rsi, 10)
rsiOs = rsi < 35 and rsi < ta.ema(rsi, 10)
dHigh = securityNoRep(syminfo.tickerid, "D", high )
dLow = securityNoRep(syminfo.tickerid, "D", low )
dClose = securityNoRep(syminfo.tickerid, "D", close )
ema = ta.ema(close, 144)
emaBull = close > ema
equal_tf(res) => str.tonumber(res) == f_chartTfInMinutes() and not timeframe.isseconds
higher_tf(res) => str.tonumber(res) > f_chartTfInMinutes() or timeframe.isseconds
too_small_tf(res) => (timeframe.isweekly and res=="1") or (timeframe.ismonthly and str.tonumber(res) < 10)
securityNoRep1(sym, res, src) =>
bool bull_ = na
bull_ := equal_tf(res) ? src : bull_
bull_ := higher_tf(res) ? request.security(sym, res, src, barmerge.gaps_off, barmerge.lookahead_on) : bull_
bull_array = request.security_lower_tf(syminfo.tickerid, higher_tf(res) ? str.tostring(f_chartTfInMinutes()) + (timeframe.isseconds ? "S" : "") : too_small_tf(res) ? (timeframe.isweekly ? "3" : "10") : res, src)
if array.size(bull_array) > 1 and not equal_tf(res) and not higher_tf(res)
bull_ := array.pop(bull_array)
array.clear(bull_array)
bull_
// === BASE FUNCTIONS ===
// Returns MA input selection variant, default to SMA if blank or typo.
variant(type, src, len, offSig, offALMA) =>
v1 = ta.sma(src, len) // Simple
v2 = ta.ema(src, len) // Exponential
v3 = 2 * v2 - ta.ema(v2, len) // Double Exponential
v4 = 3 * (v2 - ta.ema(v2, len)) + ta.ema(ta.ema(v2, len), len) // Triple Exponential
v5 = ta.wma(src, len) // Weighted
v6 = ta.vwma(src, len) // Volume Weighted
v7 = 0.0
sma_1 = ta.sma(src, len) // Smoothed
v7 := na(v7 ) ? sma_1 : (v7 * (len - 1) + src) / len
v8 = ta.wma(2 * ta.wma(src, len / 2) - ta.wma(src, len), math.round(math.sqrt(len))) // Hull
v9 = ta.linreg(src, len, offSig) // Least Squares
v10 = ta.alma(src, len, offALMA, offSig) // Arnaud Legoux
v11 = ta.sma(v1, len) // Triangular (extreme smooth)
// SuperSmoother filter
// 2013 John F. Ehlers
a1 = math.exp(-1.414 * 3.14159 / len)
b1 = 2 * a1 * math.cos(1.414 * 3.14159 / len)
c2 = b1
c3 = -a1 * a1
c1 = 1 - c2 - c3
v12 = 0.0
v12 := c1 * (src + nz(src )) / 2 + c2 * nz(v12 ) + c3 * nz(v12 )
type == 'EMA' ? v2 : type == 'DEMA' ? v3 : type == 'TEMA' ? v4 : type == 'WMA' ? v5 : type == 'VWMA' ? v6 : type == 'SMMA' ? v7 : type == 'HullMA' ? v8 : type == 'LSMA' ? v9 : type == 'ALMA' ? v10 : type == 'TMA' ? v11 : type == 'SSMA' ? v12 : v1
// security wrapper for repeat calls
reso(exp, use, res) =>
security_1 = request.security(syminfo.tickerid, res, exp, gaps = barmerge.gaps_off, lookahead = barmerge.lookahead_on)
use ? security_1 : exp
// === /BASE FUNCTIONS ===
// === SERIES SETUP ===
closeSeries = variant(basisType, close , basisLen, offsetSigma, offsetALMA)
openSeries = variant(basisType, open , basisLen, offsetSigma, offsetALMA)
// === /SERIES ===
// Get Alternate resolution Series if selected.
closeSeriesAlt = reso(closeSeries, useRes, stratRes)
openSeriesAlt = reso(openSeries, useRes, stratRes)
//
lxTrigger = false
sxTrigger = false
leTrigger = ta.crossover (closeSeriesAlt, openSeriesAlt)
seTrigger = ta.crossunder(closeSeriesAlt, openSeriesAlt)
G_RISK = '■ ' + 'Risk Management'
//#region ———— <↓↓↓ G_RISK ↓↓↓> {
// ———————————
//Tooltip
T_LVL = '(%) Exit Level'
T_QTY = '(%) Adjust trade exit volume'
T_MSG = 'Paste JSON message for your bot'
//Webhook Message
O_LEMSG = 'Long Entry'
O_LXMSGSL = 'Long SL'
O_LXMSGTP1 = 'Long TP1'
O_LXMSGTP2 = 'Long TP2'
O_LXMSGTP3 = 'Long TP3'
O_LXMSG = 'Long Exit'
O_SEMSG = 'Short Entry'
O_SXMSGSL = 'Short SL'
O_SXMSGA = 'Short TP1'
O_SXMSGB = 'Short TP2'
O_SXMSGC = 'Short TP3'
O_SXMSGX = 'Short Exit'
// ——————————— | | | Line length guide |
i_lxLvlTP1 = input.float (0.2, 'Level TP1' , group = G_RISK,
tooltip = T_LVL)
i_lxQtyTP1 = input.float (80.0, 'Qty TP1' , group = G_RISK,
tooltip = T_QTY)
i_lxLvlTP2 = input.float (0.5, 'Level TP2' , group = G_RISK,
tooltip = T_LVL)
i_lxQtyTP2 = input.float (10.0, 'Qty TP2' , group = G_RISK,
tooltip = T_QTY)
i_lxLvlTP3 = input.float (7.0, 'Level TP3' , group = G_RISK,
tooltip = T_LVL)
i_lxQtyTP3 = input.float (2, 'Qty TP3' , group = G_RISK,
tooltip = T_QTY)
i_lxLvlSL = input.float (0.5, 'Stop Loss' , group = G_RISK,
tooltip = T_LVL)
i_sxLvlTP1 = i_lxLvlTP1
i_sxQtyTP1 = i_lxQtyTP1
i_sxLvlTP2 = i_lxLvlTP2
i_sxQtyTP2 = i_lxQtyTP2
i_sxLvlTP3 = i_lxLvlTP3
i_sxQtyTP3 = i_lxQtyTP3
i_sxLvlSL = i_lxLvlSL
G_MSG = '■ ' + 'Webhook Message'
i_leMsg = input.string (O_LEMSG ,'Long Entry' , group = G_MSG, tooltip = T_MSG)
i_lxMsgSL = input.string (O_LXMSGSL ,'Long SL' , group = G_MSG, tooltip = T_MSG)
i_lxMsgTP1 = input.string (O_LXMSGTP1,'Long TP1' , group = G_MSG, tooltip = T_MSG)
i_lxMsgTP2 = input.string (O_LXMSGTP2,'Long TP2' , group = G_MSG, tooltip = T_MSG)
i_lxMsgTP3 = input.string (O_LXMSGTP3,'Long TP3' , group = G_MSG, tooltip = T_MSG)
i_lxMsg = input.string (O_LXMSG ,'Long Exit' , group = G_MSG, tooltip = T_MSG)
i_seMsg = input.string (O_SEMSG ,'Short Entry' , group = G_MSG, tooltip = T_MSG)
i_sxMsgSL = input.string (O_SXMSGSL ,'Short SL' , group = G_MSG, tooltip = T_MSG)
i_sxMsgTP1 = input.string (O_SXMSGA ,'Short TP1' , group = G_MSG, tooltip = T_MSG)
i_sxMsgTP2 = input.string (O_SXMSGB ,'Short TP2' , group = G_MSG, tooltip = T_MSG)
i_sxMsgTP3 = input.string (O_SXMSGC ,'Short TP3' , group = G_MSG, tooltip = T_MSG)
i_sxMsg = input.string (O_SXMSGX ,'Short Exit' , group = G_MSG, tooltip = T_MSG)
i_src = close
G_DISPLAY = 'Display'
//
i_alertOn = input.bool (true, 'Alert Labels On/Off' , group = G_DISPLAY)
i_barColOn = input.bool (true, 'Bar Color On/Off' , group = G_DISPLAY)
// ———————————
// @function Calculate the Take Profit line, and the crossover or crossunder
f_tp(_condition, _conditionValue, _leTrigger, _seTrigger, _src, _lxLvlTP, _sxLvlTP)=>
var float _tpLine = 0.0
_topLvl = _src + (_src * (_lxLvlTP / 100))
_botLvl = _src - (_src * (_sxLvlTP / 100))
_tpLine := _condition != _conditionValue and _leTrigger ? _topLvl :
_condition != -_conditionValue and _seTrigger ? _botLvl :
nz(_tpLine )
// @function Similar to "ta.crossover" or "ta.crossunder"
f_cross(_scr1, _scr2, _over)=>
_cross = _over ? _scr1 > _scr2 and _scr1 < _scr2 :
_scr1 < _scr2 and _scr1 > _scr2
// ———————————
//
var float condition = 0.0
var float slLine = 0.0
var float entryLine = 0.0
//
entryLine := leTrigger and condition <= 0.0 ? close :
seTrigger and condition >= 0.0 ? close : nz(entryLine )
//
slTopLvl = i_src + (i_src * (i_lxLvlSL / 100))
slBotLvl = i_src - (i_src * (i_sxLvlSL / 100))
slLine := condition <= 0.0 and leTrigger ? slBotLvl :
condition >= 0.0 and seTrigger ? slTopLvl : nz(slLine )
slLong = f_cross(low, slLine, false)
slShort = f_cross(high, slLine, true )
//
= f_tp(condition, 1.2,leTrigger, seTrigger, i_src, i_lxLvlTP3, i_sxLvlTP3)
= f_tp(condition, 1.1,leTrigger, seTrigger, i_src, i_lxLvlTP2, i_sxLvlTP2)
= f_tp(condition, 1.0,leTrigger, seTrigger, i_src, i_lxLvlTP1, i_sxLvlTP1)
tp3Long = f_cross(high, tp3Line, true )
tp3Short = f_cross(low, tp3Line, false)
tp2Long = f_cross(high, tp2Line, true )
tp2Short = f_cross(low, tp2Line, false)
tp1Long = f_cross(high, tp1Line, true )
tp1Short = f_cross(low, tp1Line, false)
switch
leTrigger and condition <= 0.0 => condition := 1.0
seTrigger and condition >= 0.0 => condition := -1.0
tp3Long and condition == 1.2 => condition := 1.3
tp3Short and condition == -1.2 => condition := -1.3
tp2Long and condition == 1.1 => condition := 1.2
tp2Short and condition == -1.1 => condition := -1.2
tp1Long and condition == 1.0 => condition := 1.1
tp1Short and condition == -1.0 => condition := -1.1
slLong and condition >= 1.0 => condition := 0.0
slShort and condition <= -1.0 => condition := 0.0
lxTrigger and condition >= 1.0 => condition := 0.0
sxTrigger and condition <= -1.0 => condition := 0.0
longE = leTrigger and condition <= 0.0 and condition == 1.0
shortE = seTrigger and condition >= 0.0 and condition == -1.0
longX = lxTrigger and condition >= 1.0 and condition == 0.0
shortX = sxTrigger and condition <= -1.0 and condition == 0.0
longSL = slLong and condition >= 1.0 and condition == 0.0
shortSL = slShort and condition <= -1.0 and condition == 0.0
longTP3 = tp3Long and condition == 1.2 and condition == 1.3
shortTP3 = tp3Short and condition == -1.2 and condition == -1.3
longTP2 = tp2Long and condition == 1.1 and condition == 1.2
shortTP2 = tp2Short and condition == -1.1 and condition == -1.2
longTP1 = tp1Long and condition == 1.0 and condition == 1.1
shortTP1 = tp1Short and condition == -1.0 and condition == -1.1
// ——————————— {
//
if strategy.position_size <= 0 and longE and barstate.isconfirmed
strategy.entry(
'Long',
strategy.long,
alert_message = i_leMsg,
comment = 'LE')
if strategy.position_size > 0 and condition == 1.0
strategy.exit(
id = 'LXTP1',
from_entry = 'Long',
qty_percent = i_lxQtyTP1,
limit = tp1Line,
stop = slLine,
comment_profit = 'LXTP1',
comment_loss = 'SL',
alert_profit = i_lxMsgTP1,
alert_loss = i_lxMsgSL)
if strategy.position_size > 0 and condition == 1.1
strategy.exit(
id = 'LXTP2',
from_entry = 'Long',
qty_percent = i_lxQtyTP2,
limit = tp2Line,
stop = slLine,
comment_profit = 'LXTP2',
comment_loss = 'SL',
alert_profit = i_lxMsgTP2,
alert_loss = i_lxMsgSL)
if strategy.position_size > 0 and condition == 1.2
strategy.exit(
id = 'LXTP3',
from_entry = 'Long',
qty_percent = i_lxQtyTP3,
limit = tp3Line,
stop = slLine,
comment_profit = 'LXTP3',
comment_loss = 'SL',
alert_profit = i_lxMsgTP3,
alert_loss = i_lxMsgSL)
if longX
strategy.close(
'Long',
alert_message = i_lxMsg,
comment = 'LX')
//
if strategy.position_size >= 0 and shortE and barstate.isconfirmed
strategy.entry(
'Short',
strategy.short,
alert_message = i_leMsg,
comment = 'SE')
if strategy.position_size < 0 and condition == -1.0
strategy.exit(
id = 'SXTP1',
from_entry = 'Short',
qty_percent = i_sxQtyTP1,
limit = tp1Line,
stop = slLine,
comment_profit = 'SXTP1',
comment_loss = 'SL',
alert_profit = i_sxMsgTP1,
alert_loss = i_sxMsgSL)
if strategy.position_size < 0 and condition == -1.1
strategy.exit(
id = 'SXTP2',
from_entry = 'Short',
qty_percent = i_sxQtyTP2,
limit = tp2Line,
stop = slLine,
comment_profit = 'SXTP2',
comment_loss = 'SL',
alert_profit = i_sxMsgTP2,
alert_loss = i_sxMsgSL)
if strategy.position_size < 0 and condition == -1.2
strategy.exit(
id = 'SXTP3',
from_entry = 'Short',
qty_percent = i_sxQtyTP3,
limit = tp3Line,
stop = slLine,
comment_profit = 'SXTP3',
comment_loss = 'SL',
alert_profit = i_sxMsgTP3,
alert_loss = i_sxMsgSL)
if shortX
strategy.close(
'Short',
alert_message = i_sxMsg,
comment = 'SX')
// ———————————
c_tp = leTrigger or seTrigger ? na :
condition == 0.0 ? na : color.green
c_entry = leTrigger or seTrigger ? na :
condition == 0.0 ? na : color.blue
c_sl = leTrigger or seTrigger ? na :
condition == 0.0 ? na : color.red
p_tp1Line = plot (
condition == 1.0 or
condition == -1.0 ? tp1Line : na,
title = "TP Line 1",
color = c_tp,
linewidth = 1,
style = plot.style_linebr)
p_tp2Line = plot (
condition == 1.0 or
condition == -1.0 or
condition == 1.1 or
condition == -1.1 ? tp2Line : na,
title = "TP Line 2",
color = c_tp,
linewidth = 1,
style = plot.style_linebr)
p_tp3Line = plot (
condition == 1.0 or
condition == -1.0 or
condition == 1.1 or
condition == -1.1 or
condition == 1.2 or
condition == -1.2 ? tp3Line : na,
title = "TP Line 3",
color = c_tp,
linewidth = 1,
style = plot.style_linebr)
p_entryLine = plot (
condition >= 1.0 or
condition <= -1.0 ? entryLine : na,
title = "Entry Line",
color = c_entry,
linewidth = 1,
style = plot.style_linebr)
p_slLine = plot (
condition == 1.0 or
condition == -1.0 or
condition == 1.1 or
condition == -1.1 or
condition == 1.2 or
condition == -1.2 ? slLine : na,
title = "SL Line",
color = c_sl,
linewidth = 1,
style = plot.style_linebr)
fill(
p_tp3Line, p_entryLine,
color = leTrigger or seTrigger ? na :color.new(color.green, 90))
fill(
p_entryLine, p_slLine,
color = leTrigger or seTrigger ? na :color.new(color.red, 90))
//
plotshape(
i_alertOn and longE,
title = 'Long',
text = 'Long',
textcolor = color.white,
color = color.green,
style = shape.labelup,
size = size.tiny,
location = location.belowbar)
plotshape(
i_alertOn and shortE,
title = 'Short',
text = 'Short',
textcolor = color.white,
color = color.red,
style = shape.labeldown,
size = size.tiny,
location = location.abovebar)
plotshape(
i_alertOn and (longX or shortX) ? close : na,
title = 'Close',
text = 'Close',
textcolor = color.white,
color = color.gray,
style = shape.labelup,
size = size.tiny,
location = location.absolute)
l_tp = i_alertOn and (longTP1 or shortTP1) ? close : na
plotshape(
l_tp,
title = "TP1 Cross",
text = "TP1",
textcolor = color.white,
color = color.olive,
style = shape.labelup,
size = size.tiny,
location = location.absolute)
plotshape(
i_alertOn and (longTP2 or shortTP2) ? close : na,
title = "TP2 Cross",
text = "TP2",
textcolor = color.white,
color = color.olive,
style = shape.labelup,
size = size.tiny,
location = location.absolute)
plotshape(
i_alertOn and (longTP3 or shortTP3) ? close : na,
title = "TP3 Cross",
text = "TP3",
textcolor = color.white,
color = color.olive,
style = shape.labelup,
size = size.tiny,
location = location.absolute)
plotshape(
i_alertOn and (longSL or shortSL) ? close : na,
title = "SL Cross",
text = "SL",
textcolor = color.white,
color = color.maroon,
style = shape.labelup,
size = size.tiny,
location = location.absolute)
//
plot(
na,
title = "─── ───",
editable = false,
display = display.data_window)
plot(
condition,
title = "condition",
editable = false,
display = display.data_window)
plot(
strategy.position_size * 100,
title = ".position_size",
editable = false,
display = display.data_window)
//#endregion }
// ——————————— <↑↑↑ G_RISK ↑↑↑>
//#region ———— <↓↓↓ G_SCRIPT02 ↓↓↓> {
// @function Queues a new element in an array and de-queues its first element.
f_qDq(_array, _val) =>
array.push(_array, _val)
_return = array.shift(_array)
_return
var line a_slLine = array.new_line(1)
var line a_entryLine = array.new_line(1)
var line a_tp3Line = array.new_line(1)
var line a_tp2Line = array.new_line(1)
var line a_tp1Line = array.new_line(1)
var label a_slLabel = array.new_label(1)
var label a_tp3label = array.new_label(1)
var label a_tp2label = array.new_label(1)
var label a_tp1label = array.new_label(1)
var label a_entryLabel = array.new_label(1)
newEntry = longE or shortE
entryIndex = 1
entryIndex := newEntry ? bar_index : nz(entryIndex )
lasTrade = bar_index >= entryIndex
l_right = 10
line.delete(
f_qDq(a_slLine,
line.new(
entryIndex,
slLine,
last_bar_index + l_right,
slLine,
style = line.style_solid,
color = c_sl)))
line.delete(
f_qDq(a_entryLine,
line.new(
entryIndex,
entryLine,
last_bar_index + l_right,
entryLine,
style = line.style_solid,
color = color.blue)))
line.delete(
f_qDq(a_tp3Line,
line.new(
entryIndex,
tp3Line,
last_bar_index + l_right,
tp3Line,
style = line.style_solid,
color = c_tp)))
line.delete(
f_qDq(a_tp2Line,
line.new(
entryIndex,
tp2Line,
last_bar_index + l_right,
tp2Line,
style = line.style_solid,
color = c_tp)))
line.delete(
f_qDq(a_tp1Line,
line.new(
entryIndex,
tp1Line,
last_bar_index + l_right,
tp1Line,
style = line.style_solid,
color = c_tp)))
label.delete(
f_qDq(a_slLabel,
label.new(
last_bar_index + l_right,
slLine,
'SL: ' + str.tostring(slLine, '##.###'),
style = label.style_label_left,
textcolor = color.white,
color = c_sl)))
label.delete(
f_qDq(a_entryLabel,
label.new(
last_bar_index + l_right,
entryLine,
'Entry: ' + str.tostring(entryLine, '##.###'),
style = label.style_label_left,
textcolor = color.white,
color = color.blue)))
label.delete(
f_qDq(a_tp3label,
label.new(
last_bar_index + l_right,
tp3Line,
'TP3: ' + str.tostring(tp3Line, '##.###'),
style = label.style_label_left,
textcolor = color.white,
color = c_tp)))
label.delete(
f_qDq(a_tp2label,
label.new(
last_bar_index + l_right,
tp2Line,
'TP2: ' + str.tostring(tp2Line, '##.###'),
style = label.style_label_left,
textcolor = color.white,
color = c_tp)))
label.delete(
f_qDq(a_tp1label,
label.new(
last_bar_index + l_right,
tp1Line,
'TP1: ' + str.tostring(tp1Line, '##.###'),
style = label.style_label_left,
textcolor = color.white,
color = c_tp)))
// ———————————
//
if longE or shortE or longX or shortX
alert(message = 'Any Alert', freq = alert.freq_once_per_bar_close)
if longE
alert(message = 'Long Entry', freq = alert.freq_once_per_bar_close)
if shortE
alert(message = 'Short Entry', freq = alert.freq_once_per_bar_close)
if longX
alert(message = 'Long Exit', freq = alert.freq_once_per_bar_close)
if shortX
alert(message = 'Short Exit', freq = alert.freq_once_per_bar_close)
//#endregion }
// ——————————— <↑↑↑ G_SCRIPT03 ↑↑↑>
Latent Energy Reactor [The_lurker]Latent Energy Reactor | مفاعل الطاقة الكامنة
═════════════════════════════════════════════════════════════
🔬 THE PHILOSOPHY
═════════════════════════════════════════════════════════════
Markets operate in cycles of compression and expansion. Before every significant price movement, there exists a period where buyers and sellers reach a temporary equilibrium — a consolidation zone where energy accumulates like pressure building in a reactor.
The Latent Energy Reactor was designed to identify these critical zones, measure the energy building within them, and predict the direction of the inevitable breakout.
This indicator transforms the abstract concept of "market energy" into a quantifiable, visual system that traders can use to anticipate high-probability breakout opportunities.
═════════════════════════════════════════════════════════════
🎯 THE THREE BOX STATES
═════════════════════════════════════════════════════════════
Understanding the three box states is crucial for proper interpretation:
📦 STATE 1: ACTIVE ZONE (GRAY BOX)
─────────────────────────────────────
Visual Characteristics:
• Color: Gray/Neutral with 3D depth effect
• Extends to the right edge of the chart (future projection)
• Contains pressure lines (dotted horizontal lines inside)
• Displays gravity center line (dashed line showing volume-weighted center)
• Energy progress bar beneath the box
• Real-time information panel appears on screen
What It Means:
The gray box represents a LIVE consolidation zone currently forming. Price is contained within the boundaries, and energy is actively accumulating. This is the "waiting phase" where the reactor is charging.
What to Watch:
• Energy percentage climbing toward critical levels (80%+)
• Gravity center position (upper half = bullish bias, lower half = bearish bias)
• Top and bottom rejection counts in the information panel
• Phase progression (Forming → Growth → Mature → Exhaustion)
Trading Approach:
Do NOT trade inside the gray box. This is the preparation phase. Monitor the energy levels and predicted direction, but wait for confirmation.
📦 STATE 2: BULLISH BREAKOUT BOX (GREEN BOX)
─────────────────────────────────────────────
Visual Characteristics:
• Color: Green with 3D depth effect
• Box boundaries are now fixed (no longer extending right)
• Displays "BUY" text centered inside the box
• Stop Loss line appears below the box (orange)
• Three Take Profit lines appear above (teal/cyan)
• Entry line at the box's upper boundary (white dashed)
What It Means:
The green box indicates a CONFIRMED bullish breakout. Price has broken above the consolidation zone's upper boundary, releasing the accumulated energy upward.
Automatic Calculations Displayed:
• Entry Price: Upper boundary of the box
• Stop Loss: Lower boundary minus ATR buffer
• TP1: Entry + (Risk × 1.0) — 1:1 reward ratio
• TP2: Entry + (Risk × 1.5) — 1.5:1 reward ratio
• TP3: Entry + (Risk × 2.0) — 2:1 reward ratio
Trading Approach:
Consider long positions with the displayed SL/TP levels as guidelines. The higher the energy level and breakout quality score were before the breakout, the more reliable the signal.
📦 STATE 3: BEARISH BREAKOUT BOX (RED BOX)
──────────────────────────────────────────
Visual Characteristics:
• Color: Red with 3D depth effect
• Box boundaries are now fixed
• Displays "SELL" text centered inside the box
• Stop Loss line appears above the box (orange)
• Three Take Profit lines appear below (teal/cyan)
• Entry line at the box's lower boundary (white dashed)
What It Means:
The red box indicates a CONFIRMED bearish breakout. Price has broken below the consolidation zone's lower boundary, releasing the accumulated energy downward.
Automatic Calculations Displayed:
• Entry Price: Lower boundary of the box
• Stop Loss: Upper boundary plus ATR buffer
• TP1: Entry - (Risk × 1.0) — 1:1 reward ratio
• TP2: Entry - (Risk × 1.5) — 1.5:1 reward ratio
• TP3: Entry - (Risk × 2.0) — 2:1 reward ratio
Trading Approach:
Consider short positions with the displayed SL/TP levels as guidelines. Stronger setups have higher pre-breakout energy and quality scores.
═════════════════════════════════════════════════════════════
⚛️ THE ENERGY CALCULATION SYSTEM
═════════════════════════════════════════════════════════════
The energy percentage (0-100%) is calculated using four factors:
Compression Score (up to 40 points)
Measures how tight the range is relative to normal volatility (ATR). Tighter compression = higher energy storage.
Time Score (up to 35 points)
Longer consolidation periods accumulate more energy. Each bar adds to the score up to the maximum.
Maturity Bonus (up to 15 points)
Zones that reach mature phases receive bonus energy points, recognizing that extended consolidations often produce more powerful breakouts.
Tightness Bonus (up to 10 points)
Extra points awarded when the range height is exceptionally small relative to ATR.
═════════════════════════════════════════════════════════════
📊 THE GRAVITY CENTER SYSTEM
═════════════════════════════════════════════════════════════
How It Works:
The gravity center is the volume-weighted average price within the consolidation zone. It reveals where the majority of trading activity (and thus institutional interest) is concentrated.
Interpretation:
• Gravity center in UPPER half → Institutions accumulating → Bullish bias
• Gravity center in LOWER half → Institutions distributing → Bearish bias
• Gravity center at MIDDLE → Neutral/Uncertain
Visual Display:
A dashed line with a ⚖️ symbol marks the gravity center inside active zones. The line color matches the directional bias.
═════════════════════════════════════════════════════════════
🏦 INSTITUTIONAL FOOTPRINT DETECTION
═════════════════════════════════════════════════════════════
What It Measures:
The indicator scans for volume anomalies — bars where volume significantly exceeds the average while price remains contained within the zone.
Why It Matters:
Large volume without price movement often indicates institutional players building positions. They cannot accumulate or distribute large quantities without leaving a "footprint" in the volume data.
Score Interpretation:
• Below 30%: Normal retail activity
• 30-50%: Some institutional interest detected
• Above 50%: Significant institutional footprint (marked with 🏦 icon)
═════════════════════════════════════════════════════════════
📈 MATURITY PHASES
═════════════════════════════════════════════════════════════
⚒ Forming Phase
The zone has just been identified. Energy is low, and the pattern needs more time to develop. Premature breakouts during this phase have higher failure rates.
📈 Growth Phase
The zone is developing nicely. Energy is building, and the consolidation pattern is becoming more defined. Watch for increasing rejection counts at boundaries.
✅ Mature Phase
Optimal trading phase. The zone has accumulated significant energy, institutional footprints are often visible, and breakout quality scores are typically highest.
⚠ Exhaustion Phase
The zone has persisted beyond typical duration. While energy remains high, the pattern may be losing its predictive power.
═════════════════════════════════════════════════════════════
🎨 VISUAL ELEMENTS GUIDE
═════════════════════════════════════════════════════════════
3D Box Effect
The 3D rendering creates visual depth with a top face and side face, making boxes stand out clearly. Adjustable via "3D Depth" and "3D Height %" settings.
Pressure Lines
Dotted horizontal lines inside active zones visualize internal pressure distribution. Lines closer to the gravity center are more opaque.
Energy Progress Bar
A horizontal bar beneath each zone shows energy level visually. Color progresses: green (low) → yellow (moderate) → orange (high) → red (critical).
Imminent Breakout Warning
When energy reaches critical threshold (default 80%), a warning label "⚠ IMMINENT!" appears above the active zone.
Information Panel
Real-time table displaying: Energy Level, Phase, Prediction, Breakout Quality, Institutional Footprint, Top/Bottom Rejections.
═════════════════════════════════════════════════════════════
📊 READING THE SIGNALS
═════════════════════════════════════════════════════════════
Energy Levels:
• Below 40%: Low energy — breakout unlikely soon
• 40-60%: Moderate energy — zone developing
• 60-80%: High energy — prepare for potential breakout
• Above 80%: Critical energy — breakout imminent
Breakout Quality Score:
• Below 50%: Weak setup — higher false breakout risk
• 50-70%: Moderate setup — proceed with caution
• Above 70%: Strong setup — high probability trade
Direction Confidence:
• Below 55%: Neutral — wait for clearer signals
• 55-70%: Moderate confidence
• Above 70%: High confidence prediction
═════════════════════════════════════════════════════════════
⚙️ RECOMMENDED SETTINGS
═════════════════════════════════════════════════════════════
For Scalping (1-15 min):
Min Bars in Range: 10-15 | ATR Period: 10 | Range ATR Multiplier: 2.0
For Day Trading (15min-1H):
Min Bars in Range: 15-20 | ATR Period: 14 | Range ATR Multiplier: 2.5
For Swing Trading (4H-Daily):
Min Bars in Range: 20-30 | ATR Period: 20 | Range ATR Multiplier: 3.0
═════════════════════════════════════════════════════════════
🔔 ALERTS
═════════════════════════════════════════════════════════════
• New Zone Alert: Triggers when a new consolidation zone is identified
• Imminent Breakout Alert: Triggers when energy reaches critical levels
• Bullish Breakout Alert: Triggers on confirmed bullish breakout
• Bearish Breakout Alert: Triggers on confirmed bearish breakout
═════════════════════════════════════════════════════════════
⚠️ DISCLAIMER
═════════════════════════════════════════════════════════════
This indicator is designed as a technical analysis tool to identify consolidation patterns and anticipate potential breakout directions. No indicator can predict the future with certainty. The displayed SL/TP levels are suggestions based on mathematical calculations, not guarantees.
This indicator is for educational and analytical purposes only. It does not constitute financial, investment, or trading advice. Use it in conjunction with your own strategy and risk management. Neither TradingView nor the developer is liable for any financial decisions or losses.
═════════════════════════════════════════════════════════════
═════════════════════════════════════════════════════════════
مفاعل الطاقة الكامنة | Latent Energy Reactor
🔬 الفلسفة
═════════════════════════════════════════════════════════════
تعمل الأسواق في دورات من الضغط والتمدد. قبل كل حركة سعرية كبيرة، توجد فترة يصل فيها المشترون والبائعون إلى توازن مؤقت — منطقة تجميع حيث تتراكم الطاقة مثل الضغط المتراكم في مفاعل.
صُمم مفاعل الطاقة الكامنة لتحديد هذه المناطق الحرجة، وقياس الطاقة المتراكمة داخلها، والتنبؤ باتجاه الاختراق الحتمي.
يحوّل هذا المؤشر المفهوم المجرد لـ "طاقة السوق" إلى نظام قابل للقياس والعرض البصري يمكن للمتداولين استخدامه لتوقع فرص الاختراق عالية الاحتمالية.
═════════════════════════════════════════════════════════════
🎯 حالات الصندوق الثلاث
═════════════════════════════════════════════════════════════
فهم حالات الصندوق الثلاث ضروري للتفسير الصحيح:
📦 الحالة الأولى: المنطقة النشطة (الصندوق الرمادي)
─────────────────────────────────────────────────────
الخصائص البصرية:
• اللون: رمادي/محايد مع تأثير عمق ثلاثي الأبعاد
• يمتد إلى الحافة اليمنى للرسم البياني (إسقاط مستقبلي)
• يحتوي على خطوط الضغط (خطوط أفقية منقطة بالداخل)
• يعرض خط مركز الثقل (خط متقطع يُظهر المركز المرجح بالحجم)
• شريط تقدم الطاقة أسفل الصندوق
• تظهر لوحة المعلومات الفورية على الشاشة
ماذا يعني:
الصندوق الرمادي يمثل منطقة تجميع حَيّة تتشكل حالياً. السعر محتوى داخل الحدود، والطاقة تتراكم بنشاط. هذه هي "مرحلة الانتظار" حيث المفاعل يشحن.
ما يجب مراقبته:
• نسبة الطاقة تصعد نحو المستويات الحرجة (80%+)
• موقع مركز الثقل (النصف العلوي = ميل صعودي، النصف السفلي = ميل هبوطي)
• عدد الرفض العلوي والسفلي في لوحة المعلومات
• تقدم المرحلة (تشكّل ← نمو ← نضج ← إرهاق)
نهج التداول:
لا تتداول داخل الصندوق الرمادي. هذه مرحلة الإعداد. راقب مستويات الطاقة والاتجاه المتوقع، لكن انتظر التأكيد.
📦 الحالة الثانية: صندوق الاختراق الصعودي (الصندوق الأخضر)
─────────────────────────────────────────────────────────────
الخصائص البصرية:
• اللون: أخضر مع تأثير عمق ثلاثي الأبعاد
• حدود الصندوق ثابتة الآن (لم تعد تمتد لليمين)
• يعرض نص "شراء" أو "BUY" في منتصف الصندوق
• يظهر خط وقف الخسارة أسفل الصندوق (برتقالي)
• تظهر ثلاثة خطوط أهداف فوق الصندوق (فيروزي)
• خط الدخول عند الحد العلوي للصندوق (أبيض متقطع)
ماذا يعني:
الصندوق الأخضر يشير إلى اختراق صعودي مُؤَكَّد. كسر السعر فوق الحد العلوي لمنطقة التجميع، محرراً الطاقة المتراكمة للأعلى.
الحسابات التلقائية المعروضة:
• سعر الدخول: الحد العلوي للصندوق
• وقف الخسارة: الحد السفلي ناقص حاجز ATR
• الهدف 1: الدخول + (المخاطرة × 1.0) — نسبة مكافأة 1:1
• الهدف 2: الدخول + (المخاطرة × 1.5) — نسبة مكافأة 1.5:1
• الهدف 3: الدخول + (المخاطرة × 2.0) — نسبة مكافأة 2:1
نهج التداول:
فكر في صفقات شراء مع مستويات وقف الخسارة والأهداف المعروضة كإرشادات. كلما ارتفع مستوى الطاقة ودرجة جودة الاختراق قبل الكسر، كانت الإشارة أكثر موثوقية.
📦 الحالة الثالثة: صندوق الاختراق الهبوطي (الصندوق الأحمر)
─────────────────────────────────────────────────────────────
الخصائص البصرية:
• اللون: أحمر مع تأثير عمق ثلاثي الأبعاد
• حدود الصندوق ثابتة الآن
• يعرض نص "بيع" أو "SELL" في منتصف الصندوق
• يظهر خط وقف الخسارة فوق الصندوق (برتقالي)
• تظهر ثلاثة خطوط أهداف أسفل الصندوق (فيروزي)
• خط الدخول عند الحد السفلي للصندوق (أبيض متقطع)
ماذا يعني:
الصندوق الأحمر يشير إلى اختراق هبوطي مُؤَكَّد. كسر السعر تحت الحد السفلي لمنطقة التجميع، محرراً الطاقة المتراكمة للأسفل.
الحسابات التلقائية المعروضة:
• سعر الدخول: الحد السفلي للصندوق
• وقف الخسارة: الحد العلوي زائد حاجز ATR
• الهدف 1: الدخول - (المخاطرة × 1.0) — نسبة مكافأة 1:1
• الهدف 2: الدخول - (المخاطرة × 1.5) — نسبة مكافأة 1.5:1
• الهدف 3: الدخول - (المخاطرة × 2.0) — نسبة مكافأة 2:1
نهج التداول:
فكر في صفقات بيع مع مستويات وقف الخسارة والأهداف المعروضة كإرشادات. الإعدادات الأقوى لديها طاقة ودرجات جودة أعلى قبل الاختراق.
═════════════════════════════════════════════════════════════
⚛️ نظام حساب الطاقة
═════════════════════════════════════════════════════════════
تُحسب نسبة الطاقة (0-100%) باستخدام أربعة عوامل:
درجة الضغط (حتى 40 نقطة)
تقيس مدى ضيق النطاق نسبة للتقلب الطبيعي (ATR). ضغط أشد = تخزين طاقة أعلى.
درجة الوقت (حتى 35 نقطة)
فترات التجميع الأطول تراكم طاقة أكثر. كل شمعة تضيف للدرجة حتى الحد الأقصى.
مكافأة النضج (حتى 15 نقطة)
المناطق التي تصل لمراحل النضج تحصل على نقاط طاقة إضافية، اعترافاً بأن التجميعات الممتدة غالباً تنتج اختراقات أقوى.
مكافأة الضيق (حتى 10 نقاط)
نقاط إضافية تُمنح عندما يكون ارتفاع النطاق صغيراً استثنائياً نسبة لـ ATR.
═════════════════════════════════════════════════════════════
📊 نظام مركز الثقل
═════════════════════════════════════════════════════════════
كيف يعمل:
مركز الثقل هو متوسط السعر المرجح بالحجم داخل منطقة التجميع. يكشف أين يتركز معظم النشاط التداولي (وبالتالي الاهتمام المؤسسي).
التفسير:
• مركز الثقل في النصف العلوي ← المؤسسات تجمّع ← ميل صعودي
• مركز الثقل في النصف السفلي ← المؤسسات توزّع ← ميل هبوطي
• مركز الثقل في المنتصف ← محايد/غير مؤكد
العرض البصري:
خط متقطع مع رمز ⚖️ يحدد مركز الثقل داخل المناطق النشطة. لون الخط يطابق الميل الاتجاهي.
═════════════════════════════════════════════════════════════
🏦 كشف البصمة المؤسسية
═════════════════════════════════════════════════════════════
ما يقيسه:
يفحص المؤشر الشذوذات الحجمية — شموع حجمها يتجاوز المتوسط بشكل كبير بينما يبقى السعر محتوى داخل المنطقة.
لماذا هذا مهم:
الحجم الكبير بدون حركة سعرية غالباً يشير إلى لاعبين مؤسسيين يبنون مراكز. لا يمكنهم تجميع أو توزيع كميات كبيرة بدون ترك "بصمة" في بيانات الحجم.
تفسير الدرجة:
• أقل من 30%: نشاط تجزئة عادي
• 30-50%: بعض الاهتمام المؤسسي مكتشف
• فوق 50%: بصمة مؤسسية كبيرة (تُحدد بأيقونة 🏦)
═════════════════════════════════════════════════════════════
📈 مراحل النضج
═════════════════════════════════════════════════════════════
⚒ مرحلة التشكّل
المنطقة تم تحديدها للتو. الطاقة منخفضة، والنمط يحتاج وقتاً أكثر للتطور. الاختراقات المبكرة خلال هذه المرحلة لديها معدلات فشل أعلى.
📈 مرحلة النمو
المنطقة تتطور بشكل جيد. الطاقة تتراكم، ونمط التجميع يصبح أكثر تحديداً. راقب زيادة عدد الرفض عند الحدود.
✅ مرحلة النضج
مرحلة التداول المثلى. المنطقة راكمت طاقة كبيرة، البصمات المؤسسية غالباً مرئية، ودرجات جودة الاختراق عادة في أعلى مستوياتها.
⚠ مرحلة الإرهاق
المنطقة استمرت أطول من المدة النموذجية. بينما تبقى الطاقة مرتفعة، قد يفقد النمط قوته التنبؤية.
═════════════════════════════════════════════════════════════
🎨 دليل العناصر البصرية
═════════════════════════════════════════════════════════════
تأثير الصندوق ثلاثي الأبعاد
العرض ثلاثي الأبعاد يخلق عمقاً بصرياً مع وجه علوي ووجه جانبي، مما يجعل الصناديق بارزة بوضوح. قابل للتعديل عبر إعدادات "عمق 3D" و"ارتفاع 3D %".
خطوط الضغط
خطوط أفقية منقطة داخل المناطق النشطة تصور توزيع الضغط الداخلي. الخطوط الأقرب لمركز الثقل أكثر وضوحاً.
شريط تقدم الطاقة
شريط أفقي أسفل كل منطقة يُظهر مستوى الطاقة بصرياً. اللون يتدرج: أخضر (منخفض) ← أصفر (متوسط) ← برتقالي (مرتفع) ← أحمر (حرج).
تحذير الاختراق الوشيك
عندما تصل الطاقة للعتبة الحرجة (افتراضياً 80%)، يظهر تحذير "⚠ كسر وشيك!" فوق المنطقة النشطة.
لوحة المعلومات
جدول فوري يعرض: مستوى الطاقة، المرحلة، التوقع، جودة الاختراق، البصمة المؤسسية، الرفض العلوي/السفلي.
═════════════════════════════════════════════════════════════
📊 قراءة الإشارات
═════════════════════════════════════════════════════════════
مستويات الطاقة:
• أقل من 40%: طاقة منخفضة — الاختراق غير مرجح قريباً
• 40-60%: طاقة متوسطة — المنطقة في طور التطور
• 60-80%: طاقة مرتفعة — استعد لاختراق محتمل
• فوق 80%: طاقة حرجة — الاختراق وشيك
درجة جودة الاختراق:
• أقل من 50%: إعداد ضعيف — خطر اختراق كاذب أعلى
• 50-70%: إعداد متوسط — تقدم بحذر
• فوق 70%: إعداد قوي — صفقة عالية الاحتمالية
ثقة الاتجاه:
• أقل من 55%: محايد — انتظر إشارات أوضح
• 55-70%: ثقة متوسطة
• فوق 70%: توقع عالي الثقة
═════════════════════════════════════════════════════════════
⚙️ الإعدادات الموصى بها
═════════════════════════════════════════════════════════════
للمضاربة السريعة (1-15 دقيقة):
الحد الأدنى للشموع: 10-15 | فترة ATR: 10 | مضاعف ATR: 2.0
للتداول اليومي (15 دقيقة - ساعة):
الحد الأدنى للشموع: 15-20 | فترة ATR: 14 | مضاعف ATR: 2.5
للتداول المتأرجح (4 ساعات - يومي):
الحد الأدنى للشموع: 20-30 | فترة ATR: 20 | مضاعف ATR: 3.0
═════════════════════════════════════════════════════════════
🔔 التنبيهات
═════════════════════════════════════════════════════════════
• تنبيه منطقة جديدة: يُفعّل عند تشكّل منطقة تجميع جديدة
• تنبيه اختراق وشيك: يُفعّل عند وصول الطاقة لمستويات حرجة
• تنبيه اختراق صعودي: يُفعّل عند تأكيد كسر صعودي
• تنبيه اختراق هبوطي: يُفعّل عند تأكيد كسر هبوطي
═════════════════════════════════════════════════════════════
⚠️ إخلاء المسؤولية
═════════════════════════════════════════════════════════════
هذا المؤشر مصمم كأداة تحليل فني لتحديد أنماط التجميع وتوقع اتجاهات الاختراق المحتملة. لا يمكن لأي مؤشر التنبؤ بالمستقبل بيقين. مستويات وقف الخسارة والأهداف المعروضة هي اقتراحات مبنية على حسابات رياضية، وليست ضمانات.
هذا المؤشر لأغراض تعليمية وتحليلية فقط. لا يُمثل نصيحة مالية أو استثمارية أو تداولية. استخدمه بالتزامن مع استراتيجيتك الخاصة وإدارة المخاطر. لا يتحمل TradingView ولا المطور مسؤولية أي قرارات مالية أو خسائر.
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! 🚀📈
Profitable Loser Model [MMT]Profitable Loser Model
Overview
The Profitable Loser Model is a powerful PineScript v6 indicator designed to enhance your trading by visualizing key price levels, session open zones, Fibonacci retracements, and premium/discount zones. This overlay indicator provides traders with a customizable toolkit to analyze market structure across any timeframe, making it ideal for intraday and swing trading strategies.
Features
Open Zone Visualization
- Plots a box based on the open and close of the first candle in a user-defined timeframe (default: 5-minute).
- Customizable box color, projection offset, and label size (Tiny, Small, Normal, Large).
- Displays a timeframe label (e.g., "5m Open Zone") for quick reference, toggleable on/off.
Session Open Lines
- Optionally draws horizontal lines at key session opens (8:30 AM, 9:30 AM, 1:30 PM, Midnight, New York time).
- Customize line color, style (Solid, Dashed, Dotted), width, and label size for each session.
- Perfect for identifying critical intraday price levels.
Premium and Discount Zones
- Highlights premium (above midpoint) and discount (below midpoint) zones based on session high/low.
- Toggleable with customizable colors and projection offsets.
- Helps traders spot overbought/oversold areas for potential mean-reversion trades.
Fibonacci Retracement Levels
- Plots user-defined Fibonacci levels (default: 0.23, 0.35, 0.5, 0.62, 0.705, 0.79, 0.886, 1, 1.1).
- Customizable line style, width, color, and labels (showing percentage and/or price).
- Dynamically adjusts based on price movement relative to the open zone.
Take Profit (TP) and Stop Loss (SL) Levels
- Highlights TP (default: 0.23) and SL (default: 1.1) Fibonacci levels with distinct colors.
- Fully customizable to align with your risk-reward strategy.
How It Works
- Session Detection : Resets daily (or per user-defined timeframe) to capture the first candle's open, high, low, and close.
- Open Zone : Draws a box between the open and close, extended forward by the projection offset.
- Session Lines : Plots lines at specified session opens with customizable styles and labels.
- Fibonacci Retracement : Adjusts levels dynamically based on session high/low and price action.
- Premium/Discount Zones : Calculated from the session range midpoint, updated in real-time.
Settings
- Open Zone :
- Timeframe (default: 5m), Calculate Timeframe (default: Daily).
- Toggle label, adjust size, box color, and projection offset.
- Session Open Lines :
- Enable/disable lines for 8:30 AM, 9:30 AM, 1:30 PM, Midnight.
- Customize color, style, width, label size, and vertical offset.
- Premium/Discount Zones :
- Toggle visibility, set colors, and adjust projection offset.
- Fibonacci Retracement :
- Toggle visibility, set custom levels, line style, width, color, and label options.
- Adjust projection offset.
- TP/SL :
- Set TP/SL Fibonacci levels and colors.
Use Cases
- Intraday Trading : Use session open lines and open zones to trade key market hours.
- Swing Trading : Leverage Fibonacci levels for potential reversal or continuation zones.
- Risk Management : Set precise TP/SL levels based on Fibonacci retracements.
- Market Structure : Identify overbought/oversold zones with premium/discount areas.
Notes
- Optimized with `dynamic_requests = true` for efficient real-time data handling.
- Visual elements (boxes, lines, labels) are cleaned up at the start of each new session.
- Session lines use New York time (`America/New_York`) for alignment with major markets.
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
MEMEQUANTMEMEQUANT
This script is a comprehensive and specialized tool designed for tracking trends and money flow within meme coins and DEX tokens. By combining various features such as trend lines, Fibonacci levels, and category-based indices, it helps traders make informed decisions in highly volatile markets.
Key Features:
1. Category-Based Indices:
• Tracks the performance of token categories like:
• AI Agent Tokens
• AI Tokens
• Animal Tokens
• Murad Picks
• Each category consists of leader tokens, which are selected based on their higher market cap and trading volume. These tokens act as benchmarks for their respective categories.
• Visualizes category indices in a line chart to identify trends and compare money flow between categories.
2. Fibonacci Correction Zones:
• Highlights key retracement levels (e.g., 60%, 70%, 80%).
• These levels are crucial for identifying potential reversal zones, commonly observed in meme coin trading patterns.
• Fully customizable to match individual trading strategies.
3. Trend Lines:
• Automatically detects major support and resistance levels.
• Separates long-term and short-term trend lines, allowing traders to focus on significant price movements.
4. Enhanced Info Table:
• Provides real-time insights, including:
• % Distance from All-Time High (ATH)
• Current Trading Volume
• 50-bar Average Volume
• Volume Change Percentage
• Displays information in an easy-to-read table on the chart.
5. Customizable Settings:
• Users can adjust transparency, colors, and ranges for Fibonacci zones, trend lines, and the table.
• Enables or disables individual features (e.g., Fibonacci, trend lines, table) based on preferences.
How It Works:
1. Tracking Money Flow Across Categories:
• The script calculates the market cap to volume ratio for each category of tokens to help identify the dominant trend.
• A higher ratio indicates greater liquidity and stability, while a lower ratio suggests higher volatility or price manipulation.
2. Identifying Retracement Patterns:
• Leverages common retracement behaviors (e.g., 70% correction levels) observed in meme coins to detect potential reversal zones.
• Combines this with trend line analysis for additional confirmation.
3. Leader Tokens as Indicators:
• Each category is represented by its leader tokens, which have historically higher liquidity and market cap. This allows the script to accurately reflect the overall trend in each category.
When to Use:
• Trend Analysis: To identify which category (e.g., AI Tokens or Animal Tokens) is leading the market.
• Reversal Zones: To spot potential support or resistance levels using Fibonacci zones.
• Money Flow: To understand how capital is moving across different token categories in real time.
Who Is This For?
This script is tailored for:
• Traders specializing in meme coins and DEX tokens.
• Those looking for an edge in trend-based trading by analyzing market cap, volume, and retracement levels.
• Anyone aiming to track money flow dynamics between different token categories.
Future Updates:
This is the initial version of the script. Future updates may include:
• Support for additional token categories and DEX data.
• More advanced pattern recognition and alerts for volume and price anomalies.
• Enhanced visualization for historical data trends.
With this tool, traders can combine money flow analysis with the 60-70% retracement strategy, turning it into a powerful assistant for navigating the fast-paced world of meme coins and DEX tokens.
This script is designed to provide meaningful insights and practical utility for traders, adhering to TradingView’s standards for originality, clarity, and user value.
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.
Holt-Winters Forecast BandsDescription:
The Holt-Winters Adaptive Bands indicator combines seasonal trend forecasting with adaptive volatility bands. It uses the Holt-Winters triple exponential smoothing model to project future price trends, while Nadaraya-Watson smoothed bands highlight dynamic support and resistance zones.
This indicator is ideal for traders seeking to predict future price movements and visualize potential market turning points. By focusing on broader seasonal and trend data, it provides insight into both short- and long-term market directions. It’s particularly effective for swing trading and medium-to-long-term trend analysis on timeframes like daily and 4-hour charts, although it can be adjusted for other timeframes.
Key Features:
Holt-Winters Forecast Line: The core of this indicator is the Holt-Winters model, which uses three components — level, trend, and seasonality — to project future prices. This model is widely used for time-series forecasting, and in this script, it provides a dynamic forecast line that predicts where price might move based on historical patterns.
Adaptive Volatility Bands: The shaded areas around the forecast line are based on Nadaraya-Watson smoothing of historical price data. These bands provide a visual representation of potential support and resistance levels, adapting to recent volatility in the market. The bands' fill colors (red for upper and green for lower) allow traders to identify potential reversal zones without cluttering the chart.
Dynamic Confidence Levels: The indicator adapts its forecast based on market volatility, using inputs such as average true range (ATR) and price deviations. This means that in high-volatility conditions, the bands may widen to account for increased price movements, helping traders gauge the current market environment.
How to Use:
Forecasting: Use the forecast line to gain insight into potential future price direction. This line provides a directional bias, helping traders anticipate whether the price may continue along a trend or reverse.
Support and Resistance Zones: The shaded bands act as dynamic support and resistance zones. When price enters the upper (red) band, it may be in an overbought area, while the lower (green) band may indicate oversold conditions. These bands adjust with volatility, so they reflect the current market conditions rather than fixed levels.
Timeframe Recommendations:
This indicator performs best on daily and 4-hour charts due to its reliance on trend and seasonality. It can be used on lower timeframes, but accuracy may vary due to increased price noise.
For traders looking to capture swing trades, the daily and 4-hour timeframes provide a balance of trend stability and signal reliability.
Adjustable Settings:
Alpha, Beta, and Gamma: These settings control the level, trend, and seasonality components of the forecast. Alpha is generally the most sensitive setting for adjusting responsiveness to recent price movements, while Beta and Gamma help fine-tune the trend and seasonal adjustments.
Band Smoothing and Deviation: These settings control the lookback period and width of the volatility bands, allowing users to customize how closely the bands follow price action.
Parameters:
Prediction Length: Sets the length of the forecast, determining how far into the future the prediction line extends.
Season Length: Defines the seasonality cycle. A setting of 14 is typical for bi-weekly cycles, but this can be adjusted based on observed market cycles.
Alpha, Beta, Gamma: These parameters adjust the Holt-Winters model's sensitivity to recent prices, trends, and seasonal patterns.
Band Smoothing: Determines the smoothing applied to the bands, making them either more reactive or smoother.
Ideal Use Cases:
Swing Trading and Trend Following: The Holt-Winters model is particularly suited for capturing larger market trends. Use the forecast line to determine trend direction and the bands to gauge support/resistance levels for potential entries or exits.
Identifying Reversal Zones: The adaptive bands act as dynamic overbought and oversold zones, giving traders potential reversal areas when price reaches these levels.
Important Notes:
No Buy/Sell Signals: This indicator does not produce direct buy or sell signals. It’s intended for visual trend analysis and support/resistance identification, leaving trade decisions to the user.
Not for High-Frequency Trading: Due to the nature of the Holt-Winters model, this indicator is optimized for higher timeframes like the daily and 4-hour charts. It may not be suitable for high-frequency or scalping strategies on very short timeframes.
Adjust for Volatility: If using the indicator on lower timeframes or more volatile assets, consider adjusting the band smoothing and prediction length settings for better responsiveness.
Implied Fair Value Gap (IFVG) ICT [TradingFinder] Hidden FVG OTE🔵 Introduction
The Implied Fair Value Gap (IFVG) is distinctive due to its unique three-candlestick formation, which differentiates it from conventional Fair Value Gaps.
Implied fair value represents an estimated worth of an asset—often a business or its goodwill—based on the price likely to be received in a structured transaction between market participants at a specific point in time.
In the ever-evolving world of technical analysis, pinpointing price reversal points and market anomalies can significantly enhance trading strategies and decision-making for traders and investors. Among the advanced concepts gaining traction in this field is the Implied Fair Value Gap (IFVG), introduced by the renowned analyst Inner Circle Trader (ICT).
This tool has proven to be an effective method for identifying hidden supply and demand zones in financial markets, offering a unique edge to traders looking for high-probability setups.
Unlike traditional gaps that are visible on price charts, IFVG is a hidden gap that doesn’t appear explicitly on the chart and thus requires specialized technical analysis tools for accurate identification.
This hidden gap can signal potential price reversals and offers traders insight into high-liquidity areas where price is likely to react. This article will guide you through using the ICT Implied Fair Value Gap Indicator effectively, covering its settings, usage strategies, and key features to help you make informed decisions in the market.
🟣 Bullish Implied FVG
🟣 Bearish Implied FVG
🔵 How to Use
The IFVG indicator is designed to assist traders in recognizing hidden support and resistance zones by identifying Bullish and Bearish IFVG patterns. With this tool, traders can make better-informed decisions about suitable entry and exit points for their trades based on these patterns.
🟣 Bullish Implied Fair Value Gap
This pattern occurs in an uptrend when a large bullish candlestick forms, with the wicks of the previous and following candles overlapping the body of the central candlestick.
This overlap creates a demand zone or a hidden support level, which can act as an ideal entry point for buy trades. Often, when the price returns to this area, it is likely to resume its upward trend, presenting a profitable buying opportunity.
🟣 Bearish Implied Fair Value Gap
This pattern is similar but forms in downtrends. Here, a large bearish candlestick appears on the chart, with the wicks of adjacent candles overlapping its body. This overlap defines a supply zone or a hidden resistance level and serves as a signal for potential sell trades.
When the price returns to this zone, it often continues its downward trend, providing an optimal point for entering sell trades.
The IFVG indicator also includes various filters that traders can use to refine their analysis based on market conditions. These filters, including Very Aggressive, Aggressive, Defensive, and Very Defensive, allow users to customize the IFVG zones' width, offering flexibility according to the trader’s risk tolerance and trading style.
🟣 Example Trading Scenarios
Suppose you’re in a strong uptrend and the IFVG indicator identifies a Bullish IFVG zone. In this scenario, you could consider entering a buy trade when the price retraces to this zone, expecting the uptrend to resume. Conversely, in a downtrend, a Bearish IFVG zone can signal a favorable entry point for short trades when the price revisits this area.
🔵 Settings
Implied Block Validity Period: This parameter specifies the validity period of each identified block, taking into account the number of bars that have passed since its formation. Proper adjustment of this period helps traders focus only on relevant zones, increasing the accuracy of the analysis.
Mitigation Level OB : This option defines the mitigation level for supply and demand blocks (Order Blocks), with settings including Proximal, 50% OB, and Distal.
Depending on the selected level, the indicator will focus on closer, mid-range, or farther points for block identification, allowing traders to adjust for the level of precision required.
Implied Filter : Activating this filter allows traders to apply conditions based on the width of the IFVG zones. With options like Very Aggressive and Very Defensive, traders can control the width of IFVG zones to suit their risk management strategy—whether they prefer high-risk setups or low-risk setups.
Display and Color Settings : This section enables users to customize the appearance of the IFVG zones on their charts. Traders can set different colors for Bullish and Bearish zones, allowing for easier distinction and improved visualization.
Alert Settings : One of the standout features of the IFVG indicator is the alert system. By setting up alerts, users can be notified whenever the price approaches a demand or supply zone.
Alerts can be customized to trigger Once Per Bar (one alert per bar) or Per Bar Close (alert at the close of each bar), ensuring that traders stay updated on critical price movements without needing to monitor the chart continuously.
🔵 Conclusion
The ICT Implied Fair Value Gap (IFVG) indicator is a powerful and sophisticated tool in technical analysis, allowing professional traders to identify hidden supply and demand zones and use them as entry and exit points for buy and sell trades.
This indicator’s automatic detection of IFVG zones helps traders uncover hidden trading opportunities that can enhance their analysis.
While the IFVG indicator offers numerous advantages, it is important to use it in conjunction with other technical analysis tools and sound risk management practices.
IFVG alone does not guarantee profitability in trading; it works best when combined with other indicators such as volume analysis and trend-following indicators for a comprehensive trading strategy.






















