RSIThis Pine Script-based RSI tool monitors market momentum using a high-contrast cyan curve. It leverages Version 5 Label logic to display precise RSI values upon crossing the 30 (oversold) or 70 (overbought) thresholds, identifying high-probability mean-reversion zones and potential bullish/bearish divergences.
Wskaźniki i strategie
VWAP --S/W/M/Q/Y-- (mk)VWAP — S / W / M / Q / Y (mk)
This indicator plots multi-timeframe anchored VWAPs on a single chart, allowing you to view Session, Weekly, Monthly, Quarterly, and Yearly VWAPs simultaneously, each with optional standard-deviation bands.
It is designed for traders who use VWAP as a fair value reference across multiple market horizons and want higher-timeframe context without switching charts.
🔹 What it shows
Session VWAP (daily reset)
Weekly VWAP
Monthly VWAP
Quarterly VWAP
Yearly VWAP
Each VWAP can be enabled or disabled individually.
🔹 VWAP Bands
For every VWAP, the indicator can optionally plot:
±1 standard deviation
±2 standard deviations
±3 standard deviations
These bands help identify:
Overextended price moves
Mean-reversion zones
Higher-timeframe support and resistance
🔹 Key Features
True anchored VWAP using volume-weighted calculations
Automatic resets based on timeframe changes
Clean, color-coded levels for each timeframe
Independent visibility controls for each VWAP and its bands
Works on any market and timeframe with volume data
🔹 How to use it
Use higher-timeframe VWAPs (Monthly / Quarterly / Yearly) as major bias and balance levels
Use Session and Weekly VWAPs for intraday execution and mean-reversion setups
Combine VWAP confluence across timeframes for high-probability zones
Watch price behavior around ±1 / ±2 / ±3 bands for acceptance or rejection
ZigZag ATR PctZigZag ATR % Library
A PineScript v6 library for detecting price pivots based on ATR percentage change (volatility shifts) rather than fixed ATR multiples.
How It Works
Traditional ZigZag indicators use a fixed price threshold to detect pivots. This library takes a different approach: pivots are detected when volatility is changing significantly .
The ATR % change measures how much the Average True Range has shifted over a lookback period:
atrPct = 100 * (atr / atr - 1)
Positive ATR % = Volatility expanding (market becoming more volatile)
Negative ATR % = Volatility contracting (market calming down)
Pivots form when |ATR %| exceeds your threshold, capturing turning points during volatility transitions.
Exported Types
Settings - Configuration (ATR length, lookback, threshold, display options)
Pivot - Pivot point data (price, time, direction, volume, ATR %)
ZigZag - Main state container
Exported Functions
newInstance(settings) - Create a new ZigZag instance
update(zz, atr, atrPct) - Update on each bar
getLastPivot(zz) - Get the most recent pivot
getPivot(zz, index) - Get pivot at specific index
getPivotCount(zz) - Get total number of pivots
calcTR() - Calculate True Range
calcATR(length) - Calculate ATR using EMA
calcATRPct(atr, atrPrev) - Calculate ATR % change
calcPricePct(startPrice, endPrice) - Calculate price % change
Usage Example
//@version=6
indicator("My ZigZag", overlay = true)
import DeepEntropy/ZigZagATRPct/1 as zz
// Settings
var zz.Settings settings = zz.Settings.new(
atrLength = 14,
atrLookback = 14,
atrPctThreshold = 5.0,
depth = 10
)
var zz.ZigZag zigZag = zz.newInstance(settings)
// Calculate ATR %
float atr = zz.calcATR(14)
float atrPct = zz.calcATRPct(atr, atr )
// Update
zigZag := zz.update(zigZag, atr, atrPct)
// Access pivots
int count = zz.getPivotCount(zigZag)
if count > 0
zz.Pivot last = zz.getLastPivot(zigZag)
label.new(last.point, text = str.tostring(last.atrPct, "#.##") + "%")
Parameters
ATR Length - Period for ATR calculation (default: 14)
ATR Lookback - Bars to look back for ATR % change (default: 14)
ATR % Threshold - Minimum |ATR %| to trigger pivot detection (default: 5.0)
Depth - Minimum bars between pivots (default: 10)
Use Cases
Identify reversals during volatility regime changes
Filter noise during low-volatility consolidation
Detect breakout pivots when volatility expands
Build volatility-aware trading systems
This library detects when the market's behavior is changing, not just how much price has moved.
Current TF ADR + EMA20 Overbought / OversoldEasy indicator to show overbought or oversold
Self used, u can try urself
Enjoy
RSICó RSI (14)
và 2 đường EMA
EMA (9)
WMA (45)
RSI cắt lên thì chuyển xanh
RSI cắt xuống thì chuyển đỏ
VWAP Suite (Updated 3W + Long Term)VWAP Suite (Updated 3W + Long Term)VWAP Suite (Updated 3W + Long Term)VWAP Suite (Updated 3W + Long Term)VWAP Suite (Updated 3W + Long Term)VWAP Suite (Updated 3W + Long Term)VWAP Suite (Updated 3W + Long Term)VWAP Suite (Updated 3W + Long Term)
Aggressive ScalpingAggressive Scalping — EMA × RSI × VWAP × ADX Mesh-Up
Aggressive Scalping is a precision intraday indicator designed for range-to-early expansion environments, where most scalping strategies either over-trade or get chopped up.
This indicator intentionally meshes four complementary tools—EMA structure, RSI momentum, VWAP bias, and ADX regime detection—to isolate high-probability micro-moves while filtering out trend exhaustion and late entries.
The goal is simple:
trade only when price is aligned, momentum is controlled, and the market is quiet enough to move cleanly.
Why This Mesh-Up Exists
Most scalping indicators fail because they:
Trade every EMA cross
Ignore market regime
Chase overextended RSI
Enter against VWAP
This script solves that by assigning one clear job to each component:
1️⃣ EMA Structure (Fast vs Slow)
Defines short-term directional bias
Triggers precise entry timing
Provides clean crossover signals (▲ / ▼)
EMAs answer: Which side should I be on right now?
2️⃣ RSI Control (Not Overbought / Oversold)
Prevents chasing extended moves
Filters entries when momentum is already spent
Keeps scalps inside continuation windows
RSI answers: Is there still fuel left for a scalp?
3️⃣ VWAP Bias (Institutional Fair Value)
Aligns trades with institutional positioning
Blocks longs below VWAP and shorts above VWAP (optional)
Greatly reduces counter-trend noise
VWAP answers: Am I trading with or against the real money?
4️⃣ ADX Regime Filter (Range Detection)
Allows entries only when ADX is below a threshold
Avoids high-ADX trend exhaustion and fake pullbacks
Highlights scalp-friendly compression zones
ADX answers: Is the market calm enough to scalp?
How to Use the Signals
🔺 EMA Bullish Crossover (Green Triangle Up)
Fast EMA crosses above Slow EMA
Early directional shift
Can be used as:
Standalone momentum trigger
Confirmation for pullback entries
🔻 EMA Bearish Crossover (Red Triangle Down)
Fast EMA crosses below Slow EMA
Early downside signal
Ideal for quick downside scalps or fades
🟢 Long Entry Signal (Larger Green Triangle)
Triggers only when ALL conditions align:
EMA bullish structure
RSI not overbought
ADX below threshold (range mode)
Price above VWAP (if enabled)
🔴 Short Entry Signal (Larger Red Triangle)
Triggers only when:
EMA bearish structure
RSI not oversold
ADX below threshold
Price below VWAP (if enabled)
These are high-quality scalp entries, not constant signals.
Best Market Conditions
✔ Choppy to mildly trending sessions
✔ Open, mid-day, power hour rotations
✔ Large-cap & mega-cap stocks
✔ Index futures (ES, NQ)
✔ VWAP-respecting instruments
🚫 Not designed for:
Strong trend days
News-driven momentum explosions
Illiquid small caps
Final Notes
This indicator is not a prediction tool.
It is a structure-and-regime alignment tool.
Use it to:
Reduce over-trading
Improve entry precision
Trade fewer, cleaner setups
Stay aligned with market context
Pair it with:
Strict risk management
Session awareness
Price action confirmation
Structure + MTF + Failed 2U/2D + PDH/PDL Sweeps (Toolkit)How this behaves (so you are not guessing)
1) Liquidity sweeps (PDH/PDL)
PDH Sweep: price trades above yesterday’s high, then (by default) closes back below PDH
PDL Sweep: price trades below yesterday’s low, then closes back above PDL
You can allow wick-only sweeps via the input if you want more signals (and more noise, because humans love noise).
2) Failed 2U / Failed 2D
Failed 2U: candle takes prior high but closes back below it (failure)
Failed 2D: candle takes prior low but closes back above it
If you enable confirmation, the script triggers the “confirmed” entry only when the next candle breaks the fail candle in the intended direction.
3) FTFC strength meter (0–3)
Uses 3 higher timeframes you pick (defaults 15, 60, 240).
Strength = how many of those TF candles are bullish or bearish.
“Aligned” means 2 or 3 agree.
4) Consolidation filter
Flags consolidation when:
You have an inside-bar streak (default 2+) and/or
ATR is compressed vs its own SMA (default threshold 0.80)
Then it can block entries if you enable “Avoid entries during consolidation”.
5) “Setup Ready” alert
Triggers before entries when:
Sweep/rejection context exists (PDH/PDL)
Structure signal is forming (failed or reversal pattern)
Consolidation filter allows it
That’s your “stop chasing every candle” mechanism.
MTF Confluence Reporter - Trend & Momentum AlignmentThis indicator is a multi-timeframe confluence dashboard designed to answer one question clearly:
“Across my key timeframes, is the market leaning Bullish, Bearish, or Mixed—and how strong is that lean?”
It combines two separate “votes” per timeframe:
4MA Direction (trend alignment / slope bias)
StochRSI State (momentum bias)
Those votes are then blended into a single Confluence result, shown as a clean readout with a 0–100 Strength score, plus hysteresis to reduce flicker near the decision boundary.
What you see in the table
1) 4MA
This is the trend component. It summarizes whether the selected timeframes are generally Bull or Bear based on the moving-average direction logic (your 4MA engine).
2) Stoch
This is the momentum component. It summarizes whether StochRSI across the selected timeframes is leaning Bull or Bear.
3) Qualified (YES/NO)
A safety gate. “Qualified = YES” means the internal conditions required for a valid confluence read are met (i.e., enough alignment/consistency to treat the output as actionable).
If it’s NO, treat the market as mixed / transitional and tighten risk.
4) Strength (0–100)
Your blended score (trend + momentum).
Higher = stronger agreement across timeframes.
A simple way to interpret it:
80–100: Strong alignment (clean regime)
60–79: Moderate alignment (tradable, but expect chop)
50–59: Weak / transitioning (be cautious)
< 50: Bearish side of the regime logic (or mixed turning down)
5) Strength Bar
A visual “battery meter” for the Strength score. This is meant to be read at a glance during fast decision-making.
6) Confluence (BULL/BEAR)
The actual regime output. This is the “final answer” based on the Strength score and hysteresis rules.
7) Hysteresis (Enter / Exit thresholds)
This is the anti-flicker system.
Example shown on the chart:
Enter > 60
Exit < 50
Meaning:
The script only “flips ON” a Bull regime when strength becomes convincingly Bullish (above 60).
It won’t “flip OFF” until strength meaningfully weakens (below 50).
This reduces rapid flipping during 50/50 conditions.
How to use it (practical workflow)
Step 1 — Use Confluence as your “market mode”
BULL: Favor longs, trend-following entries, buying pullbacks.
BEAR: Favor defense, shorts/hedges (if you trade them), or wait for reset.
Qualified = NO: Reduce size, tighten stops, or wait—conditions are not clean.
Step 2 — Use Strength to time aggressiveness
Strength rising: Momentum is joining trend → entries tend to have better follow-through.
Strength falling: Alignment is fading → take profit quicker or tighten risk.
Step 3 — Use hysteresis as your “noise filter”
If you’re a swing trader, hysteresis is your friend:
Don’t overreact to a single bar change.
Let the regime confirm and stay confirmed.
Best use-cases
Swing trading / position bias (daily/weekly context)
Hedge decisions (when alignment flips and stays flipped)
Filtering entries from other tools (only take signals that match the regime)
Settings notes:
This script is designed to be flexible:
You can choose which timeframes matter most to you (commonly 1H / 4H / 1D / 1W / 1M).
If your version includes weighting, you can tune weights to match your trading style (short-term vs swing).
Thresholds (Enter/Exit) can be tightened for faster flips or widened for smoother regimes.
Important notes / disclaimer (TradingView-safe)
This tool is an informational confluence dashboard, not financial advice. No indicator can predict the future. Always confirm with market structure, risk management, and your own plan. Past behavior on a chart does not guarantee future results.
How I Use This Indicator (Example Workflow)
I use this tool primarily as a market-bias and risk-filter, not as a standalone entry signal.
Establish the regime first
I start by checking the Confluence row:
BULL: I focus on long-side ideas and bullish continuation setups.
BEAR: I become defensive, avoid counter-trend trades, or look for short/hedge opportunities where applicable.
Qualified = NO: I treat the market as transitional and reduce risk.
Use Strength to adjust aggressiveness
When Strength is elevated and rising, I am more comfortable holding positions and allowing trades more room to develop.
When Strength is declining, I tighten stops, reduce position size, or manage trades more actively.
Let hysteresis do the work
I do not react to every minor fluctuation near the midpoint.
The built-in hysteresis thresholds help me stay aligned with the prevailing regime instead of over-trading during indecision.
Entries come from other tools
Actual entries are taken using price structure, support/resistance, or other indicators.
This dashboard simply tells me whether the broader environment supports that idea or not.
In short, I treat this indicator as a context and confirmation layer—it helps answer when to be aggressive, cautious, or patient.
Kitty Strength vs Ticker w/ Custom MA [theUltimator5]This indicator is one of the Roaring Kitty indicators shown on his StockCharts page, as the GME: SP:SPX chart. This indicator calculates and displays the relative strength of the current ticker against a comparison ticker of your choice (SPX by default). It helps you identify outperformance and underperformance trends by visualizing the price ratio between two assets, as well as an added moving average of your choice (100 SMA by default)
Key Features:
Customizable comparison ticker (default: SPX) - compare against any index or ticker (SPY, QQQ, DIA, etc.)
Multiple moving average types: SMA, EMA, WMA, HMA, VWMA, and RMA
Adjustable moving average length for trend identification
Clean visualization in a separate pane below the main chart
How to Use:
The blue line represents the current relative strength ratio (Current Ticker / Comparison Ticker). When the line is rising, the current ticker is outperforming the comparison ticker. When falling, it's underperforming.
The silver line is the moving average of the relative strength, which helps smooth out noise and identify longer-term trends. Crossovers between the relative strength and its moving average can signal changes in relative performance.
I added additional user configuration so you can customize it to your preferred style since SPX and SMA 100 are not suitable for all tickers and timeframes.
Premium Trading Dashboard 💎 Premium Trading Dashboard - Comprehensive Description
This Pine Script v5 indicator is an elite-level all-in-one trading system designed for sophisticated traders on Bursa Malaysia. It combines institutional-grade analysis with smart money detection in a premium visual dashboard.
🎯 Core Purpose:
A comprehensive decision-making tool that analyzes 10+ technical dimensionssimultaneously to provide clear BUY/SELL signals, position sizing recommendations, and complete trade plans with entry/exit levels.

