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.
指标和策略
ka66: Symbol InformationThis shows a table of all current (Pine v6) `syminfo.` values.
Please note this is primarily of use to Pine Developers, or the curious trader.
There are a few of these around on TradingView, but many seem to focus on the use case they have. This script just dumps all values, in alphabetical order of properties.
You can use this to inspect the details of the symbol, which in turn, can be fed into various scripts covering tasks such as:
Position Sizing calculation (which requires things like tick, pointvalue, and currency details)
Recommendation engines (which use the recommendation_* properties)
Fundamentals on stocks (which may use share count information, and possibly employee information)
Note that not all table values are populated, as they depend on the instrument being introspected. For example, a share ticker will have some different details to a Forex pair. The `NaN` values (the "Not A Number" special value in programming parlance) are not a bug, they are simply Pine reporting that no value is set for it. I have opted to dump out values as-is as the focus is developers.
My motivation to create it was to write a position sizing tool. Additionally, the output of this script is cleanly formatted, with monospace fonts and conventional alignment for tables/forms with key and values. It also allows customising the table position. Ideally this feature is made part of the default TradingView customisation, but at this time, it is not, and tables don't auto-adjust their positions.
Dante Broadening FormationThis auto-draws an attempt at best fit broadening formation used for trading "The Strat". Looking for reversals around the extremes of price discovery near the higher highs and lower lows can open up to big setup combined with the proper Strat setups, entries, exits, risk management and practice. Always paper trade first and protect your bankroll. Know that this tool isn't perfect, it's just saves some time drawing broadening formations and can help to train what they look like and why they are important. Open to feedback, enjoy!
Gold $25 line + CDCGold Trading CDC + option line
trading with ema to see trendline + Option strike price
Directional Volume HeatmapDirectional Volume Heatmap is a tactical volume visualization tool designed to detect real-time shifts in market pressure. It plots a smoothed histogram of directional volume bias, color-coded to reflect bullish and bearish intensity. The indicator includes optional signal markers for declining buy-side and sell-side volume, helping traders anticipate momentum fades and potential reversals before they appear in price action.
🔍 Features:
- Volume Bias Histogram: Displays smoothed bullish/bearish volume using candle body logic.
- Dual Decline Detection: Flags fading buy or sell pressure with customizable lookback and toggles.
- Color-Coded Heatmap: Green-to-red gradient reflects real-time sentiment shifts.
- Modular Design: Built for integration with trend overlays, confirmation filters, and automated systems.
Use Cases:
- Detect early signs of exhaustion in trending moves
- Confirm breakout strength or fading rallies
- Layer volume context beneath HullMA, ATR overlays, or trend bias scoring
- Deploy in live dashboards for XAUUSD or other high-volatility assets
This module is optimized for precision, adaptability, and deployment-ready workflows. Ideal for traders building scenario-based engines or refining tactical edge in volatile environments.
Smart Money Volume Tools | Lyro RSSmart Money Volume Tools | Lyro RS
Overview
The Smart Money Volume Tools (SMVT) is a multi-dimensional volume-based analysis suite designed to visualize the interplay between price action, moving averages, and smart money behavior.
By integrating dynamic moving averages, volume normalization, and multi-timeframe intelligence, SMVT helps traders identify when institutional (smart money) or retail participants are influencing price movements — all in a single, adaptive display.
Unlike traditional oscillators or trend tools, SMVT dynamically adjusts its sensitivity and thresholds based on volume z-scores and normalized momentum, revealing true intent behind price shifts rather than reacting to them.
🔹 Key Features
4 Core Analytical Modes:
Trail Mode – Identifies directional bias using dynamic volume-weighted trails based on adaptive ATR multipliers.
Volume Mode – Displays normalized volume strength vs. price trend, highlighting volume-driven expansions.
Smart Money Volume Mode – Detects institutional buying/selling spikes from lower timeframes using volume z-score outliers.
Retail Money Volume Mode – Contrasts retail-driven impulses to visualize crowd behavior and exhaustion points.
Dynamic Volume Normalization: Converts volume impulses into a 0–100 range using a sigmoid function for smoother interpretation.
Multi-Timeframe Intelligence: Automatically reads lower timeframe volume data to distinguish smart vs. retail activity.
Adaptive Color Systems: Multiple palette modes ( Classic , Mystic , Accented , Royal ) or full custom color control.
Signal Table Overlay: Built-in real-time module summary showing status for Trail , Volume , Smart Money , and Retail Money — right on your chart.
🔹 How It Works
Volume Strength Calculation:
Calculates relative volume strength using a moving average baseline, then normalizes the result via a sigmoid function — mapping activity into a clean 0–100 range.
Smart Money Detection:
Scans lower timeframe data for extreme volume z-scores ( z > 2 ) to pinpoint institutional accumulation or distribution zones.
Trail Logic:
Uses adaptive upper and lower trails based on ATR and volume intensity to track volatility-adjusted trend direction.
Color Logic:
Trail, candle, and fill colors change dynamically according to the active signal type and selected palette — making directional bias instantly visible.
🔹 Practical Use
Swing Confirmation (Trail Mode): Confirms sustained bullish or bearish momentum supported by volume, ideal for trailing positions and managing exits.
Volume Expansion (Volume Mode): Highlights key moments when institutional liquidity pushes price before visible breakout confirmation.
Smart vs. Retail Divergence: Identify conflicts between retail activity and smart money to detect exhaustion or reversal points early.
Table Overlay Utility: Instantly see all active signals across modules in one compact, on-chart interface.
🔹 Customization
Custom color palettes or manual bullish/bearish color selection.
Adjustable EMA lengths and Volume SMA period .
Selectable lower timeframe source for Smart Money analysis.
Flexible table position & size controls — choose between Top, Middle, Bottom and Tiny to Huge.
Switch freely between Trail , Volume , Smart Money , and Retail Money modes.
Credits
Thank you to @AlgoAlpha for the smart money and retail activity source code.
⚠️Disclaimer
This indicator is a tool for technical analysis and does not provide guaranteed results. It should be used in conjunction with other analysis methods and proper risk management practices. The creators of this indicator are not responsible for any financial decisions made based on its signals.
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
RSI + MFI + VolumeIndicator shows RSI + MFI + Volume in one panel, marks divergences separate for wicks and bodies, green dots shows where MFI and RSI are oversold
Price Above PDH - Complete Multi-Confirmation Alert
Cashapp $jmoskyhigh
Initial Breakout: Must have ALL confirmations to even start counting
During Hold Period: If ANY confirmation fails at ANY bar, the counter RESETS to zero
Must Re-qualify: If confirmations fail, must cross PDH again with all confirmations to restart
Alert Only Fires: When ALL confirmations are continuously met for the ENTIRE hold period
3. Visual Feedback:
Green background: Above PDH + ALL confirmations present
Red background: Above PDH but MISSING one or more confirmations
Red X above bar: Shows when a confirmation is lost during breakout (counter resets)
Green triangle with "✓ ALL": Alert triggered after full confirmation period
4. Example Scenario:
Scenario 1 - SUCCESS:
Bar 1: Price crosses PDH, Volume spike, MA bullish, Above VWAP → Counter = 1
Bar 2: Still above PDH, ALL confirmations still met → Counter = 2
Bar 3: Still above PDH, ALL confirmations still met → Counter = 3
Bar 4: Still above PDH, ALL confirmations still met → Counter = 4
Bar 5: Still above PDH, ALL confirmations still met → Counter = 5 → ALERT!
Scenario 2 - FAILURE (resets):
Bar 1: Price crosses PDH, Volume spike, MA bullish, Above VWAP → Counter = 1
Bar 2: Still above PDH, ALL confirmations still met → Counter = 2
Bar 3: Still above PDH, but volume drops below threshold → RESET Counter = 0
Bar 4: Still above PDH, ALL confirmations back → Counter = 1 (starts over)
5. Info Panel:
Shows which specific confirmations are failing
"OFF" displayed for disabled confirmations
Big "ALL CONFIRMED" row shows overall status
Warning message if confirmations are lost during breakout
This ensures you only get alerts when the setup is truly strong with ALL confirmations maintained throughout the entire hold period! 🎯
Pivots High Low Live DetectionPivots High Low Live Detection
Identifies and visualizes swing highs and lows on the chart in real time.
Helps to observe evolving market structure by connecting confirmed or developing pivot points with lines and labels.
Using a configurable lookback, minimum deviation, and confirmation bar system, the indicator highlights new Higher Highs (HH), Higher Lows (HL), Lower Highs (LH), and Lower Lows (LL) as they form.
When “Live (repainting)” mode is enabled, the current swing leg updates dynamically with each candle, giving immediate feedback as price develops.
When disabled, only confirmed pivots are plotted, ideal for historical validation and backtesting.
+ Key Features
Detects and labels major swing points (HH, HL, LH, LL).
Works in live or confirmed (non-repainting) mode.
Adjustable parameters for lookback, deviation (in ticks), and confirmation bars.
Lightweight and compatible with any timeframe or symbol.
Includes runtime alerts for new structural pivots and direction shifts.
+ How to Use
Adjust the inputs under the “Pivots” group to control sensitivity.
Enable “Live (repainting)” to see developing swing legs, or disable it for confirmed structure only.
Use alerts to track structural changes or potential trend reversals.
PivotLiveLibrary "PivotLive"
zigCore(lo, hi, d, dev, bs)
Parameters:
lo (float)
hi (float)
d (int)
dev (int)
bs (int)
Pivot Points High Low or Close OpenStandard Pivot High Low from tradingview but you can use input close open so it uses the body instead of the wicks.
BB Simple B-Xtrender Long### Overview
I currently us this on a 1 week timeframe to spot trend shifts in the market.
It focuses exclusively on long positions (buying assets expecting price increases) and does not overlay on the main price chart—instead, it appears in a separate pane. The strategy allocates the full available equity to each trade and accounts for commissions as a percentage. It uses a custom indicator called the "B-Xtrender" to generate entry and exit signals for long trades, based on momentum-like calculations involving exponential moving averages (EMAs) and the relative strength index (RSI). The indicator is computed on a user-specified timeframe, and the strategy includes alert conditions for key events.
### Inputs Section
The script begins with user-configurable inputs that allow customization without editing the code directly. These include:
- Three integer values for short-term lengths: The first (default 5) and second (default 20) are used in EMA calculations to create a difference that forms the basis of the indicator. The third (default 15) sets the length for the RSI applied to that difference.
- A timeframe input (default "30" for 30 minutes) that determines the resolution for fetching data used in the indicator.
- A float value for the exit level (default 5, with a minimum of 0 and step of 0.1), which acts as a threshold for one of the exit conditions—specifically, when the indicator crosses below this level.
These inputs make the strategy adaptable to different assets or timeframes by adjusting the sensitivity of the indicator and exit rules.
### Indicator Section
The core of the script is the calculation of the "ShortTermXtrender" indicator. It fetches data from the specified timeframe using the asset's ticker symbol and computes an RSI on the difference between two EMAs of the closing prices (using the first and second short lengths), then subtracts 50 to center it around zero. This results in an oscillator that highlights short-term momentum shifts.
The histogram is colored dynamically:
- Green shades for positive values: Brighter green if the current value is higher than the previous (indicating strengthening upward momentum), and darker green otherwise.
- Red shades for negative or zero values: Brighter red if the current value is higher than the previous (less negative, but still downward), and darker red if it's decreasing further.
The indicator is plotted as columns for visual clarity, titled "B-Xtrender TF1" (referring to the first timeframe). A dashed gray horizontal line at zero serves as a centerline to easily distinguish positive (bullish) from negative (bearish) territories.
### Conditions Section
This part defines the logic for entering and exiting long trades, broken into entry and exit rules.
For long entries:
- One condition checks if the indicator is increasing (current value greater than the previous).
- Another optional condition detects a crossover above zero while also increasing, which can be removed if not desired.
- The final entry signal combines these: It triggers on either the crossover (if included) or the increasing value, promoting entries during upward momentum.
For long exits:
- A "red" state is defined as the indicator being at or below zero.
- A decreasing trend over two bars is checked by comparing the current to the previous, and the previous to the one before that.
- One exit triggers on this red state combined with the two-bar decrease.
- Another exit occurs when the indicator crosses below the user-defined exit level.
- The overall exit combines these two, ensuring positions close on weakening momentum or threshold breaches, but only if a long position is active.
### Strategy Execution Section
Here, the script applies the conditions to actual trading actions:
- On a long entry signal, it enters a long position labeled "Long," using the full strategy parameters for sizing and direction.
- On a long exit signal (and only if holding a positive position size), it closes the "Long" position. The comment for the close order specifies the reason: either crossing below the exit level (including the level value) or due to the red histogram with a two-bar decline.
This setup ensures automated trade management based solely on the indicator's behavior.
### Alerts Section
The script sets up three alert conditions that can notify users via TradingView's alert system:
- One for the crossover-based long entry, with a message indicating the indicator crossed above zero and is rising, signaling a long opportunity.
- Another for the increasing-value long entry, noting the indicator's rise on the specified timeframe as a long signal.
- A third for the red histogram with two-bar decline exit, warning of the condition to exit a long position.
These alerts are independent of the strategy execution and can be used for manual trading or monitoring even if the automated strategy isn't running.
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.
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. 🔒
Indicador Técnico Avanzado sbuscamos entradas para poder comprar y vender papeles de una correcta manera
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
Eagles CompassFree script
Helps detect specific body/wick ratios on chart for 1HR,2HR,4HR timeframes
Designed to help you detect large squeezes, bounces, and other moves
Ideally use in conjunction with an RSI to filter for false positives
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-
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).
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
// ============================================================================






















