Auto TrendLines [TradingFinder] Support Resistance Signal Alerts🔵 Introduction
The trendline is one of the most essential tools in technical analysis, widely used in financial markets such as Forex, cryptocurrency, and stocks. A trendline is a straight line that connects swing highs or swing lows and visually indicates the market’s trend direction.
Traders use trendlines to identify price structure, the strength of buyers and sellers, dynamic support and resistance zones, and optimal entry and exit points.
In technical analysis, trendlines are typically classified into three categories: uptrend lines (drawn by connecting higher lows), downtrend lines (formed by connecting lower highs), and sideways trends (moving horizontally). A valid trendline usually requires at least three confirmed touchpoints to be considered reliable for trading decisions.
Trendlines can serve as the foundation for a variety of trading strategies, such as the trendline bounce strategy, valid breakout setups, and confluence-based analysis with other tools like candlestick patterns, divergences, moving averages, and Fibonacci levels.
Additionally, trendlines are categorized into internal and external, and further into major and minor levels, each serving unique roles in market structure analysis.
🔵 How to Use
Trendlines are a key component in technical analysis, used to identify market direction, define dynamic support and resistance zones, highlight strategic entry and exit points, and manage risk. For a trendline to be reliable, it must be drawn based on structural principles—not by simply connecting two arbitrary points.
🟣 Selecting Pivot Types Based on Trend Direction
The first step is to determine the market trend: uptrend, downtrend, or sideways.
Then, choose pivot points that match the trend type :
In an uptrend, trendlines are drawn by connecting low pivots, especially higher lows.
In a downtrend, trendlines are formed by connecting high pivots, specifically lower highs.
It is crucial to connect pivots of the same type and structure to ensure the trendline is valid and analytically sound.
🟣 Pivot Classification
This indicator automatically classifies pivot points into two categories :
Major Pivots :
MLL : Major Lower Low
MHL : Major Higher Low
MHH : Major Higher High
MLH : Major Lower High
These define the primary structure of the market and are typically used in broader structural analysis.
Minor Pivots :
mLL: minor Lower Low
mHL: minor Higher Low
mHH: minor Higher High
mLH: minor Lower High
These are used for drawing more precise trendlines within corrective waves or internal price movements.
Example : In a downtrend, drawing a trendline from an MHH to an mHH creates structural inconsistency and introduces noise. Instead, connect points like MHL to MHL or mLH to mLH for a valid trendline.
🟣 Drawing High-Precision Trendlines
To ensure a reliable trendline :
Use pivots of the same classification (Major with Major or Minor with Minor).
Ensure at least three valid contact points (three touches = structural confirmation).
Draw through candles with the least deviation (choose wicks or bodies based on confluence).
Preferably draw from right to left for better alignment with current market behavior.
Use parallel lines to turn a single trendline into a trendline zone, if needed.
🟣 Using Trendlines for Trade Entries
Bounce Entry: When price approaches the trendline and shows signs of reversal (e.g., a reversal candle, divergence, or support/resistance), enter in the direction of the trend with a logical stop-loss.
Breakout Entry: When price breaks through the trendline with strong momentum and a confirmation (such as a retest or break of structure), consider trading in the direction of the breakout.
🟣 Trendline-Based Risk Management
For bounce entries, the stop-loss is placed below the trendline or the last pivot low (in an uptrend).
For breakout entries, the stop-loss is set behind the breakout candle or the last structural level.
A broken trendline can also act as an exit signal from a trade.
🟣 Combining Trendlines with Other Tools (Confluence)
Trendlines gain much more strength when used alongside other analytical tools :
Horizontal support and resistance levels
Moving averages (such as EMA 50 or EMA 200)
Fibonacci retracement zones
Candlestick patterns (e.g., Engulfing, Pin Bar)
RSI or MACD divergences
Market structure breaks (BoS / ChoCH)
🔵 Settings
Pivot Period : This defines how sensitive the pivot detection is. A higher number means the algorithm will identify more significant pivot points, resulting in longer-term trendlines.
Alerts
Alert :
Enable or disable the entire alert system
Set a custom alert name
Choose how often alerts trigger (every time, once per bar, or on bar close)
Select the time zone for alert timestamps (e.g., UTC)
Each trendline type supports two alert types :
Break Alert : Triggered when price breaks the trendline
React Alert : Triggered when price reacts or bounces off the trendline
These alerts can be independently enabled or disabled for all trendline categories (Major/Minor, Internal/External, Up/Down).
Display :
For each of the eight trendline types, you can control :
Whether to show or hide the line
Whether to delete the previous line when a new one is drawn
Color, line style (solid, dashed, dotted), extension direction (e.g., right only), and width
Major lines are typically thicker and more opaque, while minor lines appear thinner and more transparent.
All settings are designed to give the user full control over the appearance, behavior, and alert system of the indicator, without requiring manual drawing or adjustments.
🔵 Conclusion
A trendline is more than just a line on the chart—it is a structural, strategic, and flexible tool in technical analysis that can serve as the foundation for understanding price behavior and making trading decisions. Whether in trending markets or during corrections, trendlines help traders identify market direction, key zones, and high-potential entry and exit points with precision.
The accuracy and effectiveness of a trendline depend on using structurally valid pivot points and adhering to proper market logic, rather than relying on guesswork or personal bias.
This indicator is built to solve that exact problem. It automatically detects and draws multiple types of trendlines based on actual price structure, separating them into Major/Minor and Internal/External categories, and respecting professional analytical principles such as pivot type, trend direction, and structural location.
Wyszukaj w skryptach "swing high"
Enhanced KLSE Banker Flow Oscillator# Enhanced KLSE Banker Flow Oscillator
## Description
The Enhanced KLSE Banker Flow Oscillator is a sophisticated technical analysis tool designed specifically for the Malaysian stock market (KLSE). This indicator analyzes price and volume relationships to identify potential smart money movements, providing early signals for market reversals and continuation patterns.
The oscillator measures the buying and selling pressure in the market with a focus on detecting institutional activity. By combining money flow calculations with volume filters and price action analysis, it helps traders identify high-probability trading opportunities with reduced noise.
## Key Features
- Dual-Timeframe Analysis: Combines long-term money flow trends with short-term momentum shifts for more accurate signals
- Adaptive Volume Filtering: Automatically adjusts volume thresholds based on recent market conditions
- Advanced Divergence Detection: Identifies potential trend reversals through price-flow divergences
- Early Signal Detection: Provides anticipatory signals before major price movements occur
- Multiple Signal Types: Offers both early alerts and strong confirmation signals with clear visual markers
- Volatility Adjustment: Adapts sensitivity based on current market volatility for more reliable signals
- Comprehensive Visual Feedback: Color-coded oscillator, signal markers, and optional text labels
- Customizable Display Options: Toggle momentum histogram, early signals, and zone fills
- Organized Settings Interface: Logically grouped parameters for easier configuration
## Indicator Components
1. Main Oscillator Line: The primary banker flow line that fluctuates above and below zero
2. Early Signal Line: Secondary indicator showing potential emerging signals
3. Momentum Histogram: Visual representation of flow momentum changes
4. Zone Fills: Color-coded background highlighting positive and negative zones
5. Signal Markers: Visual indicators for entry and exit points
6. Reference Lines: Key levels for strong and early signals
7. Signal Labels: Optional text annotations for significant signals
## Signal Types
1. Strong Buy Signal (Green Arrow): Major bullish signal with high probability of success
2. Strong Sell Signal (Red Arrow): Major bearish signal with high probability of success
3. Early Buy Signal (Blue Circle): First indication of potential bullish trend
4. Early Sell Signal (Red Circle): First indication of potential bearish trend
5. Bullish Divergence (Yellow Triangle Up): Price making lower lows while flow makes higher lows
6. Bearish Divergence (Yellow Triangle Down): Price making higher highs while flow makes lower highs
## Parameters Explained
### Core Settings
- MFI Base Length (14): Primary calculation period for money flow index
- Short-term Flow Length (5): Calculation period for early signals
- KLSE Sensitivity (1.8): Multiplier for flow calculations, higher = more sensitive
- Smoothing Length (5): Smoothing period for the main oscillator line
### Volume Filter Settings
- Volume Filter % (65): Minimum volume threshold as percentage of average
- Use Adaptive Volume Filter (true): Dynamically adjusts volume thresholds
### Signal Levels
- Strong Signal Level (15): Threshold for strong buy/sell signals
- Early Signal Level (10): Threshold for early buy/sell signals
- Early Signal Threshold (0.75): Sensitivity factor for early signals
### Advanced Settings
- Divergence Lookback (34): Period for checking price-flow divergences
- Show Signal Labels (true): Toggle text labels for signals
### Visual Settings
- Show Momentum Histogram (true): Toggle the momentum histogram display
- Show Early Signal (true): Toggle the early signal line display
- Show Zone Fills (true): Toggle background color fills
## How to Use This Indicator
### Installation
1. Add the indicator to your TradingView chart
2. Default settings are optimized for KLSE stocks
3. Customize parameters if needed for specific stocks
### Basic Interpretation
- Oscillator Above Zero: Bullish bias, buying pressure dominates
- Oscillator Below Zero: Bearish bias, selling pressure dominates
- Crossing Zero Line: Potential shift in market sentiment
- Extreme Readings: Possible overbought/oversold conditions
### Advanced Interpretation
- Divergences: Early warning of trend exhaustion
- Signal Confluences: Multiple signal types appearing together increase reliability
- Volume Confirmation: Signals with higher volume are more significant
- Momentum Alignment: Histogram should confirm direction of main oscillator
### Trading Strategies
#### Trend Following Strategy
1. Identify market trend direction
2. Wait for pullbacks shown by oscillator moving against trend
3. Enter when oscillator reverses back in trend direction with a Strong signal
4. Place stop loss below/above recent swing low/high
5. Take profit at previous resistance/support levels
#### Counter-Trend Strategy
1. Look for oscillator reaching extreme levels
2. Identify divergence between price and oscillator
3. Wait for oscillator to cross Early signal threshold
4. Enter position against prevailing trend
5. Use tight stop loss (1 ATR from entry)
6. Take profit at first resistance/support level
#### Breakout Confirmation Strategy
1. Identify stock consolidating in a range
2. Wait for price to break out of range
3. Confirm breakout with oscillator crossing zero line in breakout direction
4. Enter position in breakout direction
5. Place stop loss below/above the breakout level
6. Trail stop as price advances
### Signal Hierarchy and Reliability
From highest to lowest reliability:
1. Strong Buy/Sell signals with divergence and high volume
2. Strong Buy/Sell signals with high volume
3. Divergence signals followed by Early signals
4. Strong Buy/Sell signals with normal volume
5. Early Buy/Sell signals with high volume
6. Early Buy/Sell signals with normal volume
## Complete Trading Plan Example
### KLSE Market Trading System
#### Pre-Trading Preparation
1. Review overall market sentiment (bullish, bearish, or neutral)
2. Scan for stocks showing significant banker flow signals
3. Note key support/resistance levels for watchlist stocks
4. Prioritize trade candidates based on signal strength and volume
#### Entry Rules for Long Positions
1. Banker Flow Oscillator above zero line (positive flow environment)
2. One or more of the following signals present:
- Strong Buy signal (green arrow)
- Bullish Divergence signal (yellow triangle up)
- Early Buy signal (blue circle) with confirming price action
3. Entry confirmation requirements:
- Volume above 65% of 20-day average
- Price above short-term moving average (e.g., 20 EMA)
- No immediate resistance within 3% of entry price
4. Entry on the next candle open after signal confirmation
#### Entry Rules for Short Positions
1. Banker Flow Oscillator below zero line (negative flow environment)
2. One or more of the following signals present:
- Strong Sell signal (red arrow)
- Bearish Divergence signal (yellow triangle down)
- Early Sell signal (red circle) with confirming price action
3. Entry confirmation requirements:
- Volume above 65% of 20-day average
- Price below short-term moving average (e.g., 20 EMA)
- No immediate support within 3% of entry price
4. Entry on the next candle open after signal confirmation
#### Position Sizing Rules
1. Base risk per trade: 1% of trading capital
2. Position size calculation: Capital × Risk% ÷ Stop Loss Distance
3. Position size adjustments:
- Increase by 20% for Strong signals with above-average volume
- Decrease by 20% for Early signals without confirming price action
- Standard size for all other valid signals
#### Stop Loss Placement
1. For Long Positions:
- Place stop below the most recent swing low
- Minimum distance: 1.5 × ATR(14)
- Maximum risk: 1% of trading capital
2. For Short Positions:
- Place stop above the most recent swing high
- Minimum distance: 1.5 × ATR(14)
- Maximum risk: 1% of trading capital
#### Take Profit Strategy
1. First Target (33% of position):
- 1.5:1 reward-to-risk ratio
- Move stop to breakeven after reaching first target
2. Second Target (33% of position):
- 2.5:1 reward-to-risk ratio
- Trail stop at previous day's low/high
3. Final Target (34% of position):
- 4:1 reward-to-risk ratio or
- Exit when opposing signal appears (e.g., Strong Sell for long positions)
#### Trade Management Rules
1. After reaching first target:
- Move stop to breakeven
- Consider adding to position if new confirming signal appears
2. After reaching second target:
- Trail stop using banker flow signals
- Exit remaining position when:
- Oscillator crosses zero line in opposite direction
- Opposing signal appears
- Price closes below/above trailing stop level
3. Maximum holding period:
- 20 trading days for trend-following trades
- 10 trading days for counter-trend trades
- Re-evaluate if targets not reached within timeframe
#### Risk Management Safeguards
1. Maximum open positions: 5 trades
2. Maximum sector exposure: 40% of trading capital
3. Maximum daily drawdown limit: 3% of trading capital
4. Mandatory stop trading rules:
- After three consecutive losing trades
- After reaching 5% account drawdown
- Resume after two-day cooling period and strategy review
#### Performance Tracking
1. Track for each trade:
- Signal type that triggered entry
- Oscillator reading at entry and exit
- Volume relative to average
- Price action confirmation patterns
- Holding period
- Reward-to-risk achieved
2. Review performance metrics weekly:
- Win rate by signal type
- Average reward-to-risk ratio
- Profit factor
- Maximum drawdown
3. Adjust strategy parameters based on performance:
- Increase position size for highest performing signals
- Decrease or eliminate trades based on underperforming signals
## Advanced Usage Tips
1. Combine with Support/Resistance:
- Signals are more reliable when they occur at key support/resistance levels
- Look for banker flow divergence at major price levels
2. Multiple Timeframe Analysis:
- Use the oscillator on both daily and weekly timeframes
- Stronger signals when both timeframes align
- Enter on shorter timeframe when confirmed by longer timeframe
3. Sector Rotation Strategy:
- Compare banker flow across different sectors
- Rotate capital to sectors showing strongest positive flow
- Avoid sectors with persistent negative flow
4. Volatility Adjustments:
- During high volatility periods, wait for Strong signals only
- During low volatility periods, Early signals can be more actionable
5. Optimizing Parameters:
- For more volatile stocks: Increase Smoothing Length (6-8)
- For less volatile stocks: Decrease KLSE Sensitivity (1.2-1.5)
- For intraday trading: Reduce all length parameters by 30-50%
## Fine-Tuning for Different Markets
While optimized for KLSE, the indicator can be adapted for other markets:
1. For US Stocks:
- Reduce KLSE Sensitivity to 1.5
- Increase Volume Filter to 75%
- Adjust Strong Signal Level to 18
2. For Forex:
- Increase Smoothing Length to 8
- Reduce Early Signal Threshold to 0.6
- Focus more on divergence signals than crossovers
3. For Cryptocurrencies:
- Increase KLSE Sensitivity to 2.2
- Reduce Signal Levels (Strong: 12, Early: 8)
- Use higher Volume Filter (80%)
By thoroughly understanding and properly implementing the Enhanced KLSE Banker Flow Oscillator, traders can gain a significant edge in identifying institutional money flow and making more informed trading decisions, particularly in the Malaysian stock market.
Market DNA: Structure, Volume, Range, and SessionsMarket DNA: Structure, Volume, Range, and Sessions**
The Market DNA indicator combines market structure, volume analysis, trading ranges, and global trading sessions into a single, comprehensive tool for traders. It helps identify key price levels, volume patterns, consolidation phases, and active market periods, enabling informed trading decisions.
Market Structure Detects swing highs and lows using `ta.pivothigh` and `ta.pivotlow`, plotting them as red/green triangles to highlight support/resistance and trend reversals.
- Fractal Volume Zones (FVG): Highlights areas of significant buying/selling pressure by comparing current volume to an average over a lookback period; high-volume zones are marked with a semi-transparent blue background.
- Trading Range: Defines a price channel using the Average True Range (ATR) and a multiplier, creating upper/lower bands to identify consolidation, breakouts, and potential trade levels.
- Market Sessions: Highlights major global trading sessions (Asia, Europe, US) with colored backgrounds (purple, teal, yellow) to indicate liquidity and volatility shifts.
How It Works
- Swing points help analyze trends and reversals.
- FVG confirms price movements with high volume for stronger signals.
- Trading range bands assist in identifying breakout opportunities and setting stops/take-profits.
- Session highlights allow traders to adapt strategies based on regional activity.
Customization
- Adjust `swing_length` for sensitivity in detecting turning points.
- Modify `volume_lookback` to control volume averaging.
- Tune `range_multiplier` for wider/narrower trading bands.
- Enable/disable session highlighting via `session_highlight`.
Use Cases
- Identify trends and key levels using swing points and FVG.
- Spot breakout opportunities with trading range bands.
- Adapt strategies to regional trading sessions for optimal timing.
This all-in-one indicator provides a clear, customizable view of the market, empowering traders to make data-driven decisions across asset classes and timeframes.
Sniper TradingSniper Trader Indicator Overview
Sniper Trader is a comprehensive trading indicator designed to assist traders by providing valuable insights and alerting them to key market conditions. The indicator combines several technical analysis tools and provides customizable inputs for different strategies and needs.
Here’s a detailed breakdown of all the components and their functions in the Sniper Trader indicator:
1. MACD (Moving Average Convergence Divergence)
The MACD is a trend-following momentum indicator that helps determine the strength and direction of the current trend. It consists of two lines:
MACD Line (Blue): Calculated by subtracting the long-term EMA (Exponential Moving Average) from the short-term EMA.
Signal Line (Red): The EMA of the MACD line, typically set to 9 periods.
What does it do?
Buy Signal: When the MACD line crosses above the signal line, it generates a buy signal.
Sell Signal: When the MACD line crosses below the signal line, it generates a sell signal.
Zero Line Crossings: Alerts are triggered when the MACD line crosses above or below the zero line.
2. RSI (Relative Strength Index)
The RSI is a momentum oscillator used to identify overbought or oversold conditions in the market.
Overbought Level (Red): The level above which the market might be considered overbought, typically set to 70.
Oversold Level (Green): The level below which the market might be considered oversold, typically set to 30.
What does it do?
Overbought Signal: When the RSI crosses above the overbought level, it’s considered a signal that the asset may be overbought.
Oversold Signal: When the RSI crosses below the oversold level, it’s considered a signal that the asset may be oversold.
3. ATR (Average True Range)
The ATR is a volatility indicator that measures the degree of price movement over a specific period (14 bars in this case). It provides insights into how volatile the market is.
What does it do?
The ATR value is plotted on the chart and provides a reference for potential market volatility. It's used to detect flat zones, where the price may not be moving significantly, potentially indicating a lack of trends.
4. Support and Resistance Zones
The Support and Resistance Zones are drawn by identifying key swing highs and lows over a user-defined look-back period.
Support Zone (Green): Identifies areas where the price has previously bounced upwards.
Resistance Zone (Red): Identifies areas where the price has previously been rejected or reversed.
What does it do?
The indicator uses swing highs and lows to define support and resistance zones and highlights these areas on the chart. This helps traders identify potential price reversal points.
5. Alarm Time
The Alarm Time feature allows you to set a custom time for the indicator to trigger an alarm. The time is based on Eastern Time and can be adjusted directly in the inputs tab.
What does it do?
It triggers an alert at a user-defined time (for example, 4 PM Eastern Time), helping traders close positions or take specific actions at a set time.
6. Market Condition Display
The Market Condition Display shows whether the market is in a Bullish, Bearish, or Flat state based on the MACD line’s position relative to the signal line.
Bullish (Green): The market is in an uptrend.
Bearish (Red): The market is in a downtrend.
Flat (Yellow): The market is in a range or consolidation phase.
7. Table for Key Information
The indicator includes a customizable table that displays the current market condition (Bull, Bear, Flat). The table is placed at a user-defined location (top-left, top-right, bottom-left, bottom-right), and the appearance of the table can be adjusted for text size and color.
8. Background Highlighting
Bullish Reversal: When the MACD line crosses above the signal line, the background is shaded green to highlight the potential for a trend reversal to the upside.
Bearish Reversal: When the MACD line crosses below the signal line, the background is shaded red to highlight the potential for a trend reversal to the downside.
Flat Zone: A flat zone is identified when volatility is low (ATR is below the average), and the background is shaded orange to signal periods of low market movement.
Key Features:
Customizable Time Inputs: Adjust the alarm time based on your local time zone.
User-Friendly Table: Easily view market conditions and adjust display settings.
Comprehensive Alerts: Receive alerts for MACD crossovers, RSI overbought/oversold conditions, flat zones, and the custom alarm time.
Support and Resistance Zones: Drawn automatically based on historical price action.
Trend and Momentum Indicators: Utilize the MACD and RSI for identifying trends and market conditions.
How to Use Sniper Trader:
Set Your Custom Time: Adjust the alarm time to match your trading schedule.
Monitor Market Conditions: Check the table for real-time market condition updates.
Use MACD and RSI Signals: Watch for MACD crossovers and RSI overbought/oversold signals.
Watch for Key Zones: Pay attention to the support and resistance zones and background highlights to identify market turning points.
Set Alerts: Use the built-in alerts to notify you of buy/sell signals or when it’s time to take action at your custom alarm time.
Liquidity Sweep Filter [AlgoAlpha]Unlock a deeper understanding of market liquidity with the Liquidity Sweep Filter by AlgoAlpha. This indicator identifies liquidity sweeps, highlighting key price levels where large liquidations have occurred. By visualizing major and minor liquidation events, traders can better anticipate potential reversals and market structure shifts, making this an essential tool for those trading in volatile conditions.
Key Features :
🔍 Liquidity Sweep Detection – Identifies and highlights areas where liquidity has been swept, distinguishing between major and minor liquidation events.
📊 Volume Profile Integration – Displays a volume profile overlay, helping traders spot high-activity price zones where the market is likely to react.
📈 Trend-Based Filtering – Utilizes an adaptive trend detection algorithm to refine liquidity sweeps based on market direction, reducing noise.
🎨 Customizable Visualization – Modify colors, thresholds, and display settings to tailor the indicator to your trading style.
🔔 Alerts for Liquidity Sweeps & Trend Changes – Stay ahead of the market by receiving alerts when significant liquidity events or trend shifts occur.
How to Use:
🛠 Add the Indicator : Add the Liquidity Sweep Filter to your chart and configure the settings based on your preferred sensitivity. Adjust the major sweep threshold to filter out smaller moves.
📊 Analyze Liquidity Zones and trend direction : Look for liquidation levels where large buy or sell stops have been triggered. Major sweeps indicate strong reactions, while minor sweeps show gradual liquidity absorption. You can also see which levels are high in liquidity by the transparency of the levels.
🔔 Set-Up Alerts : Use the in-built alerts so you don't miss a trading opportunity
How It Works :
The Liquidity Sweep Filter detects liquidity events by tracking swing highs and lows (defined as a pivot where neighboring candles are lower/higher than it) where traders are likely to have placed stop-loss orders. It evaluates volume and price action, marking areas where liquidity has been absorbed by the market. Additionally, the integrated trend filter ensures that only relevant liquidity sweeps are highlighted based on market direction, lows in an uptrend and highs in a downtrend. The trend filter works by calculating a basis, and defining trend shifts when the closing price crosses over the upper or lower bands.The included volume profile further enhances analysis by displaying key trading zones where price may react.
Market Structure HH, HL, LH and LLMarket Structure Indicator (HH, HL, LH, LL) – Explanation and Usage
Overview:
This indicator is designed to detect and visualize market structure shifts by identifying Higher Highs (HH), Higher Lows (HL), Lower Highs (LH), and Lower Lows (LL). It plots a ZigZag structure to mark trend changes, helping traders analyze price swings and market direction.
Indicator Logic:
The indicator operates based on ZigZag swing points to define trend shifts and structure changes.
Identifying Market Swings:
It finds local highs and lows using the ZigZag Length (zigzag_len), which defines how many bars back to check for a new swing high/low.
If the current high is the highest over zigzag_len periods, it marks it as a swing high.
If the current low is the lowest over zigzag_len periods, it marks it as a swing low.
Determining Market Structure:
Uptrend: Higher Highs (HH) & Higher Lows (HL)
Downtrend: Lower Lows (LL) & Lower Highs (LH)
The script continuously tracks the last two highs (h0, h1) and last two lows (l0, l1) to classify the current market structure.
Visual Elements:
ZigZag Line (Optional): Connects major swing highs and lows for trend visualization.
Labels (HH, HL, LH, LL):
HH (Higher High) – Price is making new highs → Uptrend Continuation.
HL (Higher Low) – Price forms a higher bottom → Uptrend Confirmation.
LL (Lower Low) – Price is making new lows → Downtrend Continuation.
LH (Lower High) – Price forms a lower top → Downtrend Confirmation.
Breakout Confirmation with Fibonacci Factor (Optional)
The indicator includes an option to confirm breakouts using the fib_factor, which ensures price moves beyond a certain retracement level.
How to Use This Indicator in Trading:
1. Identifying Trends & Trend Reversals
Uptrend: Look for a sequence of HH and HL.
Downtrend: Look for a sequence of LL and LH.
Trend Reversal: If price transitions from HH-HL to LH-LL, it signals a shift from an uptrend to a downtrend (and vice versa).
2. Confirming Entry & Exit Points
Buy Entry (Long Position)
Enter after a Higher Low (HL) is confirmed in an uptrend.
Combine with support zones or moving averages for confirmation.
Sell Entry (Short Position)
Enter after a Lower High (LH) is confirmed in a downtrend.
Combine with resistance zones or moving averages for confirmation.
Exit Strategy
Exit long trades when price fails to make a HH and forms an LH instead.
Exit short trades when price fails to make a LL and forms an HL instead.
3. Spotting Breakouts & Order Blocks
The Fib Factor setting allows traders to filter false breakouts by confirming price movement beyond a retracement threshold.
Potential Order Blocks can be identified by looking at the last major swing point before a breakout.
Benefits of This Indicator for Traders
✅ Trend Identification: Helps traders quickly determine if the market is in an uptrend or downtrend.
✅ Clear Market Structure Labels: Easily visualizes Higher Highs, Higher Lows, Lower Highs, and Lower Lows.
✅ Avoids Noise: The ZigZag algorithm removes small fluctuations and focuses on significant market movements.
✅ Assists with Entry & Exit Decisions: Provides objective signals for trend continuation or reversals.
✅ Works in All Markets: Useful for stocks, forex, crypto, and futures trading.
Would you like me to add additional features like Order Blocks, Breakout Confirmation, or Alerts to improve this indicator? 🚀
Swing Profile Analyzer [ChartPrime]Swing Profile Analyzer
The Swing Profile Analyzer is a comprehensive tool designed to provide traders with valuable insights into swing frequency profiles, enabling them to identify key price levels and areas of market interest.
⯁ KEY FEATURES
Swing Frequency Profiles
Automatically plots frequency profiles for each swing, highlighting price distribution and key levels of significance.
Point of Control (POC) Line
Marks the price level with the highest number of closes within a swing, acting as a key area for potential price reactions.
Customizable Trend Display
Allows users to toggle between displaying profiles for bullish swings, bearish swings, or both, offering tailored analysis.
Integrated ZigZag Lines
Visualizes swing highs and lows, providing a clear picture of market trends and reversals.
Dynamic Profile Visualization
Profiles are color-coded to indicate the frequency of closes, with the highest value bins distinctly marked for easy recognition.
Max Frequency Highlight
Displays numerical values for the most active price level within each profile, showing how many closes occurred at the peak bin.
Updates only after swing formed
Profiles and POC lines automatically appear after swing is done
⯁ HOW TO USE
Identify Critical Price Levels
Use the POC line and frequency distribution to locate levels where price is likely to react or consolidate.
Analyze Swing Characteristics
Observe swing profiles to understand the strength, duration, and behavior of market trends.
Plan Entries and Exits
Leverage significant price levels and high-frequency bins to make more informed trading decisions.
Focus on Specific Trends
Filter profiles to analyze bullish or bearish swings based on your trading strategy.
⯁ CONCLUSION
The Swing Profile Analyzer is an essential tool for traders seeking to understand price dynamics within market swings. By combining frequency profiles, POC levels, and trend visualization, it enhances your ability to interpret and act on market movements effectively.
Dow Theory Swing Trading-DexterThis Pine Script strategy that implements a basic price action-based trading system inspired by Dow Theory, focusing on swing highs and swing lows. This strategy will generate buy and sell signals based on the formation of higher highs (HH) and higher lows (HL) for an uptrend, and lower highs (LH) and lower lows (LL) for a downtrend.
Swing Highs and Swing Lows:
The script identifies swing highs and swing lows using the ta.highest and ta.lowest functions over a specified lookback period.
A swing high is identified when the high of the current bar is the highest high over the lookback period.
A swing low is identified when the low of the current bar is the lowest low over the lookback period.
Trend Detection:
An uptrend is detected when the current low is higher than the last identified swing low.
A downtrend is detected when the current high is lower than the last identified swing high.
Buy and Sell Signals:
A buy signal is generated when the price closes above the last swing high during an uptrend.
A sell signal is generated when the price closes below the last swing low during a downtrend.
Plotting:
Swing highs and swing lows are plotted on the chart using plotshape.
Buy and sell signals are also plotted on the chart for visual reference.
How to Use:
Copy and paste the script into the Pine Script editor in TradingView.
Adjust the lookback period as needed to suit your trading style and timeframe.
Apply the script to your chart and it will generate buy and sell signals based on the price action.
NOTE: Please uncheck the all the unwanted symbol from chart for clear view .
OBV Divergence Indicator [TradingFinder] On-Balance Vol Reversal🔵 Introduction
The On-Balance Volume (OBV) indicator, introduced by Joe Granville in 1963, is a powerful technical analysis tool used to measure buying and selling pressure based on trading volume and price.
By aggregating trading volume—adding it on positive days and subtracting it on negative days—OBV creates a cumulative line that reflects market volume pressure, making it valuable for confirming trends, identifying entry and exit points, and forecasting potential price movements.
Divergences between price and OBV often provide significant signals. A bearish divergence occurs when the price forms higher highs while the OBV line forms lower highs. This discrepancy indicates that upward momentum is weakening, increasing the likelihood of a downward trend.
In contrast, a bullish divergence happens when the price makes lower lows, but the OBV line forms higher lows. This suggests increasing buying pressure and the potential for an upward trend reversal.
For instance, if the price is rising but the OBV trendline is falling, it may signal a bearish divergence, warning of a possible price decline. Conversely, if the price is falling while the OBV line is rising, this could signal a bullish divergence, indicating a possible price recovery. These signals are particularly useful for identifying market turning points.
OBV often acts as a leading indicator, moving ahead of price changes. For example, a rising OBV alongside stable or declining prices can signal an impending upward breakout.
Conversely, a declining OBV with rising prices may indicate that the current uptrend is losing strength. Traders using this strategy often consider entering positions at breakout levels while setting stop losses near recent swing highs or lows to manage risk effectively.
This integration highlights how OBV divergences can provide actionable insights for predicting price movements and managing trades efficiently.
Bullish Divergence :
Bearish Divergence :
🔵 How to Use
The OBV indicator, as a cumulative tool, assists analysts in comparing volume and price changes to identify new trends and key levels for entering or exiting trades. Beyond confirming existing trends, it is particularly effective in analyzing positive and negative divergences between price and volume, providing valuable signals for trading decisions.
🟣 Bullish Divergence
A bullish divergence occurs when the price continues its downward or stable trend, but the OBV line starts rising, forming a higher low compared to its previous low. This suggests increasing volume on up days relative to down days and often signals a reversal to the upside.
For instance, if an asset's price stabilizes near a support level but the OBV line shows an upward trend, this divergence could present an opportunity to enter a long position.
🟣 Bearish Divergence
A bearish divergence occurs when the price forms higher highs, but the OBV line declines, creating lower highs compared to previous peaks. This indicates decreasing volume on up days relative to down days and often acts as a warning for a reversal to the downside.
For example, if an asset’s price approaches a resistance level while OBV starts declining, this divergence may signal the beginning of a downtrend and could indicate a good time to exit long trades or enter short positions.
🔵 Setting
Period : The "Period" setting allows you to define the number of bars or intervals for "Periodic" and "EMA" modes. A shorter period captures more short-term movements, while a longer period smooths out the fluctuations and provides a broader view of market trends.
You can enable or disable labels to highlight key levels or divergences and tables to show numerical details like values and divergence types. These options allow for a customized chart display.
🔵 Table
The following table breaks down the main features of the oscillator. It covers four critical categories: Exist, Consecutive, Divergence Quality, and Change Phase Indicator.
Exist : If divergence is detected, a "+" will appear in this row.
Consecutive: Shows the number of consecutive divergences that have formed in a short period.
Divergence Quality : Evaluates the quality of the divergence based on the number of occurrences. One is labeled "Normal," two are "Good," and three or more are considered "Strong."
Change Phase Indicator : If a phase change is detected between two oscillation peaks, this is marked in the table.
🔵 Conclusion
The OBV (On Balance Volume) indicator is a simple yet effective tool in technical analysis that combines volume and price changes to provide a comprehensive view of market buying and selling pressure. By identifying positive and negative divergences, OBV enables analysts to detect early signs of trend reversals and refine their trading strategies.
Divergences in OBV often precede price changes, making it a leading indicator for predicting market movements. Using OBV alongside other technical tools can enhance decision-making accuracy and help traders identify better entry and exit points. However, it is essential to consider the limitations of OBV, such as the potential for signal errors and the impact of sudden news events.
Ultimately, OBV serves as a complementary tool in technical analysis, aiding in trend identification, signal confirmation, and risk management. A thoughtful application of this indicator, in combination with other analytical tools, can create valuable opportunities for profiting in financial markets.
Market Structure V3Indicator Description:
The Market Structure indicator is a unique and innovative tool for identifying and visualizing key market structures based on dynamic swing highs and lows. This indicator stands apart from similar tools by utilizing a distinct methodology for updating levels and identifying trends, ensuring precision and flexibility in market analysis.
Key Features of Uniqueness:
1. No Fixed Lookback Periods for Extremum Detection:
- Unlike most indicators that rely on a predefined number of candles (lookback period) to determine highs or lows, this script dynamically updates levels based solely on price action.
- A new high (resistance) or low (support) is confirmed only when the closing price breaks above the previous high or below the previous low, representing the last significant extremums .
- This approach eliminates arbitrary lookback-based restrictions, allowing the indicator to adapt seamlessly to different market conditions and timeframes.
2. Dynamic Level Adjustments:
- Levels are recalculated and adjusted in real time as new price action unfolds, providing traders with highly accurate and relevant support and resistance levels.
- The upper and lower bounds serve as dynamic anchors for trend analysis, updating only when a confirmed breakout occurs.
3. Fractal and Trend-Driven Logic:
- The script inherently respects the fractal nature of price movements by focusing on confirmed breakouts of previous significant extremums , avoiding reliance on shorter-term noise.
- This makes the indicator particularly effective for identifying true trend reversals and continuations.
4. Visual Clarity and Structure Mapping:
- The indicator labels the following structural points directly on the chart:
- **Higher Highs (HH)** for uptrend confirmation.
- **Lower Highs (LH)** for potential trend weakening.
- **Lower Lows (LL)** for downtrend confirmation.
- **Higher Lows (HL)** for potential trend reversals.
- Levels and labels are updated dynamically and accurately reflect the market's structural evolution.
5. Clean and Noise-Free Analysis:
- The absence of arbitrary inputs (e.g., lookback periods) ensures the indicator focuses only on meaningful price action, reducing false signals.
- Works seamlessly across all instruments and timeframes without requiring constant parameter adjustments.
6. Highly Adaptable:
- Suitable for any financial market, including stocks, forex, and cryptocurrencies.
- Performs equally well on all timeframes, from intraday to long-term analysis.
How the Indicator Works:
1. Dynamic Level Updates :
- The indicator evaluates price action in real time and identifies significant levels based on breakouts above previous highs or below previous lows.
- Upper Bound (Resistance) : Updated only when the closing price exceeds the previous significant high.
- Lower Bound (Support) : Updated only when the closing price falls below the previous significant low.
2. Trend Determination:
- Identifies and marks structural points (HH, LH, LL, HL) as trends develop.
- Swing points are updated dynamically without relying on fixed lookback parameters, ensuring that levels reflect the true market structure.
3. Confirmation Logic:
- The script uses a user-configurable parameter `Extremum confirmation bars count` to refine the process of confirming significant swing points.
- This ensures flexibility in adapting to different market conditions while maintaining precision in level detection.
Unique Advantages Over Similar Indicators:
1. No Arbitrary Inputs:
- Unlike other indicators that require users to set the number of candles for extremum detection, this script eliminates the need for such settings, relying solely on actual price breakouts.
2. Dynamic Real-Time Adjustments:
- The logic of level updates is event-driven (based on closing prices crossing key levels), making it more reactive and precise compared to static lookback-based calculations.
3. Enhanced Structural Clarity:
- Focuses exclusively on confirmed significant levels , avoiding clutter and ambiguity often seen in lookback-based indicators.
4. Fractal and Self-Adaptive Nature:
- The script inherently respects market fractality, making it effective across all timeframes and market conditions.
Practical Applications:
- Trend Identification:
Helps identify whether the market is in an uptrend, downtrend, or consolidation phase.
- Entry and Exit Points:
Use swing highs and lows as references for entering or exiting positions.
- Support and Resistance Levels:
Dynamic levels provide actionable areas for placing stop-losses and take-profits.
Input Parameters:
- Extremum Confirmation Bars Count:
Adjusts the sensitivity of extremum detection. The higher the value, the more conservative the indicator becomes in confirming levels. Default is `3`.
Chart Setup and Usage Notes:
1. Clean Visualization:
- Ensure a clean chart for better visibility of structural points and levels.
- Do not overlay with additional indicators unless explicitly required.
2. User Guidance:
- Combine this indicator with volume analysis or other confirmation tools to enhance decision-making.
Disclaimer:
This indicator is for educational purposes only and does not constitute financial advice. Always perform your own analysis and trade responsibly.
All Chart Patterns [theEccentricTrader]█ OVERVIEW
This indicator automatically draws and sends alerts for all of the chart patterns in my public library as they occur. The patterns included are as follows:
• Ascending Broadening
• Broadening
• Descending Broadening
• Double Bottom
• Double Top
• Triple Bottom
• Triple Top
• Bearish Elliot Wave
• Bullish Elliot Wave
• Bearish Alternate Flag
• Bullish Alternate Flag
• Bearish Flag
• Bullish Flag
• Bearish Ascending Head and Shoulders
• Bullish Ascending Head and Shoulders
• Bearish Descending Head and Shoulders
• Bullish Descending Head and Shoulders
• Bearish Head and Shoulders
• Bullish Head and Shoulders
• Bearish Pennant
• Bullish Pennant
• Ascending Wedge
• Descending Wedge
• Wedge
█ CONCEPTS
Green and Red Candles
• A green candle is one that closes with a close price equal to or above the price it opened.
• A red candle is one that closes with a close price that is lower than the price it opened.
Swing Highs and Swing Lows
• A swing high is a green candle or series of consecutive green candles followed by a single red candle to complete the swing and form the peak.
• A swing low is a red candle or series of consecutive red candles followed by a single green candle to complete the swing and form the trough.
Peak and Trough Prices
• The peak price of a complete swing high is the high price of either the red candle that completes the swing high or the high price of the preceding green candle, depending on which is higher.
• The trough price of a complete swing low is the low price of either the green candle that completes the swing low or the low price of the preceding red candle, depending on which is lower.
Historic Peaks and Troughs
The current, or most recent, peak and trough occurrences are referred to as occurrence zero. Previous peak and trough occurrences are referred to as historic and ordered numerically from right to left, with the most recent historic peak and trough occurrences being occurrence one.
Upper Trends
• A return line uptrend is formed when the current peak price is higher than the preceding peak price.
• A downtrend is formed when the current peak price is lower than the preceding peak price.
• A double-top is formed when the current peak price is equal to the preceding peak price.
Lower Trends
• An uptrend is formed when the current trough price is higher than the preceding trough price.
• A return line downtrend is formed when the current trough price is lower than the preceding trough price.
• A double-bottom is formed when the current trough price is equal to the preceding trough price.
Range
The range is simply the difference between the current peak and current trough prices, generally expressed in terms of points or pips.
Retracement and Extension Ratios
Retracement and extension ratios are calculated by dividing the current range by the preceding range and multiplying the answer by 100. Retracement ratios are those that are equal to or below 100% of the preceding range and extension ratios are those that are above 100% of the preceding range.
Measurement Tolerances
Tolerance refers to the allowable variation or deviation from a specific value or dimension. It is the range within which a particular measurement is considered to be acceptable or accurate. I have applied this concept in my pattern detection logic and have set default tolerances where applicable, as perfect patterns are, needless to say, very rare.
Chart Patterns
Generally speaking price charts are nothing more than a series of swing highs and swing lows. When demand outweighs supply over a period of time prices swing higher and when supply outweighs demand over a period of time prices swing lower. These swing highs and swing lows can form patterns that offer insight into the prevailing supply and demand dynamics at play at the relevant moment in time.
‘Let us assume… that you the reader, are not a member of that mysterious inner circle known to the boardrooms as “the insiders”… But it is fairly certain that there are not nearly so many “insiders” as amateur trader supposes and… It is even more certain that insiders can be wrong… Any success they have, however, can be accomplished only by buying and selling… hey can do neither without altering the delicate poise of supply and demand that governs prices. Whatever they do is sooner or later reflected on the charts where you… can detect it. Or detect, at least, the way in which the supply-demand equation is being affected… So, you do not need to be an insider to ride with them frequently… prices move in trends. Some of those trends are straight, some are curved; some are brief and some are long and continued… produced in a series of action and reaction waves of great uniformity. Sooner or later, these trends change direction; they may reverse (as from up to down), or they may be interrupted by some sort of sideways movement and then, after a time, proceed again in their former direction… when a price trend is in the process of reversal… a characteristic area or pattern takes shape on the chart, which becomes recognisable as a reversal formation… Needless to say, the first and most important task of the technical chart analyst is to learn to know the important reversal formations and to judge what they may signify in terms of trading opportunities’ (Edwards & Magee, 1948).
This is as true today as it was when Edwards and Magee were writing in the first half of the last Century, study your patterns and make judgements for yourself about what their implications truly are on the markets and timeframes you are interested in trading.
Over the years, traders have come to discover a multitude of chart and candlestick patterns that are supposed to pertain information on future price movements. However, it is never so clear cut in practice and patterns that where once considered to be reversal patterns are now considered to be continuation patterns and vice versa. Bullish patterns can have bearish implications and bearish patterns can have bullish implications. As such, I would highly encourage you to do your own backtesting.
There is no denying that chart patterns exist, but their implications will vary from market to market and timeframe to timeframe. So it is down to you as an individual to study them and make decisions about how they may be used in a strategic sense.
█ INPUTS
• Change pattern and label colours
• Show or hide patterns individually
• Adjust pattern ratios and tolerances
• Set or remove alerts for individual patterns
█ NOTES
I have decided to rename some of my previously published patterns based on the way in which the pattern completes. If the pattern completes on a swing high then the pattern is considered bearish, if the pattern completes on a swing low then it is considered bullish. This may seem confusing but it makes sense when you come to backtesting the patterns and want to use the most recent peak or trough prices as stop losses. Patterns that can complete on both a swing high and swing low are for such reasons treated as neutral, namely all broadening and wedge variations. I trust that it is quite self-evident that double and triple bottom patterns are considered bullish while double and triple top patterns are considered bearish, so I did not feel the need to rename those.
The patterns that have been renamed and what they have been renamed to, are as follows:
• Ascending Elliot Waves to Bearish Elliot Waves
• Descending Elliot Waves to Bullish Elliot Waves
• Ascending Head and Shoulders to Bearish Ascending Head and Shoulders
• Descending Head and Shoulders to Bearish Descending Head and Shoulders
• Head and Shoulders to Bearish Head and Shoulders
• Ascending Inverse Head and Shoulders to Bullish Ascending Head and Shoulders
• Descending Inverse Head and Shoulders to Bullish Descending Head and Shoulders
• Inverse Head and Shoulders to Bullish Head and Shoulders
You can test the patterns with your own strategies manually by applying the indicator to your chart while in bar replay mode and playing through the history. You could also automate this process with PineScript by using the conditions from my swing and pattern libraries as entry conditions in the strategy tester or your own custom made strategy screener.
█ LIMITATIONS
All green and red candle calculations are based on differences between open and close prices, as such I have made no attempt to account for green candles that gap lower and close below the close price of the preceding candle, or red candles that gap higher and close above the close price of the preceding candle. This may cause some unexpected behaviour on some markets and timeframes. I can only recommend using 24-hour markets, if and where possible, as there are far fewer gaps and, generally, more data to work with.
█ SOURCES
Edwards, R., & Magee, J. (1948) Technical Analysis of Stock Trends (10th edn). Reprint, Boca Raton, Florida: Taylor and Francis Group, CRC Press: 2013.
Price-Action Candles (Lower)What is a swing high or swing low?
Swing highs and lows are price extremes. For example say we set our swing length to 5. A candle that is a swing high with a swing length of 5 will have 5 bars to the left that are lower and 5 bars to the right that are lower. A candle that is a swing low with a swing length of 5 will have 5 bars to the left that are higher and 5 bars to the right that are higher.
How is the trend coloring calculated?
The trend coloring is calculated the exact same way as our trend candles study... by storing and comparing historical swing lows and swing highs.
The pinescript code goes as follows:
The pinescript code goes as follows:
var int trend = na
trend := ((hh and high >= psh) or close > csh) ? 1 : ((ll and low <= psl) or close < csl) ? -1 : lh or hl ? 0 : trend
What does that gibberish mean?
-Trend can be GREEN IF
- We have a higher high (current swing high is greater than the previous swing high) and the high is greater than the previous swing high
- OR The current close is greater than the current swing high
-Trend can be RED IF
- We have a lower low (current swing low is less than the previous swing low) and the low is less than the previous swing low
- OR The current close is less than the current swing low
-Trend can be YELLOW IF
- We have a new swing high and the new swing high is less than the previous swing high
- OR We have a new swing low and the new swing low is greater than the previous swing low
If none of the conditions above are true then we continue with whatever color the previous bar was.
What is repainting?
Repainting is "script behavior causing historical vs realtime calculations or plots to behave differently." That definition comes directly from Tradingview. If you want to read the full explanation you can visit it here www.tradingview.com . The price-action candles use swing highs and swing lows which need bars to the left (past) and bars to the right ("future") in order to confirm the swing level. Because of the need to wait for confirmation for swing levels the plot style can be repainting. The Price-Action Candles (Lower) indicator, or this indicator, has no repainting anywhere. We opt to not shift back the candle coloring which causes the repainting, but it is relevant to discuss since this indicator's sibling (Price-Action Candles) can have repainting labels.
Repaint
Here the labels are shifted back the price-action length. Repainting is not present in the Price-Candles (Lower) study, but can be found in this indicator's sibling (Price-Action Candles).
Non-Repaint
Here the labels are not shifted back or "repainted". Repainting is not present in the Price-Candles (Lower) study, but can be found in this indicator's sibling (Price-Action Candles).
Multi-timeframe Analysis
The users can view multi-timeframe historical price action trend via this lower study. Each timeframe is plotted as its own on the lower pane and you can determine what timeframe it is by the label next to the plot.
More examples
Pair the Price-Action Candles (Lower) indicator with our main price indicator that colors candles based on trend and can show price action labels.
Price-Action CandlesWhat is a swing high or swing low?
Swing highs and lows are price extremes. For example say we set our swing length to 5. A candle that is a swing high with a swing length of 5 will have 5 bars to the left that are lower and 5 bars to the right that are lower. A candle that is a swing low with a swing length of 5 will have 5 bars to the left that are higher and 5 bars to the right that are higher.
How are the trend candles calculated?
The trend candles are calculated by storing and comparing historical swing lows and swing highs.
The pinescript code goes as follows:
The pinescript code goes as follows:
var int trend = na
trend := ((hh and high >= psh) or close > csh) ? 1 : ((ll and low <= psl) or close < csl) ? -1 : lh or hl ? 0 : trend
What does that gibberish mean?
-Candle can be GREEN IF
- We have a higher high (current swing high is greater than the previous swing high) and the high is greater than the previous swing high
- OR The current close is greater than the current swing high
-Candle can be RED IF
- We have a lower low (current swing low is less than the previous swing low) and the low is less than the previous swing low
- OR The current close is less than the current swing low
-Candle can be YELLOW IF
- We have a new swing high and the new swing high is less than the previous swing high
- OR We have a new swing low and the new swing low is greater than the previous swing low
If none of the conditions above are true then we continue with whatever color the previous bar was.
What is repainting?
Repainting is "script behavior causing historical vs realtime calculations or plots to behave differently." That definition comes directly from Tradingview. If you want to read the full explanation you can visit it here www.tradingview.com . The price-action candles use swing highs and swing lows which need bars to the left (past) and bars to the right ("future") in order to confirm the swing level. Because of the need to wait for confirmation to for swing levels the plot style can be repainting. With the price-action candles indicator the only repainting part of the indicator is the labels. The price-action candles themselves WILL NOT REPAINT. The labels however can be set to repaint or not depending on the user preference. If the user opts to use repainting then the label location is shifted back by the length of the price-action. So if the "Price-Action Length" input is set to 10, and the user wants repainting, the swing high/low label will be shifted back 10 bars. If the user opts for no repainting, the label will not be shifted and instead show on the exact bar the swing level was confirmed.
Examples Below.
Repaint
Here the labels are shifted back the price-action length.
Non-Repaint
Here the labels are not shifted back because the input setting is set to not repaint.
Multi-timeframe Analysis
The users can view the trend from multiple different timeframes at once with a table displayed at the bottom of their charts. The timeframe can be lower or higher than the chart timeframe.
More examples
Be on the lookout for the Price Action Candles (Lower) indicator where you can view the multi-timeframe labels on a lower price grid in order to see the history over time!
Support and Resistance Signals MTF [LuxAlgo]The Support and Resistance Signals MTF indicator aims to identify undoubtedly one of the key concepts of technical analysis Support and Resistance Levels and more importantly, the script aims to capture and highlight major price action movements, such as Breakouts , Tests of the Zones , Retests of the Zones , and Rejections .
The script supports Multi-TimeFrame (MTF) functionality allowing users to analyze and observe the Support and Resistance Levels/Zones and their associated Signals from a higher timeframe perspective.
This script is an extended version of our previously published Support-and-Resistance-Levels-with-Breaks script from 2020.
Identification of key support and resistance levels/zones is an essential ingredient to successful technical analysis.
🔶 USAGE
Support and resistance are key concepts that help traders understand, analyze and act on chart patterns in the financial markets. Support describes a price level where a downtrend pauses due to demand for an asset increasing, while resistance refers to a level where an uptrend reverses as a sell-off happens.
The creation of support and resistance levels comes as a result of an initial imbalance of supply/demand, which forms what we know as a swing high or swing low. This script starts its processing using the swing highs/lows. Swing Highs/Lows are levels that many of the market participants use as a historical reference to place their trading orders (buy, sell, stop loss), as a result, those price levels potentially become and serve as key support and resistance levels.
One of the important features of the script is the signals it provides. The script follows the major price movements and highlights them on the chart.
🔹 Breakouts (non-repaint)
A breakout is a price moving outside a defined support or resistance level, the significance of the breakout can be measured by examining the volume. This script is not filtering them based on volume but provides volume information for the bar where the breakout takes place.
🔹 Retests
Retest is a case where the price action breaches a zone and then revisits the level breached.
🔹 Tests
Test is a case where the price action touches the support or resistance zones.
🔹 Rejections
Rejections are pin bar patterns with high trading volume.
Finally, Multi TimeFrame (MTF) functionality allows users to analyze and observe the Support and Resistance Levels/Zones and their associated Signals from a higher timeframe perspective.
🔶 SETTINGS
The script takes into account user-defined parameters to detect and highlight the zones, levels, and signals.
🔹 Support & Resistance Settings
Detection Timeframe: Set the indicator resolution, the users may examine higher timeframe detection on their chart timeframe.
Detection Length: Swing levels detection length
Check Previous Historical S&R Level: enables the script to check the previous historical levels.
🔹 Signals
Breakouts: Toggles the visibility of the Breakouts, enables customization of the color and the size of the visuals
Tests: Toggles the visibility of the Tests, enables customization of the color and the size of the visuals
Retests: Toggles the visibility of the Retests, enables customization of the color and the size of the visuals
Rejections: Toggles the visibility of the Rejections, enables customization of the color and the size of the visuals
🔹 Others
Sentiment Profile: Toggles the visibility of the Sentiment Profiles
Bullish Nodes: Color option for Bullish Nodes
Bearish Nodes: Color option for Bearish Nodes
🔶 RELATED SCRIPTS
Support-and-Resistance-Levels-with-Breaks
Buyside-Sellside-Liquidity
Liquidity-Levels-Voids
Brake Of Structure (BOS) By GadatasThis indicator is designed to identify and track swing highs and lows in a given market on any timeframe. It plots these swing highs and lows as solid lines on the chart. The indicator allows for customization of the line color and width and using another timeframe.
The indicator follows specific rules to determine when a new high or low is created. If the current range is considered bullish (meaning the most recent breakout was to the topside), the indicator will only update the low if a candle's body falls below the current low. However, if the current range is bearish (most recent breakout to the downside), the indicator will only update the high if a candle's body rises above the current high.
When a range is identified as bullish, the indicator will continue updating the high until a swing high is formed, denoting the high of the range. The high will only change if a candle's body surpasses the previous high. The low, on the other hand, will be updated based on the last time a candle's body falls below a previous candle's low. The lowest low after this condition is met will be assigned as the low of the range.
Conversely, when a range is identified as bearish, the indicator will continue updating the low until a swing low is formed, denoting the low of the range. The low will only change if a candle's body falls below the previous low. The high, in this case, will be updated based on the last time a candle's body rises above a previous candle's high. The highest high after this condition is met will be assigned as the high of the range.
Swing highs are determined by having lower highs to the left and right, while swing lows have higher lows to the left and right. These swings are used to determine the final high or low of a bullish or bearish range, respectively.
Tis Indicator differs from other indicators by incorporating this concept to track market structure. The indicator assumes that significant market players sell before making heavy purchases in bullish ranges and buy before selling heavily in bearish ranges. The lines on the chart represent prior highs and lows, as well as the current updated highs and lows based on this theory. By using this indicator, one can gain insights into the structure of price movement and potentially identify bullish or bearish continuations. It can also provide confluence when analyzing multiple timeframes to validate trend-following strategies.
Master Pattern [LuxAlgo]The Master Pattern indicator is derived from the framework proposed by Wyckoff and automatically displays major/minor patterns and their associated expansion lines on the chart.
Liquidity levels are also included and can be used as targets/stops. Note that the Liquidity levels are plotted retrospectively as they are based on pivots.
🔶 USAGE
The Master Pattern indicator detects contraction phases in the markets (characterized by a lower high and higher low). The resulting average from the latest swing high/low is used as expansion line. Price breaking the contraction range upwards highlights a bullish master pattern, while a break downward highlights a bearish master pattern.
During the expansion phase price can tend to be stationary around the expansion level. This phase is then often followed by the price significantly deviating from the expansion line, highlighting a markup phase.
Expansion lines can also be used as support/resistance levels.
🔹 Major/Minor Patterns
The script can classify patterns as major or minor patterns.
Major patterns occur when price breaks both the upper and lower extremity of a contraction range, with their contraction area highlighted with a border, while minor patterns have only a single extremity broken.
🔶 SETTINGS
Contraction Detection Lookback: Lookback used to detect the swing points used to detect the contraction range.
Liquidity Levels: Lookback for the swing points detection used as liquidity levels. Higher values return longer term liquidity levels.
Show Major Pattern: Display major patterns.
Show Minor Pattern: Display minor patterns.
Bullish Pennant Patterns [theEccentricTrader]█ OVERVIEW
This indicator automatically draws bullish pennant patterns and price projections derived from the ranges that constitute the patterns.
█ CONCEPTS
Green and Red Candles
• A green candle is one that closes with a close price equal to or above the price it opened.
• A red candle is one that closes with a close price that is lower than the price it opened.
Swing Highs and Swing Lows
• A swing high is a green candle or series of consecutive green candles followed by a single red candle to complete the swing and form the peak.
• A swing low is a red candle or series of consecutive red candles followed by a single green candle to complete the swing and form the trough.
Peak and Trough Prices (Basic)
• The peak price of a complete swing high is the high price of either the red candle that completes the swing high or the high price of the preceding green candle, depending on which is higher.
• The trough price of a complete swing low is the low price of either the green candle that completes the swing low or the low price of the preceding red candle, depending on which is lower.
Historic Peaks and Troughs
The current, or most recent, peak and trough occurrences are referred to as occurrence zero. Previous peak and trough occurrences are referred to as historic and ordered numerically from right to left, with the most recent historic peak and trough occurrences being occurrence one.
Broken and Unbroken Peaks and Troughs
Upon the completion of a new swing low the high of the green candle that completes the swing low will be above, below or equal to the current peak price. And similarly, upon the completion of a new swing high the low of the red candle that completes the swing high will be above, below or equal to the current trough price.
If the high price of the green candle that completes the current swing low is higher than or equal to the current peak price then the current peak is broken. If the high of the green candle that completes the current swing low is below the current peak price, then the current peak is unbroken.
Similarly, if the low price of the red candle that completes the current swing high is lower than or equal to the current trough price then the current trough is broken. If the low price of the red candle that completes the current swing high is above the current trough price, then the current trough is unbroken.
Range
The range is simply the difference between the current peak and current trough prices, generally expressed in terms of points or pips.
Upper Trends
• A return line uptrend is formed when the current peak price is higher than the preceding peak price.
• A downtrend is formed when the current peak price is lower than the preceding peak price.
• A double-top is formed when the current peak price is equal to the preceding peak price.
Lower Trends
• An uptrend is formed when the current trough price is higher than the preceding trough price.
• A return line downtrend is formed when the current trough price is lower than the preceding trough price.
• A double-bottom is formed when the current trough price is equal to the preceding trough price.
Muti-Part Upper and Lower Trends
• A multi-part return line uptrend begins with the formation of a new return line uptrend, or higher peak, and continues until a new downtrend, or lower peak, completes the trend.
• A multi-part downtrend begins with the formation of a new downtrend, or lower peak, and continues until a new return line uptrend, or higher peak, completes the trend.
• A multi-part uptrend begins with the formation of a new uptrend, or higher trough, and continues until a new return line downtrend, or lower trough, completes the trend.
• A multi-part return line downtrend begins with the formation of a new return line downtrend, or lower trough, and continues until a new uptrend, or higher trough, completes the trend.
Wave Cycles
A wave cycle is here defined as a complete two-part move between a swing high and a swing low, or a swing low and a swing high. The first swing high or swing low will set the course for the sequence of wave cycles that follow; for example a chart that begins with a swing low will form its first complete wave cycle upon the formation of the first complete swing high and vice versa.
Figure 1.
Retracement and Extension Ratios
Retracement and extension ratios are calculated by dividing the current range by the preceding range and multiplying the answer by 100. Retracement ratios are those that are equal to or below 100% of the preceding range and extension ratios are those that are above 100% of the preceding range.
Bullish and Bearish Pennant Patterns
• Bullish pennants are generally composed of three troughs and two peaks. The first peak being higher than the second peak and the first trough being lower than both the second and third troughs, with the third trough being higher than the second trough.
• Bearish pennants are generally composed of three peaks and two troughs. The first trough being lower than the second trough and the first peak being higher than both the second and third peaks, with third peak being lower than the second peak.
In this script I have used minimum and maximum retracement and extension ratios to set parameters for pattern identification:
• Wave 1 of the pattern, referred to as AB, is set to a minimum ratio of 100%.
• Wave 2 of the pattern, referred to as BC, is set to a maximum ratio of 30%.
• Wave 3 of the pattern, referred to as CD, has no ratio measurements but will always be below 100% by default.
• Wave 4 of the pattern, referred to as DE, has no ratio measurements but will always be below 100% by default.
█ FEATURES
Inputs
• Unbroken Peaks
• AB Minimum Ratio
• BC Maximum Ratio
• Pole Color
• Flag Color
• Extend Current Flag Lines
• Show Labels
• Label Color
• Show Projection Lines
• Extend Current Projection Lines
Alerts
Users can set alerts for when the patterns occur.
█ LIMITATIONS
All green and red candle calculations are based on differences between open and close prices, as such I have made no attempt to account for green candles that gap lower and close below the close price of the preceding candle, or red candles that gap higher and close above the close price of the preceding candle. This may cause some unexpected behaviour on some markets and timeframes. I can only recommend using 24-hour markets, if and where possible, as there are far fewer gaps and, generally, more data to work
Traffic Lights [theEccentricTrader]█ OVERVIEW
This indicator automatically draws higher timeframe support and resistance levels using current peak and trough prices. These prices are also displayed in a table which can be repositioned and resized at the user's discretion.
█ CONCEPTS
Green and Red Candles
• A green candle is one that closes with a close price equal to or above the price it opened.
• A red candle is one that closes with a close price that is lower than the price it opened.
Swing Highs and Swing Lows
• A swing high is a green candle or series of consecutive green candles followed by a single red candle to complete the swing and form the peak.
• A swing low is a red candle or series of consecutive red candles followed by a single green candle to complete the swing and form the trough.
Peak and Trough Prices (Basic)
• The peak price of a complete swing high is the high price of either the red candle that completes the swing high or the high price of the preceding green candle, depending on which is higher.
• The trough price of a complete swing low is the low price of either the green candle that completes the swing low or the low price of the preceding red candle, depending on which is lower.
Peak and Trough Prices (Advanced)
• The advanced peak price of a complete swing high is the high price of either the red candle that completes the swing high or the high price of the highest preceding green candle high price, depending on which is higher.
• The advanced trough price of a complete swing low is the low price of either the green candle that completes the swing low or the low price of the lowest preceding red candle low price, depending on which is lower.
Historic Peaks and Troughs
The current, or most recent, peak and trough occurrences are referred to as occurrence zero. Previous peak and trough occurrences are referred to as historic and ordered numerically from right to left, with the most recent historic peak and trough occurrences being occurrence one.
Range
The range is simply the difference between the current peak and current trough prices, generally expressed in terms of points or pips.
Support and Resistance
• Support refers to a price level where the demand for an asset is strong enough to prevent the price from falling further.
• Resistance refers to a price level where the supply of an asset is strong enough to prevent the price from rising further.
Support and resistance levels are important because they can help traders identify where the price of an asset might pause or reverse its direction, offering potential entry and exit points. For example, a trader might look to buy an asset when it approaches a support level , with the expectation that the price will bounce back up. Alternatively, a trader might look to sell an asset when it approaches a resistance level , with the expectation that the price will drop back down.
It's important to note that support and resistance levels are not always relevant, and the price of an asset can also break through these levels and continue moving in the same direction.
Major Traffic Lights
Major traffic light levels are determined using monthly (red solid lines), weekly (orange solid lines) and daily (green solid lines) peak and trough prices.
Minor Traffic Lights
Minor traffic light levels are determined using 4H (red dashed lines), 1H (orange dashed lines) and 15-minute (green dashed lines) peak and trough prices.
█ FEATURES
Inputs
• Advanced Peak and Trough Price Logic
• Show Minor
• Show Major
• Extend Line Type
• Show Table
• Position
• Text Size
If the current timeframe is higher than any of the traffic light timeframes the relevant lines and table cells will automatically be hidden. As can be seen in Figure 1. below, the intraday lines and table cells will only appear if the user scales down to a low enough timeframe.
Figure 1.
█ LIMITATIONS
The green and red candle calculations are based solely on differences between open and close prices, as such I have made no attempt to account for green candles that gap lower and close below the close price of the preceding candle, or red candles that gap higher and close above the close price of the preceding candle. I can only recommend using 24-hour markets, if and where possible, as there are far fewer gaps and, generally, more data to work with. Alternatively, you can replace the scenarios with your own logic to account for the gap anomalies, if you are feeling up to the challenge.
It is also worth mentioning that the minor levels will not be displayed if the user selects a custom timeframe between 31 and 44 minutes, and between 46 and 59. All other timeframes should work as intended.
Wavemeter [theEccentricTrader]█ OVERVIEW
This indicator is a representation of my take on price action based wave cycle theory. The indicator counts the number of confirmed wave cycles, keeps a rolling tally of the average wave length, wave height and frequency, and displays the statistics in a table. The indicator also displays the current wave measurements as an optional feature.
█ CONCEPTS
Green and Red Candles
• A green candle is one that closes with a high price equal to or above the price it opened.
• A red candle is one that closes with a low price that is lower than the price it opened.
Swing Highs and Swing Lows
• A swing high is a green candle or series of consecutive green candles followed by a single red candle to complete the swing and form the peak.
• A swing low is a red candle or series of consecutive red candles followed by a single green candle to complete the swing and form the trough.
Peak and Trough Prices (Basic)
• The peak price of a complete swing high is the high price of either the red candle that completes the swing high or the high price of the preceding green candle, depending on which is higher.
• The trough price of a complete swing low is the low price of either the green candle that completes the swing low or the low price of the preceding red candle, depending on which is lower.
Historic Peaks and Troughs
The current, or most recent, peak and trough occurrences are referred to as occurrence zero. Previous peak and trough occurrences are referred to as historic and ordered numerically from right to left, with the most recent historic peak and trough occurrences being occurrence one.
Wave Cycles
A wave cycle is here defined as a complete two-part move between a swing high and a swing low, or a swing low and a swing high. As can be seen in the example above, the first swing high or swing low will set the course for the sequence of wave cycles that follow; a chart that begins with a swing low will form its first complete wave cycle upon the formation of the first complete swing high and vice versa.
Wave Length
Wave length is here measured in terms of bar distance between the start and end of a wave cycle. For example, if the current wave cycle ends on a swing low the wave length will be the difference in bars between the current swing low and current swing high. In such a case, if the current swing low completes on candle 100 and the current swing high completed on candle 95, we would simply subtract 95 from 100 to give us a wave length of 5 bars.
Average wave length is here measured in terms of total bars as a proportion as total waves. The average wavelength is calculated by dividing the total candles by the total wave cycles.
Wave Height
Wave height is here measured in terms of current range. For example, if the current peak price is 100 and the current trough price is 80, the wave height will be 20.
Amplitude
Amplitude is here measured in terms of current range divided by two. For example if the current peak price is 100 and the current trough price is 80, the amplitude would be calculated by subtracting 80 from 100 and dividing the answer by 2 to give us an amplitude of 10.
Frequency
Frequency is here measured in terms of wave cycles per second (Hertz). For example, if the total wave cycle count is 10 and the amount of time it has taken to complete these 10 cycles is 1-year (31,536,000 seconds), the frequency would be calculated by dividing 10 by 31,536,000 to give us a frequency of 0.00000032 Hz.
Range
The range is simply the difference between the current peak and current trough prices, generally expressed in terms of points or pips.
█ FEATURES
Inputs
Show Sample Period
Start Date
End Date
Position
Text Size
Show Current
Show Lines
Table
The table is colour coded, consists of two columns and, as many as, nine rows. Blue cells display the total wave cycle count and average wave measurements. Green cells display the current wave measurements. And the final row in column one, coloured black, displays the sample period. Both current wave measurements and sample period cells can be hidden at the user’s discretion.
Lines
For a visual aid to the wave cycles, I have added a blue line that traces out the waves on the chart. These lines can be hidden at the user’s discretion.
█ HOW TO USE
The indicator is intended for research purposes, strategy development and strategy optimisation. I hope it will be useful in helping to gain a better understanding of the underlying dynamics at play on any given market and timeframe.
For example, the indicator can be used to compare the current range and frequency with the average range and frequency, which can be useful for gauging current market conditions versus historic and getting a feel for how different markets and timeframes behave.
█ LIMITATIONS
Some higher timeframe candles on tickers with larger lookbacks such as the DXY , do not actually contain all the open, high, low and close (OHLC) data at the beginning of the chart. Instead, they use the close price for open, high and low prices. So, while we can determine whether the close price is higher or lower than the preceding close price, there is no way of knowing what actually happened intra-bar for these candles. And by default candles that close at the same price as the open price, will be counted as green. You can avoid this problem by utilising the sample period filter.
The green and red candle calculations are based solely on differences between open and close prices, as such I have made no attempt to account for green candles that gap lower and close below the close price of the preceding candle, or red candles that gap higher and close above the close price of the preceding candle. I can only recommend using 24-hour markets, if and where possible, as there are far fewer gaps and, generally, more data to work with. Alternatively, you can replace the scenarios with your own logic to account for the gap anomalies, if you are feeling up to the challenge.
It is also worth noting that the sample size will be limited to your Trading View subscription plan. Premium users get 20,000 candles worth of data, pro+ and pro users get 10,000, and basic users get 5,000. If upgrading is currently not an option, you can always keep a rolling tally of the statistics in an excel spreadsheet or something of the like.
TJR asia session sweep//@version=5
strategy("TJR asia session sweep", "TJR Asia Sweep", overlay=true, max_lines_count=500, max_labels_count=500)
// Input settings
show_asian = input.bool(true, "Show Asian Session", group="Visual Settings")
show_london = input.bool(true, "Show London Session", group="Visual Settings")
show_swing_points = input.bool(true, "Show Asian Swing Points", group="Visual Settings")
show_market_structure = input.bool(true, "Show Market Structure", group="Visual Settings")
show_bos = input.bool(true, "Show Break of Structure", group="Visual Settings")
// Session Time Settings
asian_start_hour_input = input.int(22, "Asian Session Start Hour", minval=0, maxval=23, group="Session Times")
asian_end_hour_input = input.int(3, "Asian Session End Hour", minval=0, maxval=23, group="Session Times")
london_start_hour_input = input.int(3, "London Session Start Hour", minval=0, maxval=23, group="Session Times")
london_end_hour_input = input.int(8, "London Session End Hour", minval=0, maxval=23, group="Session Times")
session_timezone = input.string("America/New_York", "Session Timezone", options= , group="Session Times")
// Risk Management Settings
use_atr_sl = input.bool(false, "Use ATR Multiplier for Stop Loss", group="Risk Management")
atr_length = input.int(14, "ATR Length", minval=1, maxval=50, group="Risk Management")
atr_multiplier = input.float(2.0, "ATR Multiplier for Stop Loss", minval=0.5, maxval=10.0, group="Risk Management")
force_london_close = input.bool(true, "Force Close at London Session End", group="Risk Management")
cutoff_minutes = input.int(60, "Minutes Before Session End to Stop New Trades", minval=0, maxval=300, group="Risk Management")
// Position Sizing Settings
position_sizing_method = input.string("USD Risk", "Position Sizing Method", options= , group="Position Sizing")
usd_risk_per_trade = input.float(100.0, "USD Risk Per Trade", minval=1.0, maxval=10000.0, group="Position Sizing")
fixed_contracts = input.float(1.0, "Fixed Number of Contracts", minval=0.01, maxval=1000.0, step=0.01, group="Position Sizing")
// Color settings
asian_color = input.color(color.red, "Asian Session Color")
london_color = input.color(color.blue, "London Session Color")
swing_high_color = input.color(color.orange, "Swing High Color")
swing_low_color = input.color(color.lime, "Swing Low Color")
bullish_structure_color = input.color(color.green, "Bullish Structure Color")
bearish_structure_color = input.color(color.red, "Bearish Structure Color")
bos_color = input.color(color.orange, "Break of Structure Color")
// Line settings
line_width = input.int(2, "Line Width", minval=1, maxval=5)
// ATR calculation for stop loss
atr = ta.atr(atr_length)
// Position size calculation function
calculate_position_size(entry_price, stop_loss_price) =>
var float position_size = na
if position_sizing_method == "Fixed Contracts"
position_size := fixed_contracts
else // USD Risk method
stop_distance = math.abs(entry_price - stop_loss_price)
if stop_distance > 0
// Calculate position size based on USD risk per trade
// For forex: position_size = risk_amount / (stop_distance * point_value)
// For most forex pairs, point value = 1 (since we're dealing with price differences directly)
position_size := usd_risk_per_trade / stop_distance
else
position_size := fixed_contracts // Fallback to fixed contracts if stop distance is 0
position_size
// Session time definitions (using input variables)
asian_start_hour = asian_start_hour_input
asian_end_hour = asian_end_hour_input
london_start_hour = london_start_hour_input
london_end_hour = london_end_hour_input
// Get current hour using selected timezone
current_hour = hour(time, session_timezone)
// Previous hour for transition detection
prev_hour = hour(time , session_timezone)
// Session transition detection
asian_start = current_hour == asian_start_hour and prev_hour != asian_start_hour
asian_end = current_hour == asian_end_hour and prev_hour != asian_end_hour
london_start = current_hour == london_start_hour and prev_hour != london_start_hour
london_end = current_hour == london_end_hour and prev_hour != london_end_hour
// Session activity detection
asian_active = (current_hour >= asian_start_hour) or (current_hour < asian_end_hour)
london_active = (current_hour >= london_start_hour) and (current_hour < london_end_hour)
// Session boxes - keep previous sessions visible
var box asian_session_box = na
var box london_session_box = na
// Create Asian session box
if show_asian and asian_start
// Create new box at session start (previous box remains visible)
asian_session_box := box.new(bar_index, high, bar_index + 1, low,
border_color=asian_color, bgcolor=color.new(asian_color, 90),
border_width=2, border_style=line.style_solid)
// Pre-calculate session highs and lows for consistency
asian_session_length = asian_active and not na(asian_session_box) ? bar_index - box.get_left(asian_session_box) + 1 : 1
current_asian_high = ta.highest(high, asian_session_length)
current_asian_low = ta.lowest(low, asian_session_length)
// Update Asian session box continuously during session
if show_asian and asian_active and not na(asian_session_box)
box.set_right(asian_session_box, bar_index)
// Update box to contain session highs and lows
box.set_top(asian_session_box, current_asian_high)
box.set_bottom(asian_session_box, current_asian_low)
// Create London session box
if show_london and london_start
// Create new box at session start (previous box remains visible)
london_session_box := box.new(bar_index, high, bar_index + 1, low,
border_color=london_color, bgcolor=color.new(london_color, 90),
border_width=2, border_style=line.style_solid)
// Pre-calculate London session highs and lows for consistency
london_session_length = london_active and not na(london_session_box) ? bar_index - box.get_left(london_session_box) + 1 : 1
current_london_high = ta.highest(high, london_session_length)
current_london_low = ta.lowest(low, london_session_length)
// Update London session box continuously during session
if show_london and london_active and not na(london_session_box)
box.set_right(london_session_box, bar_index)
// Update box to contain session highs and lows
box.set_top(london_session_box, current_london_high)
box.set_bottom(london_session_box, current_london_low)
// Asian Session Swing Points Detection
var float asian_session_high = na
var float asian_session_low = na
var int asian_high_bar = na
var int asian_low_bar = na
// Asian Session Absolute High/Low for TP levels
var float asian_absolute_high = na
var float asian_absolute_low = na
var line asian_high_line = na
var line asian_low_line = na
var label asian_high_label = na
var label asian_low_label = na
var bool high_broken = false
var bool low_broken = false
// London Session High/Low tracking for stop loss
var float london_session_high = na
var float london_session_low = na
// Market structure tracking variables
var string breakout_direction = na // "bullish" or "bearish"
var float last_hh_level = na // Last Higher High level
var float last_hl_level = na // Last Higher Low level
var float last_ll_level = na // Last Lower Low level
var float last_lh_level = na // Last Lower High level
var int structure_count = 0
var string last_structure_type = na // "HH", "HL", "LL", "LH"
// Legacy variables for compatibility
var float last_swing_high = na
var float last_swing_low = na
var int last_high_bar = na
var int last_low_bar = na
// Market structure state tracking
var float pending_high = na
var float pending_low = na
var int pending_high_bar = na
var int pending_low_bar = na
var bool waiting_for_confirmation = false
// Break of Structure tracking variables
var float most_recent_hl = na
var float most_recent_lh = na
var int most_recent_hl_bar = na
var int most_recent_lh_bar = na
var bool bos_detected = false
// Trading variables
var bool trade_taken = false
// Trade visualization boxes (based on Casper strategy approach)
var box current_profit_box = na
var box current_sl_box = na
// Update swing points during Asian session
if asian_active and show_swing_points
// Always track absolute high/low for both TP levels and breakout detection
if na(asian_absolute_high) or high > asian_absolute_high
asian_absolute_high := high
if na(asian_absolute_low) or low < asian_absolute_low
asian_absolute_low := low
// Use absolute high/low for breakout levels (simplified logic)
if na(asian_session_high) or high > asian_session_high
asian_session_high := high
asian_high_bar := bar_index
if na(asian_session_low) or low < asian_session_low
asian_session_low := low
asian_low_bar := bar_index
// Track London session high/low for stop loss levels
if london_active
if na(london_session_high) or high > london_session_high
london_session_high := high
if na(london_session_low) or low < london_session_low
london_session_low := low
// Draw initial lines when Asian session ends
if asian_end and show_swing_points
if not na(asian_session_high) and not na(asian_high_bar)
// Draw extending line for high
asian_high_line := line.new(asian_high_bar, asian_session_high, bar_index + 200, asian_session_high,
color=swing_high_color, width=2, style=line.style_dashed, extend=extend.right)
asian_high_label := label.new(bar_index + 5, asian_session_high, "Asian High: " + str.tostring(asian_session_high, "#.####"), style=label.style_label_left, color=swing_high_color, textcolor=color.white, size=size.small)
if not na(asian_session_low) and not na(asian_low_bar)
// Draw extending line for low
asian_low_line := line.new(asian_low_bar, asian_session_low, bar_index + 200, asian_session_low,
color=swing_low_color, width=2, style=line.style_dashed, extend=extend.right)
asian_low_label := label.new(bar_index + 5, asian_session_low, "Asian Low: " + str.tostring(asian_session_low, "#.####"), style=label.style_label_left, color=swing_low_color, textcolor=color.white, size=size.small)
// Reset break flags for new session
high_broken := false
low_broken := false
// Check for breakouts during London session
if london_active and show_swing_points and not na(asian_session_high) and not na(asian_session_low)
// Check if Asian high is broken
if not high_broken and not low_broken and high > asian_session_high
high_broken := true
// Update high line to end at break point
if not na(asian_high_line)
line.set_x2(asian_high_line, bar_index)
line.set_extend(asian_high_line, extend.none)
// Remove the low line (first break wins)
if not na(asian_low_line)
line.delete(asian_low_line)
if not na(asian_low_label)
label.delete(asian_low_label)
// Add break marker
label.new(bar_index, asian_session_high * 1.001, "HIGH BREAK!",
style=label.style_label_down, color=color.red, textcolor=color.white, size=size.normal)
// Set breakout direction and initialize structure tracking
breakout_direction := "bullish"
last_swing_high := asian_session_high
last_swing_low := asian_session_low
last_high_bar := bar_index
structure_count := 0
// Check if Asian low is broken
if not low_broken and not high_broken and low < asian_session_low
low_broken := true
// Update low line to end at break point
if not na(asian_low_line)
line.set_x2(asian_low_line, bar_index)
line.set_extend(asian_low_line, extend.none)
// Remove the high line (first break wins)
if not na(asian_high_line)
line.delete(asian_high_line)
if not na(asian_high_label)
label.delete(asian_high_label)
// Add break marker
label.new(bar_index, asian_session_low * 0.999, "LOW BREAK!",
style=label.style_label_up, color=color.red, textcolor=color.white, size=size.normal)
// Set breakout direction and initialize structure tracking
breakout_direction := "bearish"
last_swing_high := asian_session_high
last_swing_low := asian_session_low
last_low_bar := bar_index
structure_count := 0
// Stop extending lines when London session ends (if not already broken)
if london_end and show_swing_points
if not high_broken and not na(asian_high_line)
line.set_x2(asian_high_line, bar_index)
line.set_extend(asian_high_line, extend.none)
if not low_broken and not na(asian_low_line)
line.set_x2(asian_low_line, bar_index)
line.set_extend(asian_low_line, extend.none)
// Force close all trades at London session end (if enabled)
if london_end and force_london_close
if strategy.position_size != 0
// Extend boxes immediately before session close to prevent timing issues
if not na(current_profit_box)
// Ensure minimum 8 bars width or extend to current bar, whichever is longer
box_left = box.get_left(current_profit_box)
min_right = box_left + 8
final_right = math.max(min_right, bar_index)
box.set_right(current_profit_box, final_right)
current_profit_box := na // Clear reference after extending
if not na(current_sl_box)
// Ensure minimum 8 bars width or extend to current bar, whichever is longer
box_left = box.get_left(current_sl_box)
min_right = box_left + 8
final_right = math.max(min_right, bar_index)
box.set_right(current_sl_box, final_right)
current_sl_box := na // Clear reference after extending
strategy.close_all(comment="London Close")
trade_taken := false // Reset trade flag for next session
// Market structure detection after breakout (only during London session and before first BoS)
if show_market_structure and not na(breakout_direction) and london_active and not bos_detected
// Bullish structure tracking (HH, HL alternating)
if breakout_direction == "bullish"
// Check for Higher High pattern: Bullish candle followed by bearish candle
pattern_high = math.max(high , high)
prev_hh = na(last_hh_level) ? last_swing_high : last_hh_level
// HH Detection: Only if we expect HH next (no last structure or last was HL)
if (na(last_structure_type) or last_structure_type == "HL") and close > open and close < open and pattern_high > prev_hh and close > prev_hh
// Check consolidation
is_too_close = not na(last_high_bar) and (bar_index - last_high_bar) <= 4
should_create_hh = true
if is_too_close and structure_count > 0 and pattern_high <= last_hh_level
should_create_hh := false
if should_create_hh
structure_count := structure_count + 1
label.new(bar_index - 1, high + (high * 0.0003), "HH" + str.tostring(structure_count),
style=label.style_none, color=color.new(color.white, 100),
textcolor=color.white, size=size.small)
last_hh_level := pattern_high
last_swing_high := pattern_high
last_high_bar := bar_index
last_structure_type := "HH"
// HL Detection: Only if we expect HL next (last was HH)
pattern_low = math.min(low , low)
prev_hl = na(last_hl_level) ? last_swing_low : last_hl_level
if last_structure_type == "HH" and close < open and close > open and pattern_low > prev_hl and close > prev_hl
// Check consolidation
is_too_close = not na(last_low_bar) and (bar_index - last_low_bar) <= 4
should_create_hl = true
if is_too_close and pattern_low <= last_hl_level
should_create_hl := false
if should_create_hl
structure_count := structure_count + 1
label.new(bar_index - 1, low - (low * 0.0003), "HL" + str.tostring(structure_count),
style=label.style_none, color=color.new(color.white, 100),
textcolor=color.white, size=size.small)
last_hl_level := pattern_low
most_recent_hl := pattern_low // Update most recent HL for BoS detection
most_recent_hl_bar := bar_index - 1 // Store HL bar position
last_low_bar := bar_index
last_structure_type := "HL"
// Bearish structure tracking (LL, LH alternating)
if breakout_direction == "bearish"
// Check for Lower Low pattern: Bearish candle followed by bullish candle
pattern_low = math.min(low , low)
prev_ll = na(last_ll_level) ? last_swing_low : last_ll_level
// LL Detection: Only if we expect LL next (no last structure or last was LH)
if (na(last_structure_type) or last_structure_type == "LH") and close < open and close > open and pattern_low < prev_ll and close < prev_ll
// Check consolidation
is_too_close = not na(last_low_bar) and (bar_index - last_low_bar) <= 4
should_create_ll = true
if is_too_close and structure_count > 0 and pattern_low >= last_ll_level
should_create_ll := false
if should_create_ll
structure_count := structure_count + 1
label.new(bar_index - 1, low - (low * 0.0003), "LL" + str.tostring(structure_count),
style=label.style_none, color=color.new(color.white, 100),
textcolor=color.white, size=size.small)
last_ll_level := pattern_low
last_swing_low := pattern_low
last_low_bar := bar_index
last_structure_type := "LL"
// LH Detection: Only if we expect LH next (last was LL)
pattern_high = math.max(high , high)
prev_lh = na(last_lh_level) ? last_swing_high : last_lh_level
if last_structure_type == "LL" and close > open and close < open and pattern_high < prev_lh and close < prev_lh
// Check consolidation
is_too_close = not na(last_high_bar) and (bar_index - last_high_bar) <= 4
should_create_lh = true
if is_too_close and pattern_high >= last_lh_level
should_create_lh := false
if should_create_lh
structure_count := structure_count + 1
label.new(bar_index - 1, high + (high * 0.0003), "LH" + str.tostring(structure_count),
style=label.style_none, color=color.new(color.white, 100),
textcolor=color.white, size=size.small)
last_lh_level := pattern_high
most_recent_lh := pattern_high // Update most recent LH for BoS detection
most_recent_lh_bar := bar_index - 1 // Store LH bar position
last_high_bar := bar_index
last_structure_type := "LH"
// Check if we're within the cutoff period before London session end
current_minute = minute(time, session_timezone)
london_end_time_minutes = london_end_hour * 60 // Convert London end hour to minutes
current_time_minutes = current_hour * 60 + current_minute // Current time in minutes
// Calculate minutes remaining in London session
london_session_minutes_remaining = london_end_time_minutes - current_time_minutes
// Handle day rollover case (e.g., if london_end is 8:00 (480 min) and current is 23:30 (1410 min))
if london_session_minutes_remaining < 0
london_session_minutes_remaining := london_session_minutes_remaining + (24 * 60) // Add 24 hours in minutes
// Only allow trades if more than cutoff_minutes remaining in London session
allow_new_trades = london_session_minutes_remaining > cutoff_minutes
// Break of Structure (BoS) Detection and Trading Logic - Only first BoS per London session and outside cutoff period
if show_bos and london_active and show_market_structure and not bos_detected and not trade_taken and allow_new_trades
// Bullish BoS: Price closes below the most recent HL (after bullish breakout) - SELL SIGNAL
if breakout_direction == "bullish" and not na(most_recent_hl) and not na(most_recent_hl_bar)
// Check minimum distance requirement (at least 4 candles between BoS and HL)
if close < most_recent_hl and (bar_index - most_recent_hl_bar) >= 4
// Draw dotted line from HL position to BoS point
line.new(most_recent_hl_bar, most_recent_hl, bar_index, most_recent_hl,
color=bos_color, width=2, style=line.style_dotted, extend=extend.none)
// Calculate center position for BoS label
center_bar = math.round((most_recent_hl_bar + bar_index) / 2)
// Draw BoS label below the line for HL break
label.new(center_bar, most_recent_hl - (most_recent_hl * 0.0005), "BoS",
style=label.style_none, color=color.new(color.white, 100),
textcolor=bos_color, size=size.normal)
// SELL ENTRY
if not na(london_session_high) and not na(asian_absolute_low)
// Calculate stop loss based on settings
stop_loss_level = use_atr_sl ? close + (atr * atr_multiplier) : london_session_high
take_profit_level = asian_absolute_low
entry_price = close
// Calculate position size based on user settings
position_size = calculate_position_size(entry_price, stop_loss_level)
strategy.entry("SELL", strategy.short, qty=position_size, comment="BoS Sell")
strategy.exit("SELL EXIT", "SELL", stop=stop_loss_level, limit=take_profit_level, comment="SL/TP")
// Create trade visualization boxes (TradingView style) - minimum 8 bars width
// Blue profit zone box (from entry to take profit)
current_profit_box := box.new(left=bar_index, top=take_profit_level, right=bar_index + 8, bottom=entry_price,
bgcolor=color.new(color.blue, 70), border_width=0)
// Red stop loss zone box (from entry to stop loss)
current_sl_box := box.new(left=bar_index, top=entry_price, right=bar_index + 8, bottom=stop_loss_level,
bgcolor=color.new(color.red, 70), border_width=0)
trade_taken := true
bos_detected := true // Mark BoS as detected for this session
// Bearish BoS: Price closes above the most recent LH (after bearish breakout) - BUY SIGNAL
if breakout_direction == "bearish" and not na(most_recent_lh) and not na(most_recent_lh_bar)
// Check minimum distance requirement (at least 4 candles between BoS and LH)
if close > most_recent_lh and (bar_index - most_recent_lh_bar) >= 4
// Draw dotted line from LH position to BoS point
line.new(most_recent_lh_bar, most_recent_lh, bar_index, most_recent_lh,
color=bos_color, width=1, style=line.style_dotted, extend=extend.none)
// Calculate center position for BoS label
center_bar = math.round((most_recent_lh_bar + bar_index) / 2)
// Draw BoS label above the line for LH break
label.new(center_bar, most_recent_lh + (most_recent_lh * 0.0005), "BoS",
style=label.style_none, color=color.new(color.white, 100),
textcolor=bos_color, size=size.normal)
// BUY ENTRY
if not na(london_session_low) and not na(asian_absolute_high)
// Calculate stop loss based on settings
stop_loss_level = use_atr_sl ? close - (atr * atr_multiplier) : london_session_low
take_profit_level = asian_absolute_high
entry_price = close
// Calculate position size based on user settings
position_size = calculate_position_size(entry_price, stop_loss_level)
strategy.entry("BUY", strategy.long, qty=position_size, comment="BoS Buy")
strategy.exit("BUY EXIT", "BUY", stop=stop_loss_level, limit=take_profit_level, comment="SL/TP")
// Create trade visualization boxes (TradingView style) - minimum 8 bars width
// Blue profit zone box (from entry to take profit)
current_profit_box := box.new(left=bar_index, top=entry_price, right=bar_index + 8, bottom=take_profit_level,
bgcolor=color.new(color.blue, 70), border_width=0)
// Red stop loss zone box (from entry to stop loss)
current_sl_box := box.new(left=bar_index, top=stop_loss_level, right=bar_index + 8, bottom=entry_price,
bgcolor=color.new(color.red, 70), border_width=0)
trade_taken := true
bos_detected := true // Mark BoS as detected for this session
// Position close detection for extending boxes (based on Casper strategy)
if barstate.isconfirmed and strategy.position_size == 0 and strategy.position_size != 0
// Extend trade visualization boxes to exact exit point when position closes
if not na(current_profit_box)
// Ensure minimum 8 bars width or extend to current bar, whichever is longer
box_left = box.get_left(current_profit_box)
min_right = box_left + 8
final_right = math.max(min_right, bar_index)
box.set_right(current_profit_box, final_right)
current_profit_box := na // Clear reference after extending
if not na(current_sl_box)
// Ensure minimum 8 bars width or extend to current bar, whichever is longer
box_left = box.get_left(current_sl_box)
min_right = box_left + 8
final_right = math.max(min_right, bar_index)
box.set_right(current_sl_box, final_right)
current_sl_box := na // Clear reference after extending
// Backup safety check - extend boxes if position is closed but boxes still active
if not na(current_profit_box) and strategy.position_size == 0
box_left = box.get_left(current_profit_box)
min_right = box_left + 8
final_right = math.max(min_right, bar_index)
box.set_right(current_profit_box, final_right)
current_profit_box := na
if not na(current_sl_box) and strategy.position_size == 0
box_left = box.get_left(current_sl_box)
min_right = box_left + 8
final_right = math.max(min_right, bar_index)
box.set_right(current_sl_box, final_right)
current_sl_box := na
// Reset everything when new Asian session starts
if asian_start and show_swing_points
asian_session_high := na
asian_session_low := na
asian_high_bar := na
asian_low_bar := na
// Reset absolute levels
asian_absolute_high := na
asian_absolute_low := na
asian_high_line := na
asian_low_line := na
asian_high_label := na
asian_low_label := na
high_broken := false
low_broken := false
// Reset London session levels
london_session_high := na
london_session_low := na
// Reset market structure tracking
breakout_direction := na
last_hh_level := na
last_hl_level := na
last_ll_level := na
last_lh_level := na
last_swing_high := na
last_swing_low := na
last_high_bar := na
last_low_bar := na
structure_count := 0
last_structure_type := na
pending_high := na
pending_low := na
pending_high_bar := na
pending_low_bar := na
waiting_for_confirmation := false
// Reset BoS tracking
most_recent_hl := na
most_recent_lh := na
most_recent_hl_bar := na
most_recent_lh_bar := na
bos_detected := false
// Reset trading
trade_taken := false
// Reset current trade boxes
current_profit_box := na
current_sl_box := na
// Debug info (optional)
show_debug = input.bool(false, "Show Debug Info")
if show_debug
var table debug_table = table.new(position.top_right, 2, 3, bgcolor=color.white, border_width=1)
if barstate.islast
table.cell(debug_table, 0, 0, "Current Hour:", text_color=color.black)
table.cell(debug_table, 1, 0, str.tostring(current_hour), text_color=color.black)
table.cell(debug_table, 0, 1, "Asian Active:", text_color=color.black)
table.cell(debug_table, 1, 1, str.tostring((current_hour >= asian_start_hour) or (current_hour < asian_end_hour)), text_color=color.black)
table.cell(debug_table, 0, 2, "London Active:", text_color=color.black)
table.cell(debug_table, 1, 2, str.tostring((current_hour >= london_start_hour) and (current_hour < london_end_hour)), text_color=color.black)
CandelaCharts - SMT 📝 Overview
The CandelaCharts – SMT indicator is a professional-grade Smart Money Technique (SMT) divergence detector designed to compare price action between correlated markets (intermarket analysis).
It identifies moments where the main chart makes a swing high or low while one or more comparison symbols fail to confirm the move—revealing potential institutional imbalance, distribution, or accumulation .
By automatically detecting pivot-based divergences and drawing clean, contextual lines and labels directly on price, SMT helps traders spot high-probability reversal or continuation zones driven by relative strength and weakness across markets.
📦 Features
Automatic SMT divergence detection – Identifies divergences between the main chart and up to two comparison symbols.
Pivot-based logic – Uses swing highs and swing lows to ensure structurally meaningful SMT signals.
Dual-symbol comparison – Compare the main market against one or two correlated instruments simultaneously.
Bullish & bearish SMT filtering – Show only bullish, bearish, or both divergence types.
Clear visual mapping – Divergence lines are drawn directly between pivots for intuitive price-context reading.
Smart labels – Compact labels display symbol(s), volume, and directional markers.
Detailed tooltips – Hover tooltips include divergence type, symbols involved, prices, volume, timestamps, and pivot settings.
Highly customizable visuals – Control colors, line width, and label styling.
⚙️ Settings
Lookback – Pivot lookback length used to detect swing highs and lows. Higher values produce fewer but more significant SMT signals.
Bias – Control which SMTs are displayed: Both, Bearish or Bullish
Swing High Color – Line and label color for SMT at swing highs.
Swing Low Color – Line and label color for SMT at swing lows.
Line Width – Thickness of SMT divergence lines.
Symbol 1 – Enable and select the first comparison instrument (e.g., NQ vs ES).
Symbol 2 – Enable and select the second comparison instrument (optional).
⚡️ Showcase
Bullish and Bearish SMTs
Bearish SMTs
Bullish SMTs
🚨 Alerts
This indicator does not include built-in alert conditions.
⚠️ Disclaimer
This indicator is provided for educational and informational purposes only and does not constitute financial or investment advice. Trading and investing involve substantial risk, and losses can exceed expectations. Past performance is not indicative of future results. You are solely responsible for your trading decisions. CandelaCharts assumes no liability for any outcomes resulting from the use of this indicator.
Zig Zag ++ SG (Premium)🔥 Zig Zag ++ SG
Professional Market Structure & Cycle Analyzer
Zig Zag ++ SG is an advanced, research-grade market structure indicator built on top of a refined ZigZag engine, designed for traders and investors who want to understand price cycles, not chase candles.
This is not a buy-sell arrow tool.
It is a decision-support system used to analyze trend strength, exhaustion, pullback depth, and cycle behavior across any market and timeframe.
🧠 What Makes Zig Zag ++ SG Different?
Most ZigZag indicators only draw lines.
Zig Zag ++ SG answers the real questions:
Is the trend getting stronger or weaker?
Are higher highs still meaningful?
How deep are pullbacks in percentage terms?
Which stocks recover fast vs stay weak?
Is this accumulation, distribution, or reversal?
It does this by combining:
Market Structure (HH / HL / LH / LL)
Consecutive structure counting
Gain & fall percentage per swing
Clean visual logic (no repaint confusion)
📌 Core Features
✅ 1. Automatic Market Structure Detection
Labels every major swing as:
HH – Higher High
HL – Higher Low
LH – Lower High
LL – Lower Low
This instantly shows whether the market is:
Trending
Consolidating
Distributing
Reversing
✅ 2. Consecutive Structure Count (ON by default)
Each structure type is counted sequentially:
HH (1), HH (2), HH (3)…
HL (1), HL (2)…
This reveals:
Trend maturity
Exhaustion zones
Early breakdown warnings
Example:
HH (4) = trend may be overextended
HL (3) = healthy trend continuation
✅ 3. Gain & Fall % on Every Swing (ON by default)
Every HH, HL, LH, LL shows:
Exact % move from the previous pivot
This allows you to:
Compare pullback depth across stocks
Identify leaders (shallow HLs)
Spot weak stocks (deep HLs / LHs)
Study cycle symmetry
Example label:
HL (2)
-6.4%
✅ 4. Clean, Readable Visual Design
🟩 Green labels → White text
🟥 Red labels → High-contrast white text
Optional background trend shading (OFF by default)
Works perfectly in dark & light mode
Designed for long chart study sessions, not flashy screenshots.
✅ 5. Safe Repaint Logic (Transparent by Design)
Uses ZigZag logic intentionally
No fake “non-repainting” claims
Ideal for analysis, research & planning
What you see is structurally correct
This indicator is for thinking traders, not signal chasers.
⚙️ Best Settings (Recommended)
🔹 Intraday Trading
Timeframe: 5m / 15m
Depth: 8–10
Deviation: 3–5
Backstep: 2
🔹 Swing Trading (Most Popular)
Timeframe: Daily
Depth: 12–15
Deviation: 5
Backstep: 2
🔹 Long-Term / Investing
Timeframe: Weekly
Depth: 15–20
Deviation: 5–8
Backstep: 3
💡 Tip:
Lower depth = more swings
Higher depth = cleaner, major cycles
📈 How to Use Zig Zag ++ SG (Practically)
🔹 Trend Strength
HH (3+) + HL (2–3)
→ Strong, healthy trend
🔹 Exhaustion Warning
HH (4+)
→ Risk of distribution or slowdown
🔹 Pullback Quality
HL −3% to −7%
→ Strong stock
HL −12% to −20%
→ Weak hands / fragile trend
🔹 Reversal Confirmation
LH followed by LL (2+)
→ Trend change likely
🧪 Who Is This Indicator For?
✅ Swing traders
✅ Positional traders
✅ Long-term investors
✅ Market structure students
✅ Stock researchers
✅ Anyone tired of noisy indicators
❌ Not for:
People wanting instant buy/sell arrows
Scalpers chasing 1-minute signals
“Magic indicator” seekers
💎 Why This Is Worth Purchasing
Built with Pine Script v6 best practices
Solves real market questions
Helps avoid:
Buying late
Selling early
Holding weak stocks too long
Encourages process-driven trading
One-time learning tool you’ll use for years
Most traders lose money not because of entries —
but because they misread structure and cycles.
Zig Zag ++ SG fixes that.
All-in-one trend clarityTrendLens is a multi-layer, all-in-one overlay indicator designed to visually detect and filter market direction — not a buy/sell strategy.
It highlights early trend shifts based on candle behavior, then supports that view using Pivot High/Low structure, three customizable EMAs, and a visible daily session window to focus on active market hours.
What’s included (All inside one indicator)
Structural Trend Candles
If price closes above the highest high of the previous N bars → candle turns white (bullish structural breakout).
If price closes below the lowest low of the previous N bars → candle turns black (bearish structural breakdown).
Pivot High / Pivot Low Markers
Detects swing highs/lows using adjustable left/right bars (default 7) and plots small gray triangle markers on the chart.
Active Session Window
Highlights a fixed daily time window (default 06:00–18:00 UTC) with a transparent green background to visually mark the active trading session.
3 Customizable EMAs
EMA Fast (default 10)
EMA Mid (default 20)
EMA Long (default 100)
Each EMA supports custom length, source, color, and thickness.
How to use it
Use white/black candles as a quick trend filter and early structure shift cue.
Use EMA100 as the main trend bias reference; use EMA10/EMA20 positioning to gauge momentum.
Use Pivot High/Low to spot structure levels for potential support/resistance and risk management.
Enable the session highlight to focus analysis on high-activity hours.
Disclaimer
This indicator is a technical analysis helper, not a trading strategy.
It does not provide buy/sell recommendations. You are responsible for your own trade decisions and risk management.






