🔥 Key Features & Analysis Systems:
1. 📊 Multi-Dimensional Scoring System
Technical Rating (0-100)
• Moving Average Signals (25 pts): Price vs SMA20/50/200, MA alignment
• RSI Analysis (15 pts): Optimal 50-60 range, avoid extremes
• MACD Signals (15 pts): Line crossovers, histogram momentum
• Bollinger Bands (10 pts): Price position relative to bands
• Stochastic (10 pts): Oversold/overbought conditions
• Volume Confirmation (10 pts): Above MA20 and MA50
• ADX Trend Strength (15 pts): Strong trends above 25
Rating Levels:
• 🚀 80+: STRONG BUY
• 📈 65-79: BUY
• ↔️ 50-64: NEUTRAL
• 📉 35-49: WEAK
• 🔻 <35: VERY WEAK

Shark/Smart Money Rating (0-100)
Detects institutional and smart money activity:
• Volume Spikes (30 pts): 2x+ above MA20
• Large Candles (20 pts): 1.5x+ average range
• Strong Candles (25 pts): 70%+ body-to-range ratio
• Accumulation/Distribution (15 pts): A/D line momentum
Shark Signals:
• 🦈💰 BUYING HARD (70+): Aggressive institutional accumulation
• 🦈📈 BUYING (50+): Smart money entering
• 🦈💸 SELLING HARD (70+): Distribution phase
• 🦈📉 SELLING (50+): Smart money exiting
• ⚡ ACTIVE (40+): Moderate activity
• 😴 QUIET (<40): Low institutional interest

