Enhanced stochastic Momentum Oscillator with signalsOverall Benefits of This Enhanced SMO Script
Fully Customizable Inputs – period, smoothing type, source, and colors.
Gradient Momentum Ribbon – visually communicates strength and direction.
Overbought/Oversold Highlights – both lines and background for clarity.
Alert System Built-In – monitors crossovers and zone entries/exits.
Error-Resistant Calculations – prevents division by zero, avoids Pine v5 multi-line ternary issues.
Highly Visual – suitable for quick decision-making, not just raw numbers.
Flexible for Any Timeframe – can be used on multi-timeframe analysis.
Table that shows current condition (neutral, overbought and oversold)
Try with my other indicator highlighted in picture-
อินดิเคเตอร์และกลยุทธ์
Dual FUT/Spot price with next monthly expiryThis Pine Script dashboard indicator is specifically designed for pair trading strategies in Indian futures markets (NSE). Let me break down how it facilitates pair trading:
Core Pair Trading Concept
The script monitors two correlated stocks simultaneously (Symbol A and Symbol B), comparing their:
Spot prices vs Futures prices
Current month futures vs Next month futures
Premium/discount relationships
Key Pair Trading Features
1. Dual Symbol Monitoring
symbolA = "NSE:TCS" (Default)
symbolB = "NSE:INFY" (Default)
Allows traders to watch two stocks in the same sector (like TCS and Infosys in IT) to identify relative value opportunities.
2. Basis Analysis for Each Stock
The indicator calculates the basis (difference between futures and spot):
Price Difference: FUT - SPOT
Premium/Discount %: ((FUT - SPOT) / SPOT) × 100
This helps identify when one stock's futures are relatively more expensive than the other's.
3. Multi-Expiry View
Near Month Futures (1!): Current active contract
Next Month Futures (2!): Upcoming contract
This enables calendar spread analysis within each stock and helps anticipate rollover effects.
4. Comparative Table
The detailed table displays side-by-side:
Symbol Spot Price Near Future Near Diff (%)Next Monthly Next Diff (%)Lot SizeTCS₹3,500₹3,520+20 (+0.57%)₹3,535+35 (+1.00%)125INFY₹1,450₹1,455+5 (+0.34%)₹1,460+10 (+0.69%)600
5. Lot Size Integration
Critical for position sizing in pair trades - the indicator fetches actual contract lot sizes, enabling proper hedge ratio calculations.
Pair Trading Strategies Enabled
Strategy 1: Basis Divergence Trading
When TCS futures trade at +0.8% premium and INFY at +0.2%
Trade: Short TCS futures, Long INFY futures (betting on convergence)
The indicator highlights these differences with color-coded cells
Strategy 2: Calendar Spread Arbitrage
Compare near month vs next month premium for each stock
If TCS shows wider calendar spread than INFY, potential arbitrage exists
Trade the relative calendar spread difference
Strategy 3: Premium/Discount Reversal
Monitor which stock moves from premium to discount (or vice versa)
Color indicators (green/red) make this immediately visible
Enter pairs when relative premium relationships normalize
Strategy 4: Lot-Adjusted Pair Trading
Use lot size data to create market-neutral positions
Example: If TCS lot = 125 and INFY lot = 600
Ratio = 600/125 = 4.8:1 for rupee-neutral positioning
Visual Trading Cues
Green cells: Futures at premium (contango)
Red cells: Futures at discount (backwardation)
Purple values: Next month contracts
Yellow highlights: Spot prices
Practical Pair Trading Example
Scenario: Both stocks in same sector, historically correlated
Normal state: Both show +0.5% premium
Divergence: TCS jumps to +1.2%, INFY stays at +0.5%
Trade Signal:
Short TCS futures (expensive)
Long INFY futures (relatively cheap)
Exit: When premiums converge back to similar levels
Hedge ratio: Use lot sizes to maintain proper exposure balance
Advantages for Pair Traders
✓ Single-screen monitoring of both legs
✓ Real-time basis calculations eliminate manual math
✓ Multi-timeframe view (near + next month)
✓ Automatic lot size fetching for position sizing
✓ Visual alerts through color coding
✓ Percentage normalization for easy comparison
This indicator essentially transforms raw price data into actionable pair trading intelligence by highlighting relative value discrepancies between correlated assets in the futures market.
Enjoy!!
Distance from Anchored VWAPjust a simple script allowing you to drop anchored vwap from a daily event ie earnings release, breaking news etc. Calculates distance from anchored vwap to also give you an idea on extension away from move for pull ins or pull backs
Trade Journal ProTrade Journal Pro
A powerful, visual trading journal that enforces discipline with real-time feedback, reflective prompts, and strict risk limits — all in one clean overlay box.
Jesus is King — trade with wisdom, not emotion.
FEATURES
• AUTO-CALCULATED DAILY TRADES
→ `Trades Today = Wins + Losses + Breakevens` (no manual input needed)
• 4 ENFORCED RISK LIMITS
1. Max Trades Per Day
2. Max Risk Rule Violations
3. Max Consecutive Losses (tilt protection)
4. Max Total Losses Allowed (lifetime/session cap)
• SMART VISUAL FEEDBACK
• GREEN BOX = You hit a limit exactly → “WELL DONE!”
• RED BOX = Breached any limit → “STOP & REFLECT” + ALERT
• Dark = Normal (under all limits)
• REFLECTIVE PROMPTS (Customizable)
1. Why this setup?
2. What was my emotional state?
3. Did I follow my plan?
• LIVE ADVICE ENGINE
→ Win: “Great execution! Log what worked.”
→ Loss: “Loss = tuition. What did you learn?”
→ Breakeven: “Review entry/exit precision.”
• DAILY REMINDER
→ Always visible: “Trade the plan, not the emotion.”
• FULLY CUSTOMIZABLE
• Font size (Tiny → Huge)
• Box position (bars to the right)
• Toggle: Metrics / Prompts / Advice
• Custom colors, messages, limits
• ALERTS
• Breach any limit → Immediate alert
• Hit limit exactly → Discipline win notification
HOW TO USE
1. After each closed trade:
→ Update Wins, Losses, or Breakevens
→ Update Consecutive Losses (reset to 0 on win/BE)
→ Increment Risk Violations if you broke a rule
2. Answer the 3 prompts in your journal
3. Let the box guide your behavior:
• GREEN = Celebrate discipline
• RED = STOP TRADING. Reflect. Reset.
Perfect for day traders, swing traders, or anyone building a professional edge through journaling and risk control.
No strategy entries. No repainting. Pure accountability.
“The market is a mirror. This journal is the polish.”
Developed with integrity. Built to protect your capital — and your peace.
Purchasing Power vs Gold, Stocks, Real Estate, BTC (1971 = 100)Visual comparison of U.S. dollar purchasing power versus major assets since 1971, when the U.S. ended the gold standard. Each asset is normalized to 100 in 1971, showing how real value has shifted across gold, real estate, stocks, and Bitcoin over time.
Source: FRED (CPIAUCSL, SP500, MSPUS) • OANDA (XAUUSD) • TradingView (INDEX:BTCUSD/BLX)
Visualization by 3xplain
Chart Info Display (HOKO) 2It displays 3 things on the screen in order: symbol, date, time frame. You can use it to capture educational videos to make your chart more beautiful, more private, and more practical.
DSS Bressert by MaxCapDSS Bressert by MaxCap is an enhanced version of the Double Smoothed Stochastic (DSS) oscillator, originally developed by Robert Bressert.
It is designed to identify overbought/oversold market conditions and detect momentum shifts using a double-smoothing stochastic calculation.
⸻
⚙️ How It Works
This indicator applies a two-stage stochastic calculation with double exponential smoothing to reduce noise and provide smoother trend signals.
1. Phase 1 (MIT):
A standard stochastic is calculated over the selected Stochastic_period, measuring the current close relative to the high-low range.
This value is then smoothed using an exponential moving average (EMA).
2. Phase 2 (DSS):
A second stochastic is applied on the smoothed MIT line using the same stochastic period, followed by another EMA smoothing step.
The result is a smooth and responsive momentum oscillator that filters out market noise.
This double-smoothing technique allows DSS to remain responsive to price changes while avoiding false reversals that are common with the traditional stochastic.
⸻
🎨 Visualization
• The orange line represents the main DSS value.
• Blue dots appear when DSS is rising (bullish momentum).
• Red dots appear when DSS is falling (bearish momentum).
• The horizontal levels 20 and 80 mark oversold and overbought zones, respectively.
⸻
🧠 Signal Interpretation
• DSS > 80: Overbought zone — possible downward reversal.
• DSS < 20: Oversold zone — possible upward rebound.
• DSS rising after crossing above 20: Bullish signal.
• DSS falling after crossing below 80: Bearish signal.
• Color change (blue ↔ red) may indicate a momentum shift.
⸻
⚙️ Input Parameters
Parameter Description Default Value
EMA Period EMA smoothing period 8
Stochastic Period Period for stochastic calculation 13
⸻
💡 Advantages
• Smoother and more reliable than a standard stochastic.
• Reduces market noise and false signals.
• Accurately reflects real momentum shifts.
• Color-coded visualization for clearer signal reading.
⸻
Custom Session Background Highlighter (Asia / London / NY)This was something i am used to using with Motivewave, and did not see a good one with TV. You can set any time frame, and change the background color to any color you want. I like to have a lightly different color background for Asia (6pm to 3am),, London, (3am to 9:30 am) and NY (9:30am to 5 pm). You can set your time as you wish, and change the colors as you like. This was created with the help of ChatGPT and seems to be working perfectly fine, but if you encounter any issues copy and paste the code to chatgpt and ask to revise it as needed.
Backtest - Ichimoku CloudThis script find the entry position on a chart using Ichimoku clud conditions.
and also exit condition based on base line & price close w.r.t to Ichi cloud.
Volatility Trend Indicator+Overview:
This indicator measures short-term volatility relative to its smoothed average. It helps visualize whether volatility is increasing or decreasing over time. The indicator is displayed in a separate pane below the main price chart for clarity
Visualization:
Line plot of V
Zero line for reference
Background color highlights trend:
Green → rising volatility
Red → falling volatility
Yellow → neutral
PivotLiveLibrary "PivotLive"
zigCore(lo, hi, d, dev, bs)
Parameters:
lo (float)
hi (float)
d (int)
dev (int)
bs (int)
Chart Info Display (HOKO)this script show you three information , symbol , date , time frame .........................................................................................................................................................
Session Vertical Lines – WIB (Consistent)Session Line by farisradifana
Give the Session on Indonesian Time :
Asian Session : 6 A.M
London Session : 2 P.M
New York Session : 7 P.M
Price Movement Alert with Previous Close as ReferenceFunctionality of the Indicator
The "Price Movement Alarm with Previous Day Close as Reference" indicator is a tool that helps you monitor significant price levels based on the previous day's closing price. The indicator calculates both decline and rise thresholds in specified percentages to generate potential trade alerts. The lines on the chart represent these thresholds, and the corresponding labels show the exact percentage.
Usage Instructions:
Previous Day's Close: The indicator uses the previous trading day's close as the reference point.
Setting Decline and Rise Percentages: You can adjust the alarm levels for declines (e.g., 0.5%, 1.0%, 1.5%, 2.0%, 2.5%, 3.0%) and rises (e.g., 0.5%, 1.0%, 1.5%, 2.0%, 2.5%, 3.0%).
Lines and Labels: The indicator draws lines on the chart and displays labels that indicate the percentage of price movement.
Market Analysis: Analyze the price movements to make potential trading decisions.
Market in Equilibrium:
A market is in equilibrium when price movements remain within a narrow range (e.g., 0.5% to 1%). During this phase, volatility is low, and there are no significant price changes.
Market not in Equilibrium:
A market is not in equilibrium when price movements fall outside the narrow range (e.g., above 1%). During this phase, larger price movements can occur, often triggered by news or economic events.
HTF Candle Countdown Timer//@version=5
indicator("HTF Candle Countdown Timer", overlay=true)
// ============================================================================
// INPUTS - SETTINGS MENU
// ============================================================================
// --- Mode Selection ---
mode = input.string(title="Mode", defval="Auto", options= ,
tooltip="Auto: Αυτόματη αντιστοίχιση timeframes Custom: Επιλέξτε το δικό σας timeframe")
// --- Custom Timeframe Selection ---
customTF = input.timeframe(title="Custom Timeframe", defval="15",
tooltip="Ενεργό μόνο σε Custom Mode")
// --- Table Position ---
tablePos = input.string(title="Table Position", defval="Bottom Right",
options= )
// --- Colors ---
textColor = input.color(title="Text Color", defval=color.white)
bgColor = input.color(title="Background Color", defval=color.black)
transparentBg = input.bool(title="Transparent Background", defval=false,
tooltip="Ενεργοποίηση διάφανου φόντου")
// --- Text Size ---
textSize = input.string(title="Text Size", defval="Normal",
options= )
// ============================================================================
// FUNCTIONS
// ============================================================================
// Μετατροπή string position σε table position constant
getTablePosition(pos) =>
switch pos
"Top Left" => position.top_left
"Top Right" => position.top_right
"Bottom Left" => position.bottom_left
"Bottom Right" => position.bottom_right
=> position.bottom_right
// Μετατροπή string size σε size constant
getTextSize(size) =>
switch size
"Auto" => size.auto
"Tiny" => size.tiny
"Small" => size.small
"Normal" => size.normal
"Large" => size.large
"Huge" => size.huge
=> size.normal
// Αυτόματη αντιστοίχιση timeframes
getAutoTimeframe() =>
currentTF = timeframe.period
string targetTF = ""
if currentTF == "1"
targetTF := "15"
else if currentTF == "3"
targetTF := "30"
else if currentTF == "5"
targetTF := "60"
else if currentTF == "15"
targetTF := "240"
else if currentTF == "60"
targetTF := "D"
else if currentTF == "240"
targetTF := "W"
else
// Default fallback για μη-mapped timeframes
targetTF := "60"
targetTF
// Μετατροπή timeframe string σε λεπτά για σύγκριση
timeframeToMinutes(tf) =>
float minutes = 0.0
if str.contains(tf, "D")
multiplier = str.tonumber(str.replace(tf, "D", ""))
minutes := na(multiplier) ? 1440.0 : multiplier * 1440.0
else if str.contains(tf, "W")
multiplier = str.tonumber(str.replace(tf, "W", ""))
minutes := na(multiplier) ? 10080.0 : multiplier * 10080.0
else if str.contains(tf, "M")
multiplier = str.tonumber(str.replace(tf, "M", ""))
minutes := na(multiplier) ? 43200.0 : multiplier * 43200.0
else
minutes := str.tonumber(tf)
minutes
// Format countdown σε ώρες:λεπτά:δευτερόλεπτα ή λεπτά:δευτερόλεπτα
formatCountdown(milliseconds) =>
totalSeconds = math.floor(milliseconds / 1000)
hours = math.floor(totalSeconds / 3600)
minutes = math.floor((totalSeconds % 3600) / 60)
seconds = totalSeconds % 60
string result = ""
if hours > 0
result := str.format("{0,number,00}:{1,number,00}:{2,number,00}", hours, minutes, seconds)
else
result := str.format("{0,number,00}:{1,number,00}", minutes, seconds)
result
// Μετατροπή timeframe σε readable format
formatTimeframe(tf) =>
string formatted = ""
if str.contains(tf, "D")
formatted := tf + "aily"
else if str.contains(tf, "W")
formatted := tf + "eekly"
else if str.contains(tf, "M")
formatted := tf + "onthly"
else if tf == "60"
formatted := "1H"
else if tf == "240"
formatted := "4H"
else
formatted := tf + "min"
formatted
// ============================================================================
// MAIN LOGIC
// ============================================================================
// Επιλογή target timeframe βάσει mode
targetTimeframe = mode == "Auto" ? getAutoTimeframe() : customTF
// Validation: Έλεγχος αν το target timeframe είναι μεγαλύτερο από το τρέχον
currentTFMinutes = timeframeToMinutes(timeframe.period)
targetTFMinutes = timeframeToMinutes(targetTimeframe)
var string warningMessage = ""
if targetTFMinutes <= currentTFMinutes
warningMessage := "⚠ HTF < Current TF"
else
warningMessage := ""
// Υπολογισμός του χρόνου κλεισίματος του HTF candle
htfTime = request.security(syminfo.tickerid, targetTimeframe, time)
htfTimeClose = request.security(syminfo.tickerid, targetTimeframe, time_close)
// Υπολογισμός υπολειπόμενου χρόνου σε milliseconds
remainingTime = htfTimeClose - timenow
// Format countdown
countdown = warningMessage != "" ? warningMessage : formatCountdown(remainingTime)
// Format timeframe για εμφάνιση
displayTF = formatTimeframe(targetTimeframe)
// ============================================================================
// TABLE DISPLAY
// ============================================================================
// Δημιουργία table
var table countdownTable = table.new(
position=getTablePosition(tablePos),
columns=2,
rows=2,
bgcolor=transparentBg ? color.new(bgColor, 100) : bgColor,
frame_width=1,
frame_color=color.gray,
border_width=1)
// Update table content
if barstate.islast
// Header
table.cell(countdownTable, 0, 0, "Timeframe:",
text_color=textColor,
bgcolor=transparentBg ? color.new(bgColor, 100) : bgColor,
text_size=getTextSize(textSize))
table.cell(countdownTable, 1, 0, displayTF,
text_color=textColor,
bgcolor=transparentBg ? color.new(bgColor, 100) : bgColor,
text_size=getTextSize(textSize))
// Countdown
table.cell(countdownTable, 0, 1, "Countdown:",
text_color=textColor,
bgcolor=transparentBg ? color.new(bgColor, 100) : bgColor,
text_size=getTextSize(textSize))
table.cell(countdownTable, 1, 1, countdown,
text_color=warningMessage != "" ? color.orange : textColor,
bgcolor=transparentBg ? color.new(bgColor, 100) : bgColor,
text_size=getTextSize(textSize))
// ============================================================================
// END OF SCRIPT
// ============================================================================
Sunmool's NY Lunch Model BacktestingICT NY Lunch Model Backtesting (12:00–13:00 NY) 🗽🍔
This research indicator tests an ICT narrative using the New York lunch window (12:00–13:00 America/New_York). It records that hour’s high/low and measures, during the post-lunch session (default 13:00–16:00), how often:
⬆️ If the afternoon trends up, the Lunch Low gets swept first.
⬇️ If the afternoon trends down, the Lunch High gets swept first.
It reports these as conditional probabilities, not trade signals. 📈
👀 What it shows
🟦 Lunch Range box (toggle): high/low from 12:00–13:00 NY
🔻🔺 Sweep signals (bar-anchored)
Low sweep: triangle below bar + optional “L”
High sweep: triangle above bar + optional “H”
🧱 Optional small box wrapping the swept candle
📊 Stats table (top-right)
P(L-swept | Up) — % of Up-days where Lunch Low was swept
P(H-swept | Down) — % of Down-days where Lunch High was swept
🔁 Contradictions + sample sizes (Up-days / Down-days)
🎯 Direction logic (Up/Down)
Anchor: 13:00 open (pmOpen) ⏰
Threshold: ATR × multiple or % from 13:00
Close ≥ pmOpen + threshold → Up-day
Close ≤ pmOpen − threshold → Down-day
Tiny moves under the threshold are ignored to reduce noise 🧹
⚙️ Inputs
🌐 Timezone: America/New_York (DST handled)
🍽️ Lunch window: 1200–1300
🕓 Post-lunch window: default 1300–1600 (try 17:00/20:00 for sensitivity)
📐 Trend threshold: ATR / Percent (with length/multiple or % level)
📅 Weekdays-only toggle (FX/Equities style)
👁️ Display toggles: Lunch box / sweep arrows / sweep text / sweep candle box / stats table
🔔 TF hint when chart TF > 15m
🧭 How to use
Use 5–15m charts for accurate lunch range capture.
Scroll ~1 year for meaningful samples.
Run sensitivity checks: vary ATR/% thresholds and the post-lunch end time.
For crypto, compare with vs without weekends. 🚀
🧠 Reading the results
High P(L-swept | Up) with a solid Up-day count ⇒ on up afternoons, lunch low is often swept.
High P(H-swept | Down) ⇒ on down afternoons, lunch high is often swept.
Lower Contradictions = cleaner tendency.
Remember: this is a probabilistic tendency, not a rule. 🎲
📝 Notes & limits
All markers (arrows, text, sweep boxes) are bar-anchored; the lunch range box is a research overlay you can toggle.
Real-time vs historical bar building can differ—interpret on bar close. 🔒
Standard Daily VWAPVwap strategy based on mainly usd pairs for scalping it starts at the start of everyday and ends at the end of everyday and it is a line thats colour can be changed so u can design it acc to u it is best for scalping and taking small trades
VWAP Reset at Asian Session (Midnight UTC)Vwap strategy based on mainly usd pairs for scalping it starts at the start of everyday and ends at the end of everyday and it is a line thats colour can be changed so u can design it acc to u it is best for scalping and taking small trades
Indicador Técnico Avanzado sbuscamos entradas para poder comprar y vender papeles de una correcta manera
VWMA Series (Dynamic) mtf - Dual Gradient Colored"VWMA Series (Dynamic) mtf - Dual Gradient Colored" is a multi-timeframe (MTF) Volume-Weighted Moving Average (VWMA) ribbon indicator that plots up to 60 sequential VWMAs with arithmetic progression periods (e.g., 1, 4, 7, 10…). Each VWMA line is dual-gradient colored: Base hue = Greenish (#2dd204) if close > VWMA (bullish), Magenta (#ff00c8) if close < VWMA (bearish)
Brightness gradient = fades from base → white as period increases (short → long-term)
Uses daily resolution by default (timeframe="D"), making it ideal for higher-timeframe trend filtering on lower charts.Key FeaturesFeature
Description
Dynamic Periods
Start + i × Increment → e.g., 1, 4, 7, 10… up to 60 terms
Dual Coloring
Bull/Bear + Gradient (short = vivid, long = pale)
MTF Ready
Plots daily VWMAs on any lower timeframe (1H, 15M, etc.)
No Lag on Long Sets
Predefined "best setups" eliminate repainting/lag
Transparency Control
Adjustable line opacity for clean visuals
Scalable
Up to 60 VWMAs (max iterations)
Recommended Setups (No Lag)Type
Example Sequence (Start, Inc, Iter)
Long-Term Trend
1, 3, 30 → 1, 4, 7 … 88
93, 3, 30 → 93, 96 … 180
372, 6, 30 → 372, 378 … 546
Short-Term Momentum
1, 1, 30 → 1, 2, 3 … 30
94, 2, 30 → 94, 96 … 152
1272, 5, 30 → 1272, 1277 … 1417
Key Use CasesUse Case
How to Use
1. Multi-Timeframe Trend Alignment
On 1H chart, use 1, 3, 30 daily VWMAs → price above all green lines = strong uptrend
2. Dynamic Support/Resistance
Cluster of long-term pale VWMAs = major S/R zone
3. Early Trend Change Detection
Short-term vivid lines flip from red → green before longer ones = early bullish signal
4. Ribbon Compression/Expansion
Tight bundle → consolidation; fanning out → trend acceleration
5. Mean Reversion Entries
Price far from long-term VWMA cluster + short-term reversal = pullback trade
6. Volume-Weighted Fair Value
Long-period VWMAs reflect true average price paid over weeks/months
Visual Summary
Price ↑
████ ← Short VWMA (vivid green = close > VWMA)
███
██
█
. . . fading to white
█
██
███
████ ← Long VWMA (pale = institutional average)
Green lines = price above VWMA (bullish bias)
Magenta lines = price below VWMA (bearish bias)
Gradient = shorter (left) → brighter; longer (right) → whiter
Ribbon thickness = trend strength (wide = strong, narrow = weak)
Best For Swing traders using daily trend on intraday charts
Volume-based strategies (VWMA > SMA)
Clean, colorful trend visualization without clutter
Institutional fair value anchoring via long-period VWMAs
Pro Tip:
Use Start=1, Increment=3, Iterations=30 on a 4H chart with timeframe="D" → perfect daily trend filter with zero lag and beautiful gradient flow.
RRG Sector Snapshot RRG Sector Snapshot · Clear UI — User Guide
What this indicator does
Purpose: Visualize sector rotation by comparing each sector’s Relative Strength (RS-Ratio) and RS-Momentum versus a benchmark (e.g., VNINDEX).
Output: A quadrant map (table overlay) that positions each sector into one of four regimes:
LEADING (top-right): Strong and accelerating — leadership zone.
WEAKENING (bottom-right): Strong but decelerating — may be topping or consolidating.
LAGGING (bottom-left): Weak and decelerating — avoid unless mean-reverting.
IMPROVING (top-left): Weak but accelerating — candidates for next rotation into leadership.
How it works (under the hood)
X-axis (Strength): RS-Ratio = Sector Close / Benchmark Close, then normalized with a Z-Score over a lookback (normLen).
Y-axis (Momentum): Linear-regression slope of RS-Ratio over rsLen, then normalized with a Z-Score (normLen).
Mapping to grid: Both axes are Z-Scores scaled to a square grid (rrgSize × rrgSize) using a zoom factor (rrgScale). The center is neutral (0,0). Momentum increases upward (Y=0 is the top row in the table).
Quick start (3 minutes)
Add to chart:
TradingView → Pine Editor → paste the script → Save → Add to chart.
Set a benchmark: In inputs, choose Benchmark (X axis) — default INDEX:VNINDEX. Use VN30 or another index if it better reflects your universe.
Load sectors: Fill S1..S10 with sector or index symbols you track (up to 10). Set Slots to Use to the number you actually use.
Adjust view:
rrgSize (grid cells): 18–24 is a good starting point.
rrgScale (zoom): 2.5–3.5 typically; decrease to “zoom out” (points cluster near center), increase to “zoom in” (points spread to edges).
Read the map:
Prioritize sectors in LEADING; shortlist sectors in IMPROVING (could rotate into LEADING).
WEAKENING often marks late-cycle strength; LAGGING is typically avoid.
Inputs — what they do and how to change them
General
Analysis TF: Timeframe used to compute RRG (can be different from chart’s TF). Daily for swing, 1H/4H for tactical rotation, Weekly for macro view.
Benchmark (X axis): The index used for RS baseline (e.g., INDEX:VNINDEX, INDEX:VN30, major ETFs, or a custom composite).
RRG Calculation
RS Lookback (rsLen): Bars used for slope of RS (momentum).
Daily: 30–60 (default 40)
Intraday (1H/4H): 20–40
Weekly: 26–52
Normalization Lookback (Z-Score) (normLen): Window for Z-Score on both axes.
Daily: 80–120 (default 100)
Intraday: 40–80
Weekly: 52–104
Tip: Shorter lookbacks = more responsive but noisier; longer = smoother but slower.
RRG HUD (Table)
Show RRG Snapshot (rrgEnable): Toggle the table on/off.
Position (rrgPos): top_right | top_left | bottom_right | bottom_left.
Grid Size (Cells) (rrgSize): Table dimensions (N×N). Larger = more resolution but takes more space.
Z-Scale (Zoom) (rrgScale): Maps Z-Scores to the grid.
Smaller (2.0–2.5): Zoom out (more points near center).
Larger (3.5–4.0): Zoom in (emphasize outliers).
Appearance
Tag length (tagLen): Characters per sector tag. Use 4–6 for clarity.
Text size (textSizeOp): Tiny | Small | Normal | Large. Use Large for presentation screens or dense lists.
Axis thickness (axisThick): 1 = thin axis; 2 = thicker double-strip axis.
Quadrant alpha (bgAlpha): Transparency of quadrant backgrounds. 80–90 makes text pop.
Sectors (Max 10)
Slots to Use (sectorSlots): How many sector slots are active (≤10).
S1..S10: Each slot is a symbol (index, sector index, or ETF). Replace defaults to fit your market/universe.
How to interpret the map
Quadrants:
Leading (top-right): Relative strength above average and improving — trend-follow candidates.
Weakening (bottom-right): Still strong but momentum cooling — watch for distribution or pauses.
Lagging (bottom-left): Underperforming and still losing momentum — avoid unless doing mean-reversion.
Improving (top-left): Early recovery — candidates to transition into Leading if the move persists.
Overlapping sectors in one cell: The indicator shows “TAG +n” where TAG is the first tag, +n is the number of additional sectors sharing that cell. If many overlap:
Increase rrgSize, or
Decrease rrgScale to zoom out, or
Reduce Slots to Use to a smaller selection.
Suggested workflows
Daily swing
Benchmark: VNINDEX or VN30
rsLen 40–60, normLen 100–120, rrgSize 18–24, rrgScale 2.5–3.5
Routine:
Identify Leading sectors (top-right).
Spot Improving sectors near the midline moving toward top-right.
Confirm with price/volume/breakout on sector charts or top components.
Intraday (1H/4H) tactical
rsLen 20–40, normLen 60–100, rrgScale 2.0–3.0
Expect faster rotations and more noise; tighten filters with your own entry rules.
Weekly (macro rotation)
rsLen 26–52, normLen 52–104, rrgScale 3.0–4.0
Great for portfolio tilts and sector allocation.
Tuning tips
If everything clusters near center: Increase rrgScale (zoom in) or reduce normLen (more contrast).
If points are too spread: Decrease rrgScale (zoom out) or increase normLen (smoother normalization).
If the table is too big/small: Change rrgSize (cells).
If tags are hard to read: Increase textSizeOp to Large, tagLen to 5–6, and consider bgAlpha ~80–85.
Troubleshooting
No table on chart:
Ensure Show RRG Snapshot is enabled.
Change Position to a different corner.
Reduce Grid Size if the table exceeds the chart area.
Many sectors “missing”:
They’re likely overlapping in the same cell; the cell will show “TAG +n”.
Increase rrgSize, decrease rrgScale, or reduce Slots to Use.
Early bars show nothing:
You need enough data for rsLen and normLen. Scroll back or reduce lookbacks temporarily.
Best practices
Use RRG for context and rotation scouting, then confirm with your execution tools (trend structure, breakouts, volume, risk metrics).
Benchmark selection matters. If most of your watchlist tracks VN30, use INDEX:VN30 as the benchmark to get a truer relative read.
Revisit settings per timeframe. Intraday needs more responsiveness (shorter lookbacks, smaller Z-Scale); weekly needs stability (longer lookbacks, larger Z-Scale).
FAQ
Can I use ETFs or custom indices as sectors? Yes. Any symbol supported by TradingView works.
Can I track individual stocks instead of sectors? Yes (up to 10); just replace the S1..S10 symbols.
Why Z-Score? It standardizes each axis to “how unusual” the value is versus its own history — more robust than raw ratios across different scales.
[ i]
How to Set Up (Your Market Template)
This is the most important part for customizing the indicator to any market.
Step 1: Choose Your TF & Benchmark
Open the indicator's Settings.
Analysis TF: Set the timeframe you want to analyze (e.g., D for medium-term, W for long-term).
Benchmark (Trục X): This is the index you want to compare against.
Vietnamese Market: Leave the default INDEX:VNINDEX.
US Market: Change to SP:SPX or NASDAQ:NDX.
Crypto Market: Change to TOTAL (entire market cap) or BTC.D (Bitcoin Dominance).
Step 2: Input Your "Universe" (The 10 Slots)
This is where you decide what to track. You have 10 slots (S1 to S10).
For Vietnamese Sectors (Default):
Leave the default sector codes like INDEX:VNFINLEAD (Finance), INDEX:VNREAL (Real Estate), INDEX:VNIND (Industry), etc.
Template for Crypto "Sectors":
S1: BTC.D
S2: ETH.D
S3: TOTAL2 (Altcoin Market Cap)
S4: TOTAL.DEFI (DeFi)
S5: CRYPTOCAP:GAME (GameFi)
...and so on.
Template for Blue Chip Stocks:
Benchmark: INDEX:VN30
S1: HOSE:FPT
S2: HOSE:VCB
S3: HOSE:HPG
S4: HOSE:MWG
...and so on.
Template for Commodities:
Benchmark: TVC:DXY (US Dollar Index)
S1: TVC:GOLD
S2: TVC:USOIL
S3: TVC:SILVER
S4: COMEX:HG1! (Copper)
...and so on.
Step 3: Fine-Tuning
RS Lookback: A larger number (e.g., 100) gives a smoother, long-term view. A smaller number (e.g., 20) is more sensitive to short-term changes.
Z-Scale (Zoom): This is the "magnification" of the map.
If all your sectors are crowded in the middle, increase this number (e.g., 4.0) to "zoom in."
If your sectors are stuck on the edges, decrease this number (e.g., 2.0) to "zoom out."
Tag length: How many letters to display for the ticker (e.g., 4 will show VNFI).
Volatility Resonance CandlesVolatility Resonance Candles visualize the dynamic interaction between price acceleration, volatility, and volume energy.
They’re designed to reveal moments when volatility expansion and directional momentum resonate — often preceding strong directional moves or reversals.
🔬 Concept
Traditional candles display direction and range, but they miss the energetic structure of volatility itself.
This indicator introduces a resonance model, where ATR ratio, price acceleration, and volume intensity combine to form a composite signal.
* ATR Resonance: compares short-term vs. long-term volatility
* Acceleration: captures the rate of price change
* Volume Energy: reinforces the move’s significance
When these components align, the candle color “resonates” — brighter, more intense candles signal stronger volatility–momentum coupling.
⚙️ Features
* Adaptive Scaling
Normalizes energy intensity dynamically across a user-defined lookback period, ensuring consistency in changing market conditions.
* Power-Law Transformation
Optional non-linear scaling (gamma) emphasizes higher-energy events while keeping low-intensity noise visually subdued.
* Divergence Mode
When enabled, colors can invert to highlight energy divergence from candle direction (e.g., bearish pressure during bullish closes).
* Customizable Styling
Full control over bullish/bearish base colors, transparency scaling, and threshold sensitivity.
🧠 Interpretation
* Bright / High-Intensity Candles → Strong alignment of volatility and directional energy.
Often signals the resonant phase of a move — acceleration backed by volatility expansion and volume participation.
* Dim / Low-Intensity Candles → Energy dispersion or consolidation.
These typically mark quiet zones, pauses, or inefficient volatility.
* Opposite-Colored Candles (if divergence mode on) → Potential inflection zones or hidden stress in the trend structure.
⚠️ Disclaimer
This script is for educational purposes only.
It does not constitute financial advice, and past performance is not indicative of future results. Always do your own research and test strategies before making trading decisions.






