Momentum Score (0-100)
Measures price acceleration across multiple timeframes:
• 1-Day Change (15 pts): >3% = strong, >1% = moderate
• 5-Day Change (15 pts): >5% = strong, >2% = moderate
• 20-Day Change (20 pts): >10% = strong, >5% = moderate
• RSI Momentum (25 pts): 60-70 optimal zone
• MACD Momentum (25 pts): Histogram rising + line above signal
Momentum Levels:
• 🚀 80+: VERY STRONG
• ⬆️ 65-79: STRONG
• ➡️ 50-64: MODERATE
• ⬇️ 35-49: WEAK
• 💤 <35: VERY WEAK

Quality Rating (QR Score 0-100)
Fundamental quality indicators:
• Price vs Key MAs (30 pts): Above SMA50 & SMA200
• MA Alignment (20 pts): Perfect 7>20>50>200 hierarchy
• Volume Consistency (20 pts): Above MA50, positive growth
• 52W Position (15 pts): Price in upper range (70%+)
• Trend Strength ADX (15 pts): Above 40
QR Rating:
• ⭐⭐⭐⭐⭐ 80+: EXCELLENT
• ⭐⭐⭐⭐ 65-79: GOOD
• ⭐⭐⭐ 50-64: AVERAGE
• ⭐⭐ 35-49: BELOW AVG
• ⭐ <35: POOR

2. 🔄 Market Phase Detection (Wyckoff Cycle)
Advanced cycle analysis identifying the 4 key market phases:
• 1️⃣ ACCUMULATION 🌊: "Smart money accumulating"
◦ Sideways at bottom, increasing volume, A/D rising
◦ Best phase for building positions
• 2️⃣ MARKUP 🚀: "Active buying phase"
◦ Strong uptrend, price above all MAs
◦ Momentum building, breakouts occurring
• 3️⃣ DISTRIBUTION ⚠️: "Smart money distributing"
◦ Sideways at top, high volume, A/D falling
◦ Warning phase - prepare to exit
• 4️⃣ MARKDOWN 📉: "Active selling phase"
◦ Downtrend, price below MAs
◦ Avoid new entries
• ↔️ TRANSITION: Between phases

3. 💎 Conviction Level (Composite Score)
Weighted combination of all ratings:
• Technical (30%) + Shark (25%) + Momentum (25%) + QR (20%)
Conviction Levels:
• 💎💎💎 80+: VERY HIGH - Maximum confidence
• 💎💎 65-79: HIGH - Strong confidence
• 💎 50-64: MODERATE - Reasonable confidence
• ⚠️ 35-49: LOW - Weak conviction
• ❌ <35: VERY LOW - Avoid

4. 📋 Analyst Rating (Overall Score)
Final composite recommendation:
• Technical (35%) + Shark (25%) + Momentum (25%) + QR (15%)
Analyst Ratings:
• ⭐⭐⭐⭐⭐ 80+: STRONG BUY
• ⭐⭐⭐⭐ 65-79: BUY
• ⭐⭐⭐ 50-64: HOLD
• ⭐⭐ 35-49: WEAK
• ⭐ <35: AVOID

5. 🎯 Trading Signal Generation (LONG Only)
Smart signal logic with multiple confirmations:
• 🚀 STRONG BUY: Tech 70+, Momentum 60+, Volume spike, Price > SMA20, RSI < 70
• 📈 BUY: Tech 60+, Momentum 50+, Price > SMA20, RSI < 65
• ⏳ WAIT & WATCH: Tech/Conviction 50+
• 🛑 AVOID: Below thresholds

6. 💰 Position Size Recommendation
Risk-based position sizing (% of capital):
• 💰 FULL (5%): Conviction 75+ - Highest confidence
• 💵 LARGE (3-4%): Conviction 60-74 - Strong confidence
• 💳 MEDIUM (2-3%): Conviction 45-59 - Moderate confidence
• 💸 SMALL (1-2%): Conviction 30-44 - Low confidence
• 🚫 AVOID: Conviction <30

7. 📊 Volume Analysis
Real-time volume assessment:
• 🔥🔥🔥 EXTREME: 3x+ above MA20
• 🔥🔥 VERY HIGH: 2x+ above MA20
• 🔥 HIGH: 1.5x+ above MA20
• ⬆️ ABOVE AVG: 1x-1.5x MA20
• ➡️ NORMAL: 0.7x-1x MA20
• ⬇️ LOW: Below 0.7x MA20

8. 📈 Trend Analysis
Dynamic trend detection with duration tracking:
• 📈 STRONG BULLISH: All MAs perfectly aligned (7>20>50>200)
• 📈 BULLISH: Major MAs aligned (20>50>200)
• 📉 STRONG BEARISH: All MAs reversed (7<20<50<200)
• 📉 BEARISH: Major MAs reversed
• ↔️ SIDEWAYS: Mixed alignment
Trend Duration Counter: Shows how many bars trend has persisted

9. 🔥 Catalysts Detection
Identifies multiple positive triggers simultaneously:
• 52-week high breakout
• Smart money buying
• Volume spike (2x+)
• Strong daily move (3%+)
• Bollinger Band breakout
Catalyst Status:
• 🔥🔥🔥 MULTIPLE (4-5): Explosive setup
• 🔥🔥 STRONG (3): Strong setup
• 🔥 PRESENT (2): Good setup
• ⚡ MINOR (1): Weak setup
• ➖ NONE (0): No catalysts

10. 🎮 Trading Mode Recommendation
Suggests optimal trading strategy:
• 🎯 TREND FOLLOW: ADX 40+, strong uptrend
• 📊 RANGE TRADE: ADX <20, sideways between SMAs
• 🦈 SMART MONEY: Following institutional activity
• 🚀 BREAKOUT: Breaking 52W or period high
• ⚡ MOMENTUM: Strong momentum score
• ⏸️ WAIT: No clear opportunity

11. ✅ Overall Status
Clear action recommendation:
• ✅ READY TO BUY: Analyst 75+, Conviction 70+
• 🟢 GOOD TO BUY: Analyst 60+, Conviction 55+
• 🟡 MONITOR: Analyst 45+
• 🟠 CAUTION: Analyst 30-44
• 🔴 AVOID: Analyst <30

12. 💰 Complete Trade Plan
Automatically calculates:
• 🎯 Entry Price: Current close
• 🛑 Stop Loss: ATR-based (2x for big cap, 2.5x for penny stocks)
• 💚 TP1: 1.5R risk-reward
• 💎 TP2: 2.5R risk-reward
• 🏆 TP3: 4.0R risk-reward
• 📊 Risk/Share: Amount risked per share

🎨 Visual Components:
Premium Dashboard (24-Row Table)
• Dark theme with blue frame (#0a0e27 bg, #1e88e5 frame)
• Gold headers (#ffd54f) for section labels
• Color-coded values based on conditions
• Customizable position: 4 corner options
• Real-time updates on every bar
Additional Indicators:
• Moving Averages: SMA 7/20/50/200, EMA 9/21
• Bollinger Bands: 20-period, 2 std dev
• 52-Week High/Low: 252 trading days
• Breakout Lines: Customizable period

🔔 Built-in Alerts:
1. Strong Buy Signal: Tech + Momentum + Volume aligned
2. Shark Buy Alert: Institutional buying detected
3. Multiple Catalysts: 3+ triggers present
4. Strong Buy Rating: Analyst score reaches 80+

⚙️ Customizable Parameters:
• Technical: RSI period, MACD settings
• Shark Detection: Volume multiplier, candle size
• Breakout: Lookback period
• TP/SL: Separate multipliers for big cap vs penny stocks
• Display: Dashboard on/off, position
• Risk-Reward Ratios: Customize TP1/2/3 levels

🎯 Best Use Cases:
✅ Bursa Malaysia LONG-only trading
✅ Swing trading with institutional confirmation
✅ Multi-timeframe analysis (Daily, 4H, 1H)
✅ Position sizing and risk management
✅ Identifying accumulation phases early
✅ High-probability breakout trading
✅ Avoiding distribution zones

🚀 Trading Workflow:
1. Check Overall Status - Ready to buy?
2. Review Analyst Rating - Overall score
3. Confirm Market Phase - Accumulation/Markup best
4. Verify Shark Activity - Smart money buying?
5. Check Catalysts - Multiple triggers?
6. Review Trade Plan - Entry/SL/TP levels
7. Set Position Size - Based on conviction
8. Monitor Trend and Volume - Stay aligned

This is a professional-grade institutional analysis tool condensed into one powerful indicator, perfect for serious traders who want data-driven decisions with smart money confirmation. 💎📈
Multi SMA Indicator📊 Multi SMA Indicator - Description
This Pine Script v5 indicator is a comprehensive technical analysis system that combines multiple essential components for stock trading on Bursa Malaysia (LONG-only strategies).
✨ Key Features:
1. Multiple Simple Moving Averages (SMA)
• SMA 7 (Red) - Very short-term trend
• SMA 20 (Blue) - Short-term trend
• SMA 50 (Black) - Medium-term trend
• SMA 200 (Magenta) - Long-term trend
• All SMAs can be individually shown/hidden
2. 52-Week High/Low (Bursa Malaysia Standard)
• Uses 252 trading days
• 52W High (Green) - Yearly resistance level
• 52W Low (Red) - Yearly support level
• Detects breakouts at these critical levels
3. Bollinger Bands
• BB Length: 20 (customizable)
• Standard Deviation: 2.0
• Special candlestick coloring:
◦ Yellow: Price open & close below Lower BB (strong oversold signal)
◦ Purple: Price below Lower BB
4. Breakout Detection
• Detects breakouts with volume confirmation
• Breakout period: 20 bars (customizable)
• Volume Multiplier: 1.5x above MA20
• Candlestick coloring:
◦ Aqua 🌊: 52-week high breakout
◦ Orange 🍊: 52-week low breakdown
◦ Lime 🟢: Bullish breakout
◦ Magenta 🟣: Bearish breakout
5. Jerun Trend Signals (Trend Confirmation)
• 🦈 Jerun Buy (Aqua): Uptrend confirmation
◦ SMA7 > SMA20 > SMA50 (alignment)
◦ Price above SMA7
◦ Bullish candle with consecutive rises
• 🔥 Jerun Sell (Orange): Downtrend warning
◦ SMA7 < SMA20 < SMA50 (downtrend alignment)
◦ Price below SMA7
◦ Bearish candle with consecutive declines
6. Strong Momentum Detection
• 🚀 Signal: Strong momentum with criteria:
◦ Candle size > 1.5x ATR(14)
◦ Price increase ≥ 3% (threshold customizable)
◦ Volume spike (1.5x above MA20)
◦ Price above SMA7
7. Golden Cross & Death Cross
• 🐃 Golden Cross (Lime): Bullish signal
◦ SMA50 crosses above SMA200 (most powerful)
◦ SMA20 crosses above SMA50
• 🐻 Death Cross (Red): Bearish warning
◦ SMA50 crosses below SMA200
◦ SMA20 crosses below SMA50
📍 Visual Components:
1. Moving Average Lines - 4 SMA lines with distinct colors
2. 52W High/Low Lines - Stepline style for yearly levels
3. Bollinger Bands - 3 lines (upper, middle, lower)
4. Candlestick Colors - Dynamic coloring based on conditions
5. Signal Emojis - 🚀🦈🔥🐃🐻 for quick visual reference
6. Price Labels - Current value labels on the right side of chart
🎯 Usage:
• LONG Only: Focus on buy signals (Bursa Malaysia restriction)
• Entry Signals: Jerun Buy 🦈, Strong Momentum 🚀, Golden Cross 🐃
• Confirmation: Volume spike + Breakout + SMA alignment
• Risk Warning: Jerun Sell 🔥, Death Cross 🐻
• Oversold Opportunity: Yellow/purple candlesticks (price below BB Lower)
⚙️ Customizable Settings:
All parameters can be modified through indicator settings:
• SMA periods
• Breakout length
• Volume multiplier
• Momentum threshold
• Bollinger Bands parameters
• Toggle display for each feature
This indicator is suitable for traders who want a complete system with multiple confirmation signals for entry and risk management. 🚀📈
Smart Money Concepts [LuxAlgo]//@version=5
indicator("Gold Price (Korea 1 Don)", overlay=true)
// 설정: 실시간 환율 데이터 가져오기 (FX_IDC:USDKRW)
usdKrw = request.security("FX_IDC:USDKRW", timeframe.period, close)
// 계산 로직
// 트레이딩뷰 XAUUSD는 1트로이온스(31.1034768g) 기준
// 공식: (국제시세 * 환율 / 31.1035) * 3.75
troyOunceToGram = 31.1034768
oneDonGram = 3.75
goldPriceKrw = (close * usdKrw / troyOunceToGram) * oneDonGram
// 화면 표시 (테이블 생성)
var table priceTable = table.new(position.top_right, 2, 2, bgcolor = color.new(color.black, 50), border_width = 1)
if barstate.islast
// 헤더
table.cell(priceTable, 0, 0, "한국 금시세 (1돈)", text_color = color.white, bgcolor=color.new(color.gray, 20), text_size=size.small)
// 가격 표시 (원화 형식으로 콤마 찍어서 출력)
table.cell(priceTable, 0, 1, str.format("{0,number,###,###} 원", goldPriceKrw), text_color = color.yellow, text_size=size.large, bgcolor=color.black)
// 참고용 환율 표시
table.cell(priceTable, 1, 0, "적용 환율", text_color = color.gray, text_size=size.small)
table.cell(priceTable, 1, 1, str.format("{0,number,#,###.##} 원/$", usdKrw), text_color = color.gray, text_size=size.small)
Divergence Buy/SellUser Manual: Buy/Sell Divergence v1
-
The Buy/Sell Divergence v1 indicator is a momentum-based analysis tool built upon the Vortex system. Its primary function is to identify discrepancies between price action and trend strength, signaling potential exhaustion points and market reversals (Divergences).
-
-
-
1. Interface Components
- The indicator consists of three main visual elements in the bottom panel:
Dynamic Vortex (Lines):
Green Line (VI+): Represents the strength of the buyers.
Red Line (VI-): Represents the strength of the sellers.
Note: With "Dynamic View" enabled, only the dominant line is shown, removing visual noise and clutter.
Delta Histogram:
Represents the mathematical difference between the two forces. Bars above zero (Lime) indicate a bullish trend; bars below zero (Maroon) indicate a bearish trend.
Background Color:
Green: Confirmed bullish trend.
Red: Confirmed bearish trend.
-
-
-
2. Signal Interpretation
A. BUY DIV (Bullish Divergence)
Occurs during a downtrend and signals a potential bounce or upward reversal.
Price Condition: The price hits a new lower low.
Indicator Condition: The red line (VI-) shows a lower peak of strength compared to its previous peak.
Visual Signal: A green line connects the peaks on the indicator with the label "BUY DIV".
Meaning: Sellers are pushing the price down, but with less conviction. Selling pressure is evaporating.
-
-
-
B. SELL DIV (Bearish Divergence)
Occurs during an uptrend and signals a potential pullback or downward reversal.
Price Condition: The price hits a new higher high.
Indicator Condition: The green line (VI+) shows a lower peak of strength compared to its previous peak.
Visual Signal: A red line connects the peaks on the indicator with the label "SELL DIV".
Meaning: Buyers are driving the price to new highs, but buying momentum is fading. The trend is becoming "exhausted."
-
-
-
3. Parameter Configuration
Parameter Description Suggestion
Length The Vortex calculation period (default: 14). Use 7-10 for Scalping; 14-
21 for Day Trading; 28+ for
Swing Trading.
Pivot Lookback Number of candles needed to confirm a peak Increase this (e.g., 8-10)
(default: 5). for rarer but more
reliable divergence signals.
Dynamic View Hides the weaker trend line. Keep this ON for a clean
and focused chart reading.
-
-
-
4. Strategic Advice & Risk Management
1. Candle Confirmation: Do not enter the trade at the exact moment the label appears. Because divergences are based on "Pivots," the label appears with a delay equal to the Pivot Lookback. Wait for a break of the signal candle's high (for Buy Div) or low (for Sell Div).
2. Trend Filtering: Divergences are most powerful when they occur near historical support or resistance zones on the price chart.
3. Stop Loss Placement:
- For a BUY DIV signal, place the Stop Loss slightly below the recent price low.
- For a SELL DIV signal, place the Stop Loss slightly above the recent price high.
4. Confluence: If you receive a SELL DIV and simultaneously see the histogram shrinking toward the zero line, the probability of a successful trade increases significantly.
-
-
Gamma Hedging Pressure 🧠 HOW TO USE THIS (TRADING RULES):
🔴 NEGATIVE GAMMA (Red)
✔ Trade breakouts
✔ Hold winners
✔ Avoid fading moves
✔ Best for trend days
🟢 POSITIVE GAMMA (Green)
✔ Trade mean reversion
✔ Fade extremes
✔ Take profits quickly
✔ Best for scalping
⚪ NEUTRAL
❌ Reduce size
❌ Avoid forcing trades
CRE Multi Pair Scanner
✔ 1 lead asset (capital source)
✔ Multiple receiver assets
✔ CRE signal fires per asset
✔ Table + labels show rotation winner
Weekly VWAP (ETH to RTH) - OHLC4Weekly vwap with standard deviations. The vwap will carry over ETH data into RTH when RTH mode is turned on.
Capital Rotational Event (CRE)What is a Capital Rotational Event (CRE)?
A Capital Rotational Event is when money shifts from one asset to another — e.g., rotation from stocks into bonds, from tech into commodities, or from one sector into another.
In technical terms it typically shows:
✔ Divergence between two asset price series
✔ Relative strength switching direction
✔ Volume/flow confirming rotation
✔ Often precedes trend acceleration in the “receiver” asset
Important Level by DXB16**Important Level by DXB16 – The Essential Structure Indicator**
This indicator automatically displays the most important price zones of your market across three timeframes: Daily High/Low, Weekly High/Low, and Monthly High/Low. All levels update in real-time.
**What you'll see:**
- Current daily, weekly, and monthly highs and lows as clear horizontal lines
- Instant context of where the current price sits within the daily, weekly, and monthly range
- Classic reversal, range, and breakout zones at a glance
**Perfect for:**
- Identifying range-bound vs. trend days
- Liquidity grabs and mean-reversion setups at critical levels
- Higher timeframe context for intraday trading
- Futures, indices, forex, crypto
**Features:**
- 6 fully customizable colored lines (Daily, Weekly, Monthly – each High/Low)
- Adjustable label text size
- Clean, minimalist design without distracting boxes
- Fully dynamic – no manual adjustments needed
All-in-One SMC: CHOCH | BOS | FVG | OB | LiquidityThis script combines:
BOS (Break of Structure)
CHOCH (Change of Character)
Bullish & Bearish FVGs
Mitigation Order Blocks
Liquidity grabs (equal highs/lows)
Discount / Premium zones (relative to equilibrium)
Sizing Coach HUD Long and Short This HUD is designed as a systematic execution layer to bridge the gap between technical analysis and mechanical risk management. Its primary purpose is to eliminate the "discretionary gap"—the moment where a trader’s "feeling" about volatility or spreads causes hesitation.
By using this tool, you are not just watching price; you are managing a business where Risk is a constant and Size is a variable.
Core Functionality: The Position Sizing Engine
The HUD automates the math of "Capital-Based Tiers". Instead of choosing an arbitrary share size, the system calculates your position based on three predefined levels of conviction:
Tier 1 (1% Notional): Low-confidence or high-volatility "tester" positions.
Tier 2 (3% Notional): Standard, high-probability setups.
Tier 3 (5% Notional): High-conviction trades where multiple timeframes and factors align.
Execution Workflow (The Poka-Yoke)
To use this HUD effectively and eliminate the "hesitation" identified in the Five Whys analysis, follow this workflow:
Toggle Direction: Set the HUD to Long or Short based on your setup (e.g., NEMA Continuation).
Define Invalidation: Identify your technical stop (default is High/Low of Day +/- 5%). The HUD will automatically calculate the distance to this level.
Check Risk $: Observe the Risk $ row. This tells you exactly how much you will lose in dollars if the stop is hit. If the volatility is extreme (like the NASDAQ:SNDK 14% plunge), the HUD will automatically shrink your Shares count to keep this dollar amount constant.
Execute via HUD: Transmit the order using the Shares provided in your selected Tier. Do not manually adjust the size based on "gut feeling".
Trade Management: The "R" Focus
The bottom half of the HUD displays your Targets (PnL / R).
VWAP & Fibonacci Levels: Automatically plots and calculates profit targets at key institutional levels (VWAP, 0.618, 0.786, 0.886).
Binary Exit Logic: The color-coded logic flags any target that yields less than 1R (Reward-to-Risk) as a warning.
Systematic Holding: Ride the trade to the targets or until your technical exit (e.g., 1M candle close above/below NEMA) is triggered, ignoring the fluctuating P&L.
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)
Entry ChecklistEntry Checklist
A comprehensive multi-factor analysis tool for stock and crypto entry decisions, combining fundamental, technical, and market sentiment indicators in a dynamic table display.
🎯 Overview
This advanced Pine Script indicator provides traders and investors with a systematic checklist for evaluating potential entry points. It consolidates critical market data into a clean, color-coded table that adapts based on asset type and data availability.
📊 Key Features
Market Context Analysis:
Seasonality: Historical S&P 500 monthly return patterns with strength/weakness labels
Market Breadth (S5TH): Percentage of S&P 500 stocks above their 50-day moving average
Fear/Greed Index (VIX): Market sentiment indicator with threshold-based color coding
Fundamental Analysis (Stocks Only):
Earnings Dates: Upcoming earnings announcement tracking with 14-day warning
Growth Metrics: Year-over-year sales and EPS growth rates
Acceleration: Quarter-over-quarter growth acceleration analysis
Sector & Industry Analysis:
Sector Relative Strength: 20-day performance vs SPY benchmark
Industry Relative Strength: Granular industry ETF performance comparison
120+ Industry ETF Mappings: Comprehensive sector and industry classifications
Technical Analysis:
IBD-Style RS Rating: Multi-timeframe relative strength scoring (1-99 scale)
RS vs SPX: Stock performance relative to S&P 500
RS vs Sector: Performance relative to sector ETF
RS vs Industry: Performance relative to industry ETF
🎨 Visual Design
Dynamic Table: Bottom-right overlay with professional dark theme
Color-Coded Signals: Green (bullish), red (bearish), neutral (white)






















