Peer Performance - NIFTY36STOCKSI have created a peer performance dashboard for:
36 stocks from:
5 sectors of Nifty 100
This kind of dashboard is very useful for traders when they are planing to trade in a stocks and like to see how that is stocks is performing against other stocks in the same sector . Picking outperforming stocks will always give outstanding results when market starts moving. os having view on teh complete sector will always be good for traders before picking a specific stock.
Sectors covered in this indicators are:
Indian Auto Sector
Banking Sector
Oil, Gas and Energy Stocks
Cement Sector
Technology Sector
It will help traders reviewing performance ( stock return in last 1 year) of group of stocks from a particular sector .
Basically 5 functions are used to plot this dashboard
using "if " function to shortlist the stocks and the sector it belongs to.
tablo function to plot a table with specific parameters like number of row and columns, color of the frame of table
Getting yearly return into a series of variables using "request.security" function
str.tostring function is used to convert yearly return into a series of text so that it can inserted into the table cell.
finally plotting all the text and yearly return values using table.cell function
在腳本中搜尋"Table"
RSI Multi-TF TabRSI Multi-Timeframe Table 📊
A tool for multi-timeframe RSI analysis with visual overbought/oversold level highlighting.
Description
This indicator calculates the Relative Strength Index (RSI) for the current chart and displays RSI values across five additional timeframes (15m, 1h, 4h, 1d, 1w) in a dynamic table. The color-coded system simplifies identifying overbought (>70), oversold (<30), and neutral zones. Visual signals on the chart enhance analysis for the current timeframe.
Key Features
✅ Multi-Timeframe Analysis :
Track RSI across 15m, 1h, 4h, 1d, and 1w in a compact table.
Color-coded alerts:
🔴 Red — Overbought (potential pullback),
🔵 Blue — Oversold (potential rebound),
🟡 Yellow — Neutral zone.
✅ Visual Signals :
Background shading for oversold/overbought zones on the main chart.
Horizontal lines at 30 and 70 levels for reference.
✅ Customizable Settings :
Adjust RSI length (default: 14), source (close, open, high, etc.), and threshold levels.
How to Use
Table Analysis :
Compare RSI values across timeframes to spot divergences (e.g., overbought on 15m vs. oversold on D).
Use colors for quick decisions.
Chart Signals :
Blue background suggests bullish potential (oversold), red hints at bearish pressure (overbought).
Always confirm with other tools (volume, trends, or candlestick patterns).
Examples :
RSI(1h) > 70 while RSI(4h) < 30 → Possible reversal upward.
Sustained RSI(1d) above 50 may indicate a bullish trend.
Settings
RSI Length : Period for RSI calculation (default: 14).
RSI Source : Data source (close, open, high, low, hl2, hlc3, ohlc4).
Overbought/Oversold Levels : Thresholds for alerts (default: 70/30).
Important Notes
No direct trading signals : Use this as an analytical tool, not a standalone strategy.
Test strategies historically and consider market context before trading.
Crypto Long RSI Entry with AveragingIndicator Name:
04 - Crypto Long RSI Entry with Averaging + Info Table + Lines (03 style lines)
Description:
This indicator is designed for crypto trading on the long side only, using RSI-based entry signals combined with a multi-step averaging strategy and a visual information panel. It aims to capture price rebounds from oversold RSI levels and manage position entries with two staged averaging points, optimizing the average entry price and take-profit targets.
Key Features:
RSI-Based Entry: Enters a long position when the RSI crosses above a defined oversold level (default 25), with an optional faster entry if RSI crosses above 20 after being below it.
Two-Stage Averaging: Allows up to two averaging entries at user-defined price drop percentages (default 5% and 14%), increasing position size to improve average entry price.
Dynamic Take Profit: Adjusts take profit targets after each averaging stage, with customizable percentage levels.
Visual Signals: Marks entries, averaging points, and exits on the chart using colored labels and lines for easy tracking.
Info Table: Displays current trade status, averaging stages, total profit, number of wins, and maximum drawdown percentage in a table on the chart.
Graphical Lines: Shows horizontal lines for entry price, take profit, and averaging prices to visually track trade management.
BG Ichimoku Tenkan MTFBG Ichimoku Tenkan MTF: Your Multi-Timeframe Trend Compass
Elevate your Ichimoku analysis with the BG Ichimoku Tenkan MTF indicator. This powerful tool provides a comprehensive view of the Tenkan-sen (Conversion Line) across multiple timeframes, helping you identify trends and potential shifts with greater clarity. It's ideal for all markets, including stocks, cryptocurrencies, Forex, and futures.
Key Features:
Main Tenkan-sen Plot: Visualize the Tenkan-sen for your active chart timeframe with adjustable color.
Multi-Timeframe Table: A dynamic table displays the Tenkan-sen's relationship to price (🔼 for above, 🔽 for below) and its current value for up to 7 timeframes.
Continuous MTF Lines: Plot the Tenkan-sen from higher timeframes directly on your current chart, providing clear support/resistance levels and trend confluence.
Fully Customizable Colors: Personalize the color for each individual timeframe in the table and for its corresponding MTF line, ensuring a clean and intuitive visual experience. You can also adjust the main Tenkan-sen color and the MTF line offset.
Gain a deeper understanding of market dynamics by analyzing the Tenkan-sen across different time scales, all in one intuitive indicator.
We created this indicator to help you better navigate the markets. Thank you for using it, and we hope it brings you value. Enjoy it in your daily analysis!
Bab
PhenLabs - Market Fluid Dynamics📊 Market Fluid Dynamics -
Version: PineScript™ v6
📌 Description
The Market Fluid Dynamics - Phen indicator is a new thinking regarding market analysis by modeling price action, volume, and volatility using a fluid system. It attempts to offer traders control over more profound market forces, such as momentum (speed), resistance (thickness), and buying/selling pressure. By visualizing such dynamics, the script allows the traders to decide on the prevailing market flow, its power, likely continuations, and zones of calmness and chaos, and thereby allows improved decision-making.
This measure avoids the usual difficulty of reconciling multiple, often contradictory, market indications by including them within a single overarching model. It moves beyond traditional binary indicators by providing a multi-dimensional view of market behavior, employing fluid dynamic analogs to describe complex interactions in an accessible manner.
🚀 Points of Innovation
Integrated Fluid Dynamics Model: Combines velocity, viscosity, pressure, and turbulence into a single indicator.
Normalized Metrics: Uses ATR and other normalization techniques for consistent readings across different assets and timeframes.
Dynamic Flow Visualization: Main flow line changes color and intensity based on direction and strength.
Turbulence Background: Visually represents market stability with a gradient background, from calm to turbulent.
Comprehensive Dashboard: Provides an at-a-glance summary of key fluid dynamic metrics.
Multi-Layer Smoothing: Employs several layers of EMA smoothing for a clearer, more responsive main flow line.
🔧 Core Components
Velocity Component: Measures price momentum (first derivative of price), normalized by ATR. It indicates the speed and direction of price changes.
Viscosity Component: Represents market resistance to price changes, derived from ATR relative to its historical average. Higher viscosity suggests it’s harder for prices to move.
Pressure Component: Quantifies the force created by volume and price range (close - open), normalized by ATR. It reflects buying or selling pressure.
Turbulence Detection: Calculates a Reynolds number equivalent to identify market stability, ranging from laminar (stable) to turbulent (chaotic).
Main Flow Indicator: Combines the above components, applying sensitivity and smoothing, to generate a primary signal of market direction and strength.
🔥 Key Features
Advanced Smoothing Algorithm: Utilizes multiple EMA layers on the raw flow calculation for a fluid and responsive main flow line, reducing noise while maintaining sensitivity.
Gradient Flow Coloring: The main flow line dynamically changes color from light to deep blue for bullish flow and light to deep red for bearish flow, with intensity reflecting flow strength. This provides an immediate visual cue of market sentiment and momentum.
Turbulence Level Background: The chart background changes color based on calculated turbulence (from calm gray to vibrant orange), offering an intuitive understanding of market stability and potential for erratic price action.
Informative Dashboard: A customizable on-screen table displays critical metrics like Flow State, Flow Strength, Market Viscosity, Turbulence, Pressure Force, Flow Acceleration, and Flow Continuity, allowing traders to quickly assess current market conditions.
Configurable Lookback and Sensitivity: Users can adjust the base lookback period for calculations and the sensitivity of the flow to viscosity, tailoring the indicator to different trading styles and market conditions.
Alert Conditions: Pre-defined alerts for flow direction changes (positive/negative crossover of zero line) and detection of high turbulence states.
🎨 Visualization
Main Flow Line: A smoothed line plotted below the main chart, colored blue for bullish flow and red for bearish flow. The intensity of the color (light to dark) indicates the strength of the flow. This line crossing the zero line can signal a change in market direction.
Zero Line: A dotted horizontal line at the zero level, serving as a baseline to gauge whether the market flow is positive (bullish) or negative (bearish).
Turbulence Background: The indicator pane’s background color changes based on the calculated turbulence level. A calm, almost transparent gray indicates low turbulence (laminar flow), while a more vibrant, semi-transparent orange signifies high turbulence. This helps traders visually assess market stability.
Dashboard Table: An optional table displayed on the chart, showing key metrics like ‘Flow State’, ‘Flow Strength’, ‘Market Viscosity’, ‘Turbulence’, ‘Pressure Force’, ‘Flow Acceleration’, and ‘Flow Continuity’ with their current values and qualitative descriptions (e.g., ‘Bullish Flow’, ‘Laminar (Stable)’).
📖 Usage Guidelines
Setting Categories
Show Dashboard - Default: true; Range: true/false; Description: Toggles the visibility of the Market Fluid Dynamics dashboard on the chart. Enable to see key metrics at a glance.
Base Lookback Period - Default: 14; Range: 5 - (no upper limit, practical limits apply); Description: Sets the primary lookback period for core calculations like velocity, ATR, and volume SMA. Shorter periods make the indicator more sensitive to recent price action, while longer periods provide a smoother, slower signal.
Flow Sensitivity - Default: 0.5; Range: 0.1 - 1.0 (step 0.1); Description: Adjusts how much the market viscosity dampens the raw flow. A lower value means viscosity has less impact (flow is more sensitive to raw velocity/pressure), while a higher value means viscosity has a greater dampening effect.
Flow Smoothing - Default: 5; Range: 1 - 20; Description: Controls the length of the EMA smoothing applied to the main flow line. Higher values result in a smoother flow line but with more lag; lower values make it more responsive but potentially noisier.
Dashboard Position - Default: ‘Top Right’; Range: ‘Top Right’, ‘Top Left’, ‘Bottom Right’, ‘Bottom Left’, ‘Middle Right’, ‘Middle Left’; Description: Determines the placement of the dashboard on the chart.
Header Size - Default: ‘Normal’; Range: ‘Tiny’, ‘Small’, ‘Normal’, ‘Large’, ‘Huge’; Description: Sets the text size for the dashboard header.
Values Size - Default: ‘Small’; Range: ‘Tiny’, ‘Small’, ‘Normal’, ‘Large’; Description: Sets the text size for the metric values in the dashboard.
✅ Best Use Cases
Trend Identification: Identifying the dominant market flow (bullish or bearish) and its strength to trade in the direction of the prevailing trend.
Momentum Confirmation: Using the flow strength and acceleration to confirm the conviction behind price movements.
Volatility Assessment: Utilizing the turbulence metric to gauge market stability, helping to adjust position sizing or avoid choppy conditions.
Reversal Spotting: Watching for divergences between price and flow, or crossovers of the main flow line above/below the zero line, as potential reversal signals, especially when combined with changes in pressure or viscosity.
Swing Trading: Leveraging the smoothed flow line to capture medium-term market swings, entering when flow aligns with the desired trade direction and exiting when flow weakens or reverses.
Intraday Scalping: Using shorter lookback periods and higher sensitivity to identify quick shifts in flow and turbulence for short-term trading opportunities, particularly in liquid markets.
⚠️ Limitations
Lagging Nature: Like many indicators based on moving averages and lookback periods, the main flow line can lag behind rapid price changes, potentially leading to delayed signals.
Whipsaws in Ranging Markets: During periods of low volatility or sideways price action (high viscosity, low flow strength), the indicator might produce frequent buy/sell signals (whipsaws) as the flow oscillates around the zero line.
Not a Standalone System: While comprehensive, it should be used in conjunction with other forms of analysis (e.g., price action, support/resistance levels, other indicators) and not as a sole basis for trading decisions.
Subjectivity in Interpretation: While the dashboard provides quantitative values, the interpretation of “strong” flow, “high” turbulence, or “significant” acceleration can still have a subjective element depending on the trader’s strategy and risk tolerance.
💡 What Makes This Unique
Fluid Dynamics Analogy: Its core strength lies in translating complex market interactions into an intuitive fluid dynamics framework, making concepts like momentum, resistance, and pressure easier to visualize and understand.
Market View: Instead of focusing on a single aspect (like just momentum or just volatility), it integrates multiple factors (velocity, viscosity, pressure, turbulence) to provide a more comprehensive picture of market conditions.
Adaptive Visualization: The dynamic coloring of the flow line and the turbulence background provide immediate, adaptive visual feedback that changes with market conditions.
🔬 How It Works
Price Velocity Calculation: The indicator first calculates price velocity by measuring the rate of change of the closing price over a given ‘lookback’ period. The raw velocity is then normalized by the Average True Range (ATR) of the same lookback period. Normalization enables comparison of momentum between assets or timeframes by scaling for volatility. This is the direction and speed of initial price movement.
Viscosity Calculation: Market ‘viscosity’ or resistance to price movement is determined by looking at the current ATR relative to its longer-term average (SMA of ATR over lookback * 2). The further the current ATR is above its average, the lower the viscosity (less resistance to price movement), and vice-versa. The script inverts this relationship and bounds it so that rising viscosity means more resistance.
Pressure Force Measurement: A ‘pressure’ variable is calculated as a function of the ratio of current volume to its simple moving average, multiplied by the price range (close - open) and normalized by ATR. This is designed to measure the force behind price movement created by volume and intraday price thrusts. This pressure is smoothed by an EMA.
Turbulence State Evaluation: A equivalent ‘Reynolds number’ is calculated by dividing the absolute normalized velocity by the viscosity. This is the proclivity of the market to move in a chaotic or orderly fashion. This ‘reynoldsValue’ is smoothed with an EMA to get the ‘turbulenceState’, which indicates if the market is laminar (stable), transitional, or turbulent.
Main Flow Derivation: The ‘rawFlow’ is calculated by taking the normalized velocity, dampening its impact based on the ‘viscosity’ and user-input ‘sensitivity’, and orienting it by the sign of the smoothed ‘pressureSmooth’. The ‘rawFlow’ is then put through multiple layers of exponential moving average (EMA) smoothing (with ‘smoothingLength’ and derived values) to reach the final ‘mainFlow’ line. The extensive smoothing is designed to give a smooth and clear visualization of the overall market direction and magnitude.
Dashboard Metrics Compilation: Additional metrics like flow acceleration (derivative of mainFlow), and flow continuity (correlation between close and volume) are calculated. All primary components (Flow State, Strength, Viscosity, Turbulence, Pressure, Acceleration, Continuity) are then presented in a user-configurable dashboard for ease of monitoring.
💡 Note:
The “Market Fluid Dynamics - Phen” indicator is designed to offer a unique perspective on market behavior by applying principles from fluid dynamics. It’s most effective when used to understand the underlying forces driving price rather than as a direct buy/sell signal generator in isolation. Experiment with the settings, particularly the ‘Base Lookback Period’, ‘Flow Sensitivity’, and ‘Flow Smoothing’, to find what best suits your trading style and the specific asset you are analyzing. Always combine its insights with robust risk management practices.
Risk Calculator PRO — manual lot size + auto lot-suggestionWhy risk management?
90 % of traders blow up because they size positions emotionally. This tool forces Risk-First Thinking: choose the amount you’re willing to lose, and the script reverse-engineers everything else.
Key features
1. Manual or Market Entry – click “Use current price” or type a custom entry.
2. Setup-based ₹-Risk – four presets (A/B/C/D). Edit to your workflow.
3. Lot-Size Input + Auto Lot Suggestion – you tell the contract size ⇒ script tells you how many lots.
4. Auto-SL (optional) – tick to push stop-loss to exactly 1-lot risk.
5. Instant Targets – 1 : 2, 1 : 3, 1 : 4, 1 : 5 plotted and alert-ready.
6. P&L Preview – table shows potential profit at each R-multiple plus real ₹ at SL.
7. Margin Column – enter per-lot margin once; script totals it for any size.
8. Clean Table UI – dark/light friendly; updates every 5 bars.
9. Alert Pack – SL, each target, plus copy-paste journal line on the chart.
How to use
1. Add to chart > “Format”.
2. Type the lot size for the symbol (e.g., 1250 for Natural Gas, 1 for cash equity).
3. Pick Side (Buy / Sell) & Setup grade.
4. ✅ If you want the script to place SL for you, tick Auto-SL (risk = 1 lot).
5. Otherwise type your own Stop-loss.
6. Read the table:
• Suggested lots = how many to trade so risk ≤ setup ₹.
• Risk (currency) = real money lost if SL hits.
7. Set TradingView alerts on the built-in conditions (T1_2, SL_hit, etc.) if you’d like push / email.
8. Copy the orange CSV label to Excel / Sheets for journalling.
Best practices
• Never raise risk to “fit” a trade. Lower size instead.
• Review win-rate vs. R multiple monthly; adjust setups A–D accordingly.
• Test Auto-SL in replay before going live.
Disclaimer
This script is educational. Past performance ≠ future results. The author isn’t responsible for trading losses.
Yearly History Calendar-Aligned Price up to 10 Years)Overview
This indicator helps traders compare historical price patterns from the past 10 calendar years with the current price action. It overlays translucent lines (polylines) for each year’s price data on the same calendar dates, providing a visual reference for recurring trends. A dynamic table at the top of the chart summarizes the active years, their price sources, and history retention settings.
Key Features
Historical Projections
Displays price data from the last 10 years (e.g., January 5, 2023 vs. January 5, 2024).
Price Source Selection
Choose from Open, Low, High, Close, or HL2 ((High + Low)/2) for historical alignment.
The selected source is shown in the legend table.
Bulk Control Toggles
Show All Years : Display all 10 years simultaneously.
Keep History for All : Preserve historical lines on year transitions.
Hide History for All : Automatically delete old lines to update with current data.
Individual Year Settings
Toggle visibility for each year (-1 to -10) independently.
Customize color and line width for each year.
Control whether to keep or delete historical lines for specific years.
Visual Alignment Aids
Vertical lines mark yearly transitions for reference.
Polylines are semi-transparent for clarity.
Dynamic Legend Table
Shows active years, their price sources, and history status (On/Off).
Updates automatically when settings change.
How to Use
Configure Settings
Projection Years : Select how many years to display (1–10).
Price Source : Choose Open, Low, High, Close, or HL2 for historical alignment.
History Precision : Set granularity (Daily, 60m, or 15m).
Daily (D) is recommended for long-term analysis (covers 10 years).
60m/15m provides finer precision but may only cover 1–3 years due to data limits.
Adjust Visibility & History
Show Year -X : Enable/disable specific years for comparison.
Keep History for Year -X : Choose whether to retain historical lines or delete them on new year transitions.
Bulk Controls
Show All Years : Display all 10 years at once (overrides individual toggles).
Keep History for All / Hide History for All : Globally enable/disable history retention for all years.
Customize Appearance
Line Width : Adjust polyline thickness for better visibility.
Colors : Assign unique colors to each year for easy identification.
Interpret the Legend Table
The table shows:
Year : Label (e.g., "Year -1").
Source : The selected price type (e.g., "Close", "HL2").
Keep History : Indicates whether lines are preserved (On) or deleted (Off).
Tips for Optimal Use
Use Daily Timeframes for Long-Term Analysis :
Daily (1D) allows 10+ years of data. Smaller timeframes (60m/15m) may have limited historical coverage.
Compare Recurring Patterns :
Look for overlaps between historical polylines and current price to identify potential support/resistance levels.
Customize Colors & Widths :
Use contrasting colors for years you want to highlight. Adjust line widths to avoid clutter.
Leverage Global Toggles :
Enable Show All Years for a quick overview. Use Keep History for All to maintain continuity across transitions.
Example Workflow
Set Up :
Select Projection Years = 5.
Choose Price Source = Close.
Set History Precision = 1D for long-term data.
Customize :
Enable Show Year -1 to Show Year -5.
Assign distinct colors to each year.
Disable Keep History for All to ensure lines update on year transitions.
Analyze :
Observe how the 2023 close prices align with 2024’s price action.
Use vertical lines to identify yearly boundaries.
Common Questions
Why are some years missing?
Ensure the chart has sufficient historical data (e.g., daily charts cover 10 years, 60m/15m may only cover 1–3 years).
How do I update the data?
Adjust the Price Source or toggle years/history settings. The legend table updates automatically.
Cointegration Buy and Sell Signals [EdgeTerminal]The Cointegration Buy And Sell Signals is a sophisticated technical analysis tool to spot high-probability market turning points — before they fully develop on price charts.
Most reversal indicators rely on raw price action, visual patterns, or basic and common indicator logic — which often suffer in noisy or trending markets. In most cases, they lag behind the actual change in trend and provide useless and late signals.
This indicator is rooted in advanced concepts from statistical arbitrage, mean reversion theory, and quantitative finance, and it packages these ideas in a user-friendly visual format that works on any timeframe and asset class.
It does this by analyzing how the short-term and long-term EMAs behave relative to each other — and uses statistical filters like Z-score, correlation, volatility normalization, and stationarity tests to issue highly selective Buy and Sell signals.
This tool provides statistical confirmation of trend exhaustion, allowing you to trade mean-reverting setups. It fades overextended moves and uses signal stacking to reduce false entries. The entire indicator is based on a very interesting mathematically grounded model which I will get into down below.
Here’s how the indicator works at a high level:
EMAs as Anchors: It starts with two Exponential Moving Averages (EMAs) — one short-term and one long-term — to track market direction.
Statistical Spread (Regression Residuals): It performs a rolling linear regression between the short and long EMA. Instead of using the raw difference (short - long), it calculates the regression residual, which better models their natural relationship.
Normalize the Spread: The spread is divided by historical price volatility (ATR) to make it scale-invariant. This ensures the indicator works on low-priced stocks, high-priced indices, and crypto alike.
Z-Score: It computes a Z-score of the normalized spread to measure how “extreme” the current deviation is from its historical average.
Dynamic Thresholds: Unlike most tools that use fixed thresholds (like Z = ±2), this one calculates dynamic thresholds using historical percentiles (e.g., top 10% and bottom 10%) so that it adapts to the asset's current behavior to reduce false signals based on market’s extreme volatility at a certain time.
Z-Score Momentum: It tracks the direction of the Z-score — if Z is extreme but still moving away from zero, it's too early. It waits for reversion to start (Z momentum flips).
Correlation Check: Uses a rolling Pearson correlation to confirm the two EMAs are still statistically related. If they diverge (low correlation), no signal is shown.
Stationarity Filter (ADF-like): Uses the volatility of the regression residual to determine if the spread is stationary (mean-reverting) — a key concept in cointegration and statistical arbitrage. It’s not possible to build an exact ADF filter in Pine Script so we used the next best thing.
Signal Control: Prevents noisy charts and overtrading by ensuring no back-to-back buy or sell signals. Each signal must alternate and respect a cooldown period so you won’t be overwhelmed and won’t get a messy chart.
Important Notes to Remember:
The whole idea behind this indicator is to try to use some stat arb models to detect shifting patterns faster than they appear on common indicators, so in some cases, some assumptions are made based on historic values.
This means that in some cases, the indicator can “jump” into the conclusion too quickly. Although we try to eliminate this by using stationary filters, correlation checks, and Z-score momentum detection, there is still a chance some signals that are generated can be too early, in the stock market, that's the same as being incorrect. So make sure to use this with other indicators to confirm the movement.
How To Use The Indicator:
You can use the indicator as a standalone reversal system, as a filter for overbought and oversold setups, in combination with other trend indicators and as a part of a signal stack with other common indicators for divergence spotting and fade trades.
The indicator produces simple buy and sell signals when all criteria is met. Based on our own testing, we recommend treating these signals as standalone and independent from each other . Meaning that if you take position after a buy signal, don’t wait for a sell signal to appear to exit the trade and vice versa.
This is why we recommend using this indicator with other advanced or even simple indicators as an early confirmation tool.
The Display Table:
The floating diagnostic table in the top-right corner of the chart is a key part of this indicator. It's a live statistical dashboard that helps you understand why a signal is (or isn’t) being triggered, and whether the market conditions are lining up for a potential reversal.
1. Z-Score
What it shows: The current Z-score value of the volatility-normalized spread between the short EMA and the regression line of the long EMA.
Why it matters: Z-score tells you how statistically extreme the current relationship is. A Z-score of:
0 = perfectly average
> +2 = very overbought
< -2 = very oversold
How to use it: Look for Z-score reaching extreme highs or lows (beyond dynamic thresholds). Watch for it to start reversing direction, especially when paired with green table rows (see below)
2. Z-Score Momentum
What it shows: The rate of change (ROC) of the Z-score:
Zmomentum=Zt − Zt − 1
Why it matters: This tells you if the Z-score is still stretching out (e.g., getting more overbought/oversold), or reverting back toward the mean.
How to use it: A positive Z-momentum after a very low Z-score = potential bullish reversal A negative Z-momentum after a very high Z-score = potential bearish reversal. Avoid signals when momentum is still pushing deeper into extremes
3. Correlation
What it shows: The rolling Pearson correlation coefficient between the short EMA and long EMA.
Why it matters: High correlation (closer to +1) means the EMAs are still statistically connected — a key requirement for cointegration or mean reversion to be valid.
How to use it: Look for correlation > 0.7 for reliable signals. If correlation drops below 0.5, ignore the Z-score — the EMAs aren’t moving together anymore
4. Stationary
What it shows: A simplified "Yes" or "No" answer to the question:
“Is the spread statistically stable (stationary) and mean-reverting right now?”
Why it matters: Mean reversion strategies only work when the spread is stationary — that is, when the distance between EMAs behaves like a rubber band, not a drifting cloud.
How to use it: A "Yes" means the indicator sees a consistent, stable spread — good for trading. "No" means the market is too volatile, disjointed, or chaotic for reliable mean reversion. Wait for this to flip to "Yes" before trusting signals
5. Last Signal
What it shows: The last signal issued by the system — either "Buy", "Sell", or "None"
Why it matters: Helps avoid confusion and repeated entries. Signals only alternate — you won’t get another Buy until a Sell happens, and vice versa.
How to use it: If the last signal was a "Buy", and you’re watching for a Sell, don’t act on more bullish signals. Great for systems where you only want one position open at a time
6. Bars Since Signal
What it shows: How many bars (candles) have passed since the last Buy or Sell signal.
Why it matters: Gives you context for how long the current condition has persisted
How to use it: If it says 1 or 2, a signal just happened — avoid jumping in late. If it’s been 10+ bars, a new opportunity might be brewing soon. You can use this to time exits if you want to fade a recent signal manually
Indicator Settings:
Short EMA: Sets the short-term EMA period. The smaller the number, the more reactive and more signals you get.
Long EMA: Sets the slow EMA period. The larger this number is, the smoother baseline, and more reliable trend bases are generated.
Z-Score Lookback: The period or bars used for mean & std deviation of spread between short and long EMAs. Larger values result in smoother signals with fewer false positives.
Volatility Window: This value normalizes the spread by historical volatility. This allows you to prevent scale distortion, showing you a cleaner and better chart.
Correlation Lookback: How many periods or how far back to test correlation between slow and long EMAs. This filters out false positives when EMAs lose alignment.
Hurst Lookback: The multiplier to approximate stationarity. Lower leads to more sensitivity to regime change, higher produces a more stricter filtering.
Z Threshold Percentile: This value sets how extreme Z-score must be to trigger a signal. For example, 90 equals only top/bottom 10% of extremes, 80 = more frequent.
Min Bars Between Signals: This hard stop prevents back-to-back signals. The idea is to avoid over-trading or whipsaws in volatile markets even when Hurst lookback and volatility window values are not enough to filter signals.
Some More Recommendations:
We recommend trying different EMA pairs (10/50, 21/100, 5/20) for different asset behaviors. You can set percentile to 85 or 80 if you want more frequent but looser signals. You can also use the Z-score reversion monitor for powerful confirmation.
Multi-Timeframe Anchored VWAP Valuation# Multi-Timeframe Anchored VWAP Valuation
## Overview
This indicator provides a unique perspective on potential price valuation by comparing the current price to the Volume Weighted Average Price (VWAP) anchored to the start of multiple timeframes: Weekly, Monthly, Quarterly, and Yearly. It synthesizes these comparisons into a single oscillator value, helping traders gauge if the current price is potentially extended relative to significant volume-weighted levels.
## Core Concept & Calculation
1. **Anchored VWAP:** The script calculates the VWAP separately for the current Week, Month, Quarter (3 Months), and Year (12 Months), starting the calculation from the first bar of each period.
2. **Price Deviation:** It measures how far the current `close` price is from each of these anchored VWAPs. This distance is measured in terms of standard deviations calculated *within* that specific anchor period (e.g., how many weekly standard deviations the price is away from the weekly VWAP).
3. **Deviation Score (Multiplier):** Based on this standard deviation distance, a score is assigned. The further the price is from the VWAP (in terms of standard deviations), the higher the absolute score. The indicator uses linear interpolation to determine scores between the standard deviation levels (defaulted at 1, 2, and 3 standard deviations corresponding to scores of +/-2, +/-3, +/-4, with a score of 1 at the VWAP).
4. **Timeframe Weighting:** Longer timeframes are considered more significant. The deviation scores are multiplied by fixed scalars: Weekly (x1), Monthly (x2), Quarterly (x3), Yearly (x4).
5. **Final Valuation Metric:** The weighted scores from all four timeframes are summed up to produce the final oscillator value plotted in the indicator pane.
## How to Interpret and Use
* **Histogram (Indicator Pane):**
* The main output is the histogram representing the `Final Valuation Metric`.
* **Positive Values:** Suggest the price is generally trading above its volume-weighted averages across the timeframes, potentially indicating strength or relative "overvaluation."
* **Negative Values:** Suggest the price is generally trading below its volume-weighted averages, potentially indicating weakness or relative "undervaluation."
* **Values Near Zero:** Indicate the price is relatively close to its volume-weighted averages.
* **Histogram Color:**
* The color of the histogram bars provides context based on the metric's *own recent history*.
* **Green (Positive Color):** The metric is currently *above* its recent average plus a standard deviation band (dynamic upper threshold). This highlights potentially significant "overvalued" readings relative to its normal range.
* **Red (Negative Color):** The metric is currently *below* its recent average minus a standard deviation band (dynamic lower threshold). This highlights potentially significant "undervalued" readings relative to its normal range.
* **Gray (Neutral Color):** The metric is within its typical recent range (between the dynamic upper and lower thresholds).
* **Orange Line:** Plots the moving average of the `Final Valuation Metric` itself (based on the "Threshold Lookback Period"), serving as the centerline for the dynamic thresholds.
* **On-Chart Table:**
* Provides a detailed breakdown for transparency.
* Shows the calculated VWAP, the raw deviation multiplier score, and the final weighted (adjusted) metric for each individual timeframe (W, M, Q, Y).
* Displays the current price, the final combined metric value, and a textual interpretation ("Overvalued", "Undervalued", "Neutral") based on the dynamic thresholds.
## Potential Use Cases
* Identifying potential exhaustion points when the indicator reaches statistically high (green) or low (red) levels relative to its recent history.
* Assessing whether price trends are supported by underlying volume-weighted average prices across multiple timeframes.
* Can be used alongside other technical analysis tools for confirmation.
## Settings
* **Calculation Settings:**
* `STDEV Level 1`: Adjusts the 1st standard deviation level (default 1.0).
* `STDEV Level 2`: Adjusts the 2nd standard deviation level (default 2.0).
* `STDEV Level 3`: Adjusts the 3rd standard deviation level (default 3.0).
* **Interpretation Settings:**
* `Threshold Lookback Period`: Defines the number of bars used to calculate the average and standard deviation of the final metric for dynamic thresholds (default 200).
* `Threshold StDev Multiplier`: Controls how many standard deviations above/below the metric's average are used to set the "Overvalued"/"Undervalued" thresholds (default 1.0).
* **Table Settings:** Customize the position and colors of the data table displayed on the chart.
## Important Considerations
* This indicator measures price deviation relative to *anchored* VWAPs and its *own historical range*. It is not a standalone trading system.
* The interpretation of "Overvalued" and "Undervalued" is relative to the indicator's logic and calculations; it does not guarantee future price movement.
* Like all indicators, past performance is not indicative of future results. Use this tool as part of a comprehensive analysis and risk management strategy.
* The anchored VWAP and Standard Deviation values reset at the beginning of each respective period (Week, Month, Quarter, Year).
MÈGAS ALGO : ZIG-ZAG CYCLE INSIGTH [INDICATOR]Overview
The Zig-Zag Cycle Insigth is a revisited version of the classic Zig Zag indicator, designed to provide traders with a more comprehensive and actionable view of price movements.
This advanced tool not only highlights significant price swings but also incorporates additional features such as cycle analysis, real-time data tracking, and Fibonacci retracement levels. These enhancements make it an invaluable resource for identifying trends, potential reversal points, and market structure.
This indicator adheres to TradingView's guidelines and is optimized for both technical analysts and active traders who seek deeper insights into market dynamics.
Key Features:
1. Customizable Thresholds for Price Movements:
- Users can set personalized thresholds for price movement percentages and time periods.
This ensures that only significant price swings are plotted, reducing noise and increasing
clarity.
- Straight lines connect swing highs and lows, providing a cleaner visual representation of
the trend.
2. Cycle Analysis Table:
- A dynamic table is included to analyze price cycles based on three key factors:
- Price Change: Measures the magnitude of each swing (high-to-low or low-to-high).
- Time Duration (Bar Count): Tracks the number of bars elapsed between consecutive swings,
offering precise timing insights.
- Volume: Analyzes trading volume during each segment of the cycle.
- The indicator calculates the **maximum**, **minimum**, and **mean** values for each
parameter across all completed cycles, providing deeper statistical insights into market
behavior.
- This table updates in real-time, offering traders a quantitative understanding of how price
behaves over different cycles.
3. Real-Time Data Integration:
- The indicator displays live updates of current price action relative to the last identified
swing high/low. This includes:
- Current distance from the last pivot point.
- Percentage change since the last pivot.
- Volume traded since the last pivot.
4. Fibonacci Retracement Levels:
- Integrated Fibonacci retracement levels are dynamically calculated based on the most
recent significant swing high and low.
- Key retracement levels (23.6%, 38.2%, 50%, 61.8%, and 78.6%) are plotted alongside the Zig
Zag lines, helping traders identify potential support/resistance zones.
- Extension levels (100%, 161.8%, etc.) are also included to anticipate possible breakout
targets.
5. Customizable Alerts:
- Users can configure alerts for specific real-time conditions, such as:
- Price Change
- Duration
- Volume
- Fibonacci Retracement Levels
How It Works:
1. Zig Zag Identification:
- The indicator scans historical price data to identify significant turning points where the
price moves by at least the user-defined percentage threshold.
- These turning points are connected by straight lines to form the Zig Zag pattern.
2. Cycle Analysis:
For each completed cycle (from one swing high/low to the next), the indicator calculates:
- Price Change: Difference between the start and end prices of the cycle.
- Maximum Price Change: The largest price difference observed across all cycles.
- Minimum Price Change: The smallest price difference observed across all cycles.
- Mean Price Change: The average price difference across all cycles.
- Time Duration (Bar Count): Number of bars elapsed between consecutive swings.
- Maximum Duration: The longest cycle in terms of bar count.
- Minimum Duration: The shortest cycle in terms of bar count.
- Mean Duration: The average cycle length in terms of bar count.
- Volume: Total volume traded during the cycle.
- Maximum Volume: The highest volume traded during any single cycle.
- Minimum Volume: The lowest volume traded during any single cycle.
- Mean Volume: The average volume traded across all cycles.
- These calculations provide traders with a statistical overview of market behavior, enabling
them to identify patterns and anomalies in price, time, and volume.
3. Fibonacci Integration:
- Once a new swing high or low is identified, the indicator automatically calculates Fibonacci
retracement and extension levels.
- These levels serve as reference points for potential entry/exit opportunities.
4. Real-Time Updates:
- As the market evolves, the indicator continuously monitors the relationship between the
current price and the last identified swing point.
- Real-time metrics, such as percentage change and volume, are updated dynamically.
5. Alerts Based on Real-Time Parameters:
- The indicator allows users to set customizable alerts based on real-time conditions:
- Price Change Alert: Triggered when the real-time price change is less or greater than a
predefined percentage threshold (e.g., > or < fixed value).
- Duration Alert: Triggered when the cycle duration (in bars) is less or greater than a
predefined
bar count threshold (e.g., > or < fixed value).
- Volume Alert: Triggered when the trading volume during the current cycle is less or greater
than a predefined volume threshold (e.g., > or < fixed value).
Advantages of Zig-Zag Cycle Insigth
- Comprehensive Insights: Combining cycle analysis, Fibonacci retracements, and real-time data
provides a holistic view of market conditions.
- Statistical Analysis: The inclusion of maximum, minimum, and mean values for price change,
duration, and volume offers deeper insights into market behavior.
- Actionable Signals: Customizable alerts ensure traders never miss critical market events based
on real-time price, duration, and volume parameters.
- User-Friendly Design: Clear visuals and intuitive controls make it accessible for traders of all
skill levels.
Reference:
TradingView/ZigZag
TradingView/AutofibRetracement
Please Note:
This indicator is provided for informational and educational purposes only. It is not financial advice, and it should not be considered a recommendation to buy, sell, or trade any financial instrument. Trading involves significant risks, including the potential loss of your entire investment. Always conduct your own research and consult with a licensed financial advisor before making any trading decisions.
The results and images provided are based on algorithms and historical/paid real-time market data but do not guarantee future results or accuracy. Use this tool at your own risk, and understand that past performance is not indicative of future outcomes.
Risk MeterRisk Meter Indicator for TradingView
The Risk Meter is a powerful market risk assessment tool designed to help traders evaluate the current risk environment using a simple, data-driven score. By analyzing four critical market factors—VIX (volatility index), market breadth, trailing volatility, and credit spreads—the indicator generates a risk score between 0 and 4. This score empowers traders to make informed decisions about hedging, exiting positions, or re-entering the market, with clear visual cues and alerts for intraday monitoring.
What It Does
Calculates a Risk Score: Assigns a score from 0 to 4, where each point reflects an active risk condition based on four market indicators.
Identifies Risk Levels:
A score of 3 or higher indicates a high-risk environment, suggesting traders consider hedging or reducing exposure.
A score of 2 or lower for at least two consecutive days signals a potential opportunity to re-enter the market.
Provides Visual Feedback: Uses color-coded Columns, threshold markers, and a component table for quick interpretation.
Supports Decision-Making: Offers a structured approach to managing risk and timing trades.
How It Works
The Risk Meter aggregates four key risk conditions, each contributing 1 point to the total score when triggered:
Elevated and Rising VIX (Risk 1)
Condition: The VIX is above 18 and higher than it was 20 days ago.
Purpose: Detects increasing market fear or uncertainty.
Market Breadth Dropping (Risk 2)
Condition: Either:
Fewer than 50% of S&P 500 stocks are above their 200-day moving average and fewer than 70% are above their 50-day moving average, or
The 3-day EMA of the 200-day breadth falls below 80% of its 20-day SMA.
Purpose: Identifies weakening participation across the market.
Trailing Volatility (Risk 3)
Condition: The 30-day annualized volatility of the equal-weight S&P 500 (RSP) exceeds 35%.
Purpose: Highlights periods of heightened price instability.
Credit Spreads (Risk 4)
Condition: The price ratio of high-yield bonds (HYG) to Treasuries (TLT or IEF) is lower than it was 20 days ago, indicating widening credit spreads.
Purpose: Signals potential stress in credit markets.
The total risk score is the sum of these conditions (0 to 4). Additionally, the indicator tracks consecutive days with a score of 2 or lower to generate re-entry signals.
How to Read It Intraday
The Risk Meter is built on daily data but can be monitored intraday for real-time insights. Here’s how traders can interpret it:
Risk Score Plot:
Displayed as a step line ranging from 0 to 4.
Colors:
Red: High risk (score ≥ 3) – caution advised.
Green: Re-entry signal – score ≤ 2 for at least two consecutive days (triggered when the count increments from 1 to 2).
Blue: Neutral or low risk (score < 3 without a re-entry signal).
Threshold Lines:
Dashed Gray Line at 3: Marks the high-risk threshold.
Dotted Gray Line at 2: Indicates the low-risk threshold for re-entry signals.
Risk Component Table:
Located in the top-right corner, it lists:
VIX, Breadth, Volatility, and Credit Spreads.
Status: Shows "" (warning, red) if the risk condition is met, or "✓" (safe, blue) if not.
Helps traders pinpoint which factors are driving the score.
Alerts:
High Risk Alert: Triggers when the score moves from < 3 to ≥ 3.
Re-entry Signal Alert: Triggers when the score ≤ 2 for two consecutive days.
Intraday Usage Tips
Check the indicator throughout the day for early signs of risk shifts, especially if the score is near a threshold (e.g., 2 or 3).
Combine with other intraday tools (e.g., price action, volume) since the Risk Meter updates daily but reflects broader market conditions.
How Traders Can Use It
High-Risk Signal (Score ≥ 3):
Consider hedging positions (e.g., with options) or reducing equity exposure to protect against potential downturns.
Re-entry Signal (Score ≤ 2 for 2+ Days):
Look to re-enter the market or increase exposure, as it suggests stabilizing conditions.
Daily Risk Management:
Use the score and table to assess overall market health and adjust strategies accordingly.
Alert-Driven Trading:
Set up alerts to stay notified of critical risk changes without constant monitoring.
Why Use the Risk Meter?
This indicator offers a systematic, multi-factor approach to risk assessment, blending volatility, breadth, and credit market data into an easy-to-read score. Whether you’re an intraday trader or a longer-term investor, the Risk Meter helps you stay proactive, avoid surprises, and time your trades with greater confidence.
Financial Risk Disclaimer for the Risk Meter Tool
Important Notice: The Risk Meter is a market risk assessment tool designed to provide insights into current market conditions based on historical data and predefined indicators. It is intended for informational and educational purposes only and should not be considered financial advice, a recommendation to buy or sell any securities, or a guarantee of future market performance.
Key Considerations
No Guarantee of Accuracy: While the Risk Meter utilizes reliable data sources and established financial metrics, the creators do not guarantee the accuracy, completeness, or timeliness of the information provided. Financial markets are complex and subject to rapid, unpredictable changes, and the tool’s output may not fully reflect all market dynamics.
Market Risks: Trading and investing in financial markets carry significant risks, including the potential loss of principal. Market volatility, economic shifts, and other factors can lead to unexpected outcomes. Past performance is not a reliable indicator of future results, and the Risk Meter’s assessments are based on historical data, not future predictions.
Not a Substitute for Professional Advice: The Risk Meter is not intended to replace personalized financial guidance. Users are strongly encouraged to consult a qualified financial advisor, perform their own research, and evaluate their personal financial situation, risk tolerance, and investment objectives before making any trading or investment decisions.
Limitation of Liability: The creators of the Risk Meter, including any affiliates, developers, or contributors, are not liable for any direct, indirect, incidental, or consequential losses or damages arising from the use of this tool. This includes, but is not limited to, financial losses, missed opportunities, or decisions based on the tool’s output.
User Responsibility: By using the Risk Meter, you accept full responsibility for your trading and investment decisions. You acknowledge that you use the tool at your own risk and that the creators bear no responsibility for any outcomes resulting from its use.
Final Note
The Risk Meter is a supplementary tool designed to enhance your understanding of market risk. It is not a comprehensive solution for investment management. Approach trading and investing with caution, ensuring your decisions align with your personal financial strategy.
BRT CHARTS MTFDescription of the Indicator
This indicator is designed to visualize and analyze price movements across multiple timeframes simultaneously. It displays candles from selected time intervals directly on the current chart, allowing traders to quickly assess market conditions without switching between different timeframes. This is particularly useful for traders who use multi-timeframe analysis to make trading decisions.
Key Features of the Indicator:
1. Displaying Candles from Multiple Timeframes:
- The indicator allows you to select three timeframes (e.g., 1 hour, 4 hours, and 1 day) and displays their candles on the current chart. This helps to see the overall market picture without switching between charts.
- Candles are displayed as vertical columns, each containing the body and wicks (shadows) of the candle. The colors of the candles (green for bullish and red for bearish) are customizable.
2. Dynamic Updates:
- The indicator automatically updates the candles as new data arrives, allowing you to track market changes in real time.
3. Customizable Number of Candles:
- The user can choose how many candles to display for each timeframe (default is 4 candles). This allows the indicator to be adapted to individual needs.
4. Range Display (High/Low):
- The indicator can show High and Low levels for each timeframe, helping to identify key support and resistance levels.
- It is also possible to display the Mid level (average between High and Low), which can be useful for identifying consolidation zones.
5. Data Table:
- The indicator supports displaying a table with key levels (High, Low, Mid) for each timeframe. The table can be placed in any corner of the chart, and its size and text/background colors are customizable.
6. Flexible Appearance Settings:
- The user can customize the colors of the candles, their wicks, High/Low/Mid levels, as well as the placement of the columns on the chart.
How the Indicator Helps in Trading:
- Multi-Timeframe Analysis: The indicator allows you to analyze multiple timeframes simultaneously, helping to better understand the overall trend and find entry points. For example, if the trend is bullish on the daily timeframe and there is a correction on the hourly timeframe, this could be a good opportunity to buy.
- Identifying Key Levels: Displaying High, Low, and Mid levels helps quickly identify support and resistance zones, which is useful for setting stop-loss and take-profit levels.
- Time-Saving: The indicator eliminates the need to switch between timeframes, speeding up the analysis and decision-making process.
- Visual Clarity: Visualizing candles from different timeframes on a single chart makes analysis more convenient and intuitive.
Example Use Cases:
1. Trend Trading: If a clear uptrend is visible on the daily timeframe and a correction is occurring on the hourly timeframe, you can look for buy opportunities near support levels.
2. Range Trading: If the price is moving sideways across all timeframes, you can use High and Low levels to trade from the boundaries of the range.
3. Identifying Reversal Points: If the price approaches a key resistance level on the higher timeframe and a bearish candle forms on the lower timeframe, this could be a signal to sell.
Conclusion:
This indicator is a powerful tool for traders who use multi-timeframe analysis. It helps quickly assess market conditions, identify key levels, and make informed trading decisions. Thanks to its flexible settings, the indicator can be adapted to any trading style and visualization preferences.
Divergence IQ [TradingIQ]Hello Traders!
Introducing "Divergence IQ"
Divergence IQ lets traders identify divergences between price action and almost ANY TradingView technical indicator. This tool is designed to help you spot potential trend reversals and continuation patterns with a range of configurable features.
Features
Divergence Detection
Detects both regular and hidden divergences for bullish and bearish setups by comparing price movements with changes in the indicator.
Offers two detection methods: one based on classic pivot point analysis and another that provides immediate divergence signals.
Option to use closing prices for divergence detection, allowing you to choose the data that best fits your strategy.
Normalization Options:
Includes multiple normalization techniques such as robust scaling, rolling Z-score, rolling min-max, or no normalization at all.
Adjustable normalization window lets you customize the indicator to suit various market conditions.
Option to display the normalized indicator on the chart for clearer visual comparison.
Allows traders to take indicators that aren't oscillators, and convert them into an oscillator - allowing for better divergence detection.
Simulated Trade Management:
Integrates simulated trade entries and exits based on divergence signals to demonstrate potential trading outcomes.
Customizable exit strategies with options for ATR-based or percentage-based stop loss and profit target settings.
Automatically calculates key trade metrics such as profit percentage, win rate, profit factor, and total trade count.
Visual Enhancements and On-Chart Displays:
Color-coded signals differentiate between bullish, bearish, hidden bullish, and hidden bearish divergence setups.
On-chart labels, lines, and gradient flow visualizations clearly mark divergence signals, entry points, and exit levels.
Configurable settings let you choose whether to display divergence signals on the price chart or in a separate pane.
Performance Metrics Table:
A performance table dynamically displays important statistics like profit, win rate, profit factor, and number of trades.
This feature offers an at-a-glance assessment of how the divergence-based strategy is performing.
The image above shows Divergence IQ successfully identifying and trading a bullish divergence between an indicator and price action!
The image above shows Divergence IQ successfully identifying and trading a bearish divergence between an indicator and price action!
The image above shows Divergence IQ successfully identifying and trading a hidden bullish divergence between an indicator and price action!
The image above shows Divergence IQ successfully identifying and trading a hidden bearish divergence between an indicator and price action!
The performance table is designed to provide a clear summary of simulated trade results based on divergence setups. You can easily review key metrics to assess the strategy’s effectiveness over different time periods.
Customization and Adaptability
Divergence IQ offers a wide range of configurable settings to tailor the indicator to your personal trading approach. You can adjust the lookback and lookahead periods for pivot detection, select your preferred method for normalization, and modify trade exit parameters to manage risk according to your strategy. The tool’s clear visual elements and comprehensive performance metrics make it a useful addition to your technical analysis toolbox.
The image above shows Divergence IQ identifying divergences between price action and OBV with no normalization technique applied.
While traders can look for divergences between OBV and price, OBV doesn't naturally behave like an oscillator, with no definable upper and lower threshold, OBV can infinitely increase or decrease.
With Divergence IQ's ability to normalize any indicator, traders can normalize non-oscillator technical indicators such as OBV, CVD, MACD, or even a moving average.
In the image above, the "Robust Scaling" normalization technique is selected. Consequently, the output of OBV has changed and is now behaving similar to an oscillator-like technical indicator. This makes spotting divergences between the indicator and price easier and more appropriate.
The three normalization techniques included will change the indicator's final output to be more compatible with divergence detection.
This feature can be used with almost any technical indicator.
Stop Type
Traders can select between ATR based profit targets and stop losses, or percentage based profit targets and stop losses.
The image above shows options for the feature.
Divergence Detection Method
A natural pitfall of divergence trading is that it generally takes several bars to "confirm" a divergence. This makes trading the divergence complicated, because the entry at time of the divergence might look great; however, the divergence wasn't actually signaled until several bars later.
To circumvent this issue, Divergence IQ offers two divergence detection mechanisms.
Pivot Detection
Pivot detection mode is the same as almost every divergence indicator on TradingView. The Pivots High Low indicator is used to detect market/indicator highs and lows and, consequently, divergences.
This method generally finds the "best looking" divergences, but will always take additional time to confirm the divergence.
Immediate Detection
Immediate detection mode attempts to reduce lag between the divergence and its confirmation to as little as possible while avoiding repainting.
Immediate detection mode still uses the Pivots Detection model to find the first high/low of a divergence. However, the most recent high/low does not utilize the Pivot Detection model, and instead immediately looks for a divergence between price and an indicator.
Immediate Detection Mode will always signal a divergence one bar after it's occurred, and traders can set alerts in this mode to be alerted as soon as the divergence occurs.
TradingView Backtester Integration
Divergence IQ is fully compatible with the TradingView backtester!
Divergence IQ isn’t designed to be a “profitable strategy” for users to trade. Instead, the intention of including the backtester is to let users backtest divergence-based trading strategies between the asset on their chart and almost any technical indicator, and to see if divergences have any predictive utility in that market.
So while the backtester is available in Divergence IQ, it’s for users to personally figure out if they should consider a divergence an actionable insight, and not a solicitation that Divergence IQ is a profitable trading strategy. Divergence IQ should be thought of as a Divergence backtesting toolkit, not a full-feature trading strategy.
Strategy Properties Used For Backtest
Initial Capital: $1000 - a realistic amount of starting capital that will resonate with many traders
Amount Per Trade: 5% of equity - a realistic amount of capital to invest relative to portfolio size
Commission: 0.02% - a conservative amount of commission to pay for trade that is standard in crypto trading, and very high for other markets.
Slippage: 1 tick - appropriate for liquid markets, but must be increased in markets with low activity.
Once more, the backtester is meant for traders to personally figure out if divergences are actionable trading signals on the market they wish to trade with the indicator they wish to use.
And that's all!
If you have any cool features you think can benefit Divergence IQ - please feel free to share them!
Thank you so much TradingView community!
Historical Monthly Returns TrackerThe Historical Monthly Returns Tracker is a powerful Pine Script v5 indicator designed to provide a detailed performance analysis of an asset’s monthly returns over time. It calculates and displays the percentage change for each month, aggregated into a structured table. The indicator helps traders and investors identify seasonal trends, recurring patterns, and historical profitability for a selected asset.
Key Features
✅ Historical Performance Analysis – Tracks monthly percentage changes for any asset.
✅ Customizable Start Year – Users can define the beginning year for data analysis.
✅ Comprehensive Data Table – Displays a structured table with yearly returns per month.
✅ Aggregated Statistics – Shows average return, total sum, number of positive months, and win rate (WR) for each month.
✅ Clear Color Coding – Highlights positive returns in green, negative in red, and neutral in gray.
✅ Works on Daily & Monthly Timeframes – Ensures accurate calculations based on higher timeframes.
How It Works
Data Collection:
The script fetches monthly closing prices.
It calculates month-over-month percentage change.
The values are stored in a matrix for further processing.
Table Generation:
Displays a structured table where each row represents a year, and each column represents a month (Jan–Dec).
Monthly returns are color-coded for easy interpretation.
Aggregated Statistics:
AVG: The average return per month across all available years.
SUM: The total cumulative return for each month.
+ive: The number of times a month had positive performance vs. total occurrences.
WR (Win Rate): The percentage of times a month had a positive return.
Use Cases
📈 Seasonality Analysis: Identify which months historically perform better or worse.
📊 Risk Management: Plan trading strategies based on historical trends.
🔍 Backtesting Aid: Support algorithmic and discretionary traders with real data insights.
🔄 Asset Comparison: Compare different stocks, forex pairs, or cryptocurrencies for their seasonal behavior.
How to Use
Apply the Indicator to a chart in TradingView.
Ensure your timeframe is Daily or Monthly (lower timeframes are not supported).
The table will automatically populate based on available historical data.
Analyze the patterns, trends, and win rates to optimize trading decisions.
Limitations
⚠️ Requires a sufficient amount of historical data to provide accurate analysis.
⚠️ Works best on high-liquidity assets (stocks, indices, forex, crypto).
⚠️ Not a predictive tool but rather a historical performance tracker.
Final Thoughts
The Historical Monthly Returns Tracker is an excellent tool for traders seeking to leverage seasonal trends in their strategies. Whether you're a stock, forex, or crypto trader, this indicator provides clear, data-driven insights to help refine entry and exit points based on historical patterns.
🚀 Use this tool to make smarter, more informed trading decisions!
Oracle Fear and GreedCustom Fear and Greed Oscillator with Movement Table
This indicator provides a unique perspective on market sentiment by calculating a custom fear/greed oscillator based on Heikin-Ashi candles. The oscillator is centered at 50, with values above 50 suggesting bullish sentiment ("greed") and below 50 indicating bearish sentiment ("fear"). The calculation incorporates candle body size, range, and a custom "candle strength" measure, providing an innovative approach to understanding market behavior.
Key Features:
Heikin-Ashi Based Oscillator:
Utilizes Heikin-Ashi candles to compute a custom oscillator. The value is centered at 50, with deviations indicating the prevailing market sentiment.
Dynamic Gradient Coloring:
The oscillator line is dynamically colored with a smooth gradient—from blue (representing fear) at lower values to pink (representing greed) at higher values—making it visually intuitive.
Horizontal Levels:
Two additional horizontal lines are drawn at 40.62 ("Bottom") and 60.74 ("Top"), which may serve as potential oversold and overbought boundaries respectively.
Fast Movement Metrics:
Every 5 bars, the indicator calculates the percentage change in the Heikin-Ashi close. This fast movement analysis distinguishes rapid downward moves (fast fear) from rapid upward moves (fast greed), helping to capture sudden market shifts.
Information Table:
A table in the top-right corner displays the most recent fast movement values for both fear and greed, offering quick insights into short-term market dynamics.
Usage Tips:
Adjust the smoothing period to match your preferred trading timeframe.
Use the oscillator alongside other analysis tools for more robust trading decisions.
Ideal for those looking to experiment with new approaches to sentiment analysis and momentum detection.
Disclaimer:
This indicator is intended for educational and experimental purposes. It should not be used as the sole basis for any trading decisions. Always combine with comprehensive market analysis and risk management strategies.
You can add this description when publishing your indicator on TradingView to help other users understand its features and intended use.
Multi-Asset & TF RSI
Multi-Asset & TF RSI
This indicator allows you to compare the Relative Strength Index (RSI) values of two different assets across multiple timeframes in a single pane. It’s ideal for traders who wish to monitor momentum across different markets or instruments simultaneously.
Key Features:
Primary Asset RSI:
The indicator automatically calculates the RSI for the chart’s asset. You can adjust the timeframe for this asset using a dropdown that offers standard TradingView timeframes, a "Chart" option (which syncs with your current chart timeframe), or a "Custom" option where you can enter any timeframe.
Optional Second Asset RSI:
Enable the “Display Second Asset” option to compare another asset’s RSI. Simply select the symbol (default is “DXY”) and choose its timeframe from an identical dropdown. When enabled, the second asset’s RSI is computed and plotted for easy comparison.
RSI Settings:
Customize the RSI length and choose the data source (e.g., close price) to suit your trading strategy.
Visual Aids:
Overbought (70) and oversold (30) levels are clearly marked, along with a midline at 50. These visual cues help you quickly assess market conditions.
Asset Information Table:
A dynamic table at the top of the pane displays the symbols being analysed – the chart’s asset as the “1st” asset and, if enabled, the second asset as the “2nd.”
How to Use:
Apply the Indicator:
Add the indicator to your chart. By default, it will calculate the RSI for the chart’s current asset using your chart’s timeframe.
Adjust Primary Asset Settings:
Use the “Main Asset Timeframe” dropdown to choose the timeframe for the RSI calculation on the chart asset. Select “Chart” to automatically match your current chart’s timeframe or choose a preset/custom timeframe.
Enable and Configure the Second Asset:
Toggle the “Display Second Asset” option to enable the second asset’s RSI. Select the asset symbol and its desired timeframe using the provided dropdown. The RSI for the second asset will be plotted if enabled.
Monitor the RSI Values:
Observe the plotted RSI lines along with the overbought/oversold levels. Use the table at the top-centre of the pane to verify which asset symbols are being displayed.
This versatile tool is designed to support multi-asset analysis and can be a valuable addition to your technical analysis toolkit. Enjoy enhanced RSI comparison across markets and timeframes!
Happy Trading!
ValueAtTime█ OVERVIEW
This library is a Pine Script® programming tool for accessing historical values in a time series using UNIX timestamps . Its data structure and functions index values by time, allowing scripts to retrieve past values based on absolute timestamps or relative time offsets instead of relying on bar index offsets.
█ CONCEPTS
UNIX timestamps
In Pine Script®, a UNIX timestamp is an integer representing the number of milliseconds elapsed since January 1, 1970, at 00:00:00 UTC (the UNIX Epoch ). The timestamp is a unique, absolute representation of a specific point in time. Unlike a calendar date and time, a UNIX timestamp's meaning does not change relative to any time zone .
This library's functions process series values and corresponding UNIX timestamps in pairs , offering a simplified way to identify values that occur at or near distinct points in time instead of on specific bars.
Storing and retrieving time-value pairs
This library's `Data` type defines the structure for collecting time and value information in pairs. Objects of the `Data` type contain the following two fields:
• `times` – An array of "int" UNIX timestamps for each recorded value.
• `values` – An array of "float" values for each saved timestamp.
Each index in both arrays refers to a specific time-value pair. For instance, the `times` and `values` elements at index 0 represent the first saved timestamp and corresponding value. The library functions that maintain `Data` objects queue up to one time-value pair per bar into the object's arrays, where the saved timestamp represents the bar's opening time .
Because the `times` array contains a distinct UNIX timestamp for each item in the `values` array, it serves as a custom mapping for retrieving saved values. All the library functions that return information from a `Data` object use this simple two-step process to identify a value based on time:
1. Perform a binary search on the `times` array to find the earliest saved timestamp closest to the specified time or offset and get the element's index.
2. Access the element from the `values` array at the retrieved index, returning the stored value corresponding to the found timestamp.
Value search methods
There are several techniques programmers can use to identify historical values from corresponding timestamps. This library's functions include three different search methods to locate and retrieve values based on absolute times or relative time offsets:
Timestamp search
Find the value with the earliest saved timestamp closest to a specified timestamp.
Millisecond offset search
Find the value with the earliest saved timestamp closest to a specified number of milliseconds behind the current bar's opening time. This search method provides a time-based alternative to retrieving historical values at specific bar offsets.
Period offset search
Locate the value with the earliest saved timestamp closest to a defined period offset behind the current bar's opening time. The function calculates the span of the offset based on a period string . The "string" must contain one of the following unit tokens:
• "D" for days
• "W" for weeks
• "M" for months
• "Y" for years
• "YTD" for year-to-date, meaning the time elapsed since the beginning of the bar's opening year in the exchange time zone.
The period string can include a multiplier prefix for all supported units except "YTD" (e.g., "2W" for two weeks).
Note that the precise span covered by the "M", "Y", and "YTD" units varies across time. The "1M" period can cover 28, 29, 30, or 31 days, depending on the bar's opening month and year in the exchange time zone. The "1Y" period covers 365 or 366 days, depending on leap years. The "YTD" period's span changes with each new bar, because it always measures the time from the start of the current bar's opening year.
█ CALCULATIONS AND USE
This library's functions offer a flexible, structured approach to retrieving historical values at or near specific timestamps, millisecond offsets, or period offsets for different analytical needs.
See below for explanations of the exported functions and how to use them.
Retrieving single values
The library includes three functions that retrieve a single stored value using timestamp, millisecond offset, or period offset search methods:
• `valueAtTime()` – Locates the saved value with the earliest timestamp closest to a specified timestamp.
• `valueAtTimeOffset()` – Finds the saved value with the earliest timestamp closest to the specified number of milliseconds behind the current bar's opening time.
• `valueAtPeriodOffset()` – Finds the saved value with the earliest timestamp closest to the period-based offset behind the current bar's opening time.
Each function has two overloads for advanced and simple use cases. The first overload searches for a value in a user-specified `Data` object created by the `collectData()` function (see below). It returns a tuple containing the found value and the corresponding timestamp.
The second overload maintains a `Data` object internally to store and retrieve values for a specified `source` series. This overload returns a tuple containing the historical `source` value, the corresponding timestamp, and the current bar's `source` value, making it helpful for comparing past and present values from requested contexts.
Retrieving multiple values
The library includes the following functions to retrieve values from multiple historical points in time, facilitating calculations and comparisons with values retrieved across several intervals:
• `getDataAtTimes()` – Locates a past `source` value for each item in a `timestamps` array. Each retrieved value's timestamp represents the earliest time closest to one of the specified timestamps.
• `getDataAtTimeOffsets()` – Finds a past `source` value for each item in a `timeOffsets` array. Each retrieved value's timestamp represents the earliest time closest to one of the specified millisecond offsets behind the current bar's opening time.
• `getDataAtPeriodOffsets()` – Finds a past value for each item in a `periods` array. Each retrieved value's timestamp represents the earliest time closest to one of the specified period offsets behind the current bar's opening time.
Each function returns a tuple with arrays containing the found `source` values and their corresponding timestamps. In addition, the tuple includes the current `source` value and the symbol's description, which also makes these functions helpful for multi-interval comparisons using data from requested contexts.
Processing period inputs
When writing scripts that retrieve historical values based on several user-specified period offsets, the most concise approach is to create a single text input that allows users to list each period, then process the "string" list into an array for use in the `getDataAtPeriodOffsets()` function.
This library includes a `getArrayFromString()` function to provide a simple way to process strings containing comma-separated lists of periods. The function splits the specified `str` by its commas and returns an array containing every non-empty item in the list with surrounding whitespaces removed. View the example code to see how we use this function to process the value of a text area input .
Calculating period offset times
Because the exact amount of time covered by a specified period offset can vary, it is often helpful to verify the resulting times when using the `valueAtPeriodOffset()` or `getDataAtPeriodOffsets()` functions to ensure the calculations work as intended for your use case.
The library's `periodToTimestamp()` function calculates an offset timestamp from a given period and reference time. With this function, programmers can verify the time offsets in a period-based data search and use the calculated offset times in additional operations.
For periods with "D" or "W" units, the function calculates the time offset based on the absolute number of milliseconds the period covers (e.g., `86400000` for "1D"). For periods with "M", "Y", or "YTD" units, the function calculates an offset time based on the reference time's calendar date in the exchange time zone.
Collecting data
All the `getDataAt*()` functions, and the second overloads of the `valueAt*()` functions, collect and maintain data internally, meaning scripts do not require a separate `Data` object when using them. However, the first overloads of the `valueAt*()` functions do not collect data, because they retrieve values from a user-specified `Data` object.
For cases where a script requires a separate `Data` object for use with these overloads or other custom routines, this library exports the `collectData()` function. This function queues each bar's `source` value and opening timestamp into a `Data` object and returns the object's ID.
This function is particularly useful when searching for values from a specific series more than once. For instance, instead of using multiple calls to the second overloads of `valueAt*()` functions with the same `source` argument, programmers can call `collectData()` to store each bar's `source` and opening timestamp, then use the returned `Data` object's ID in calls to the first `valueAt*()` overloads to reduce memory usage.
The `collectData()` function and all the functions that collect data internally include two optional parameters for limiting the saved time-value pairs to a sliding window: `timeOffsetLimit` and `timeframeLimit`. When either has a non-na argument, the function restricts the collected data to the maximum number of recent bars covered by the specified millisecond- and timeframe-based intervals.
NOTE : All calls to the functions that collect data for a `source` series can execute up to once per bar or realtime tick, because each stored value requires a unique corresponding timestamp. Therefore, scripts cannot call these functions iteratively within a loop . If a call to these functions executes more than once inside a loop's scope, it causes a runtime error.
█ EXAMPLE CODE
The example code at the end of the script demonstrates one possible use case for this library's functions. The code retrieves historical price data at user-specified period offsets, calculates price returns for each period from the retrieved data, and then populates a table with the results.
The example code's process is as follows:
1. Input a list of periods – The user specifies a comma-separated list of period strings in the script's "Period list" input (e.g., "1W, 1M, 3M, 1Y, YTD"). Each item in the input list represents a period offset from the latest bar's opening time.
2. Process the period list – The example calls `getArrayFromString()` on the first bar to split the input list by its commas and construct an array of period strings.
3. Request historical data – The code uses a call to `getDataAtPeriodOffsets()` as the `expression` argument in a request.security() call to retrieve the closing prices of "1D" bars for each period included in the processed `periods` array.
4. Display information in a table – On the latest bar, the code uses the retrieved data to calculate price returns over each specified period, then populates a two-row table with the results. The cells for each return percentage are color-coded based on the magnitude and direction of the price change. The cells also include tooltips showing the compared daily bar's opening date in the exchange time zone.
█ NOTES
• This library's architecture relies on a user-defined type (UDT) for its data storage format. UDTs are blueprints from which scripts create objects , i.e., composite structures with fields containing independent values or references of any supported type.
• The library functions search through a `Data` object's `times` array using the array.binary_search_leftmost() function, which is more efficient than looping through collected data to identify matching timestamps. Note that this built-in works only for arrays with elements sorted in ascending order .
• Each function that collects data from a `source` series updates the values and times stored in a local `Data` object's arrays. If a single call to these functions were to execute in a loop , it would store multiple values with an identical timestamp, which can cause erroneous search behavior. To prevent looped calls to these functions, the library uses the `checkCall()` helper function in their scopes. This function maintains a counter that increases by one each time it executes on a confirmed bar. If the count exceeds the total number of bars, indicating the call executes more than once in a loop, it raises a runtime error .
• Typically, when requesting higher-timeframe data with request.security() while using barmerge.lookahead_on as the `lookahead` argument, the `expression` argument should be offset with the history-referencing operator to prevent lookahead bias on historical bars. However, the call in this script's example code enables lookahead without offsetting the `expression` because the script displays results only on the last historical bar and all realtime bars, where there is no future data to leak into the past. This call ensures the displayed results use the latest data available from the context on realtime bars.
Look first. Then leap.
█ EXPORTED TYPES
Data
A structure for storing successive timestamps and corresponding values from a dataset.
Fields:
times (array) : An "int" array containing a UNIX timestamp for each value in the `values` array.
values (array) : A "float" array containing values corresponding to the timestamps in the `times` array.
█ EXPORTED FUNCTIONS
getArrayFromString(str)
Splits a "string" into an array of substrings using the comma (`,`) as the delimiter. The function trims surrounding whitespace characters from each substring, and it excludes empty substrings from the result.
Parameters:
str (series string) : The "string" to split into an array based on its commas.
Returns: (array) An array of trimmed substrings from the specified `str`.
periodToTimestamp(period, referenceTime)
Calculates a UNIX timestamp representing the point offset behind a reference time by the amount of time within the specified `period`.
Parameters:
period (series string) : The period string, which determines the time offset of the returned timestamp. The specified argument must contain a unit and an optional multiplier (e.g., "1Y", "3M", "2W", "YTD"). Supported units are:
- "Y" for years.
- "M" for months.
- "W" for weeks.
- "D" for days.
- "YTD" (Year-to-date) for the span from the start of the `referenceTime` value's year in the exchange time zone. An argument with this unit cannot contain a multiplier.
referenceTime (series int) : The millisecond UNIX timestamp from which to calculate the offset time.
Returns: (int) A millisecond UNIX timestamp representing the offset time point behind the `referenceTime`.
collectData(source, timeOffsetLimit, timeframeLimit)
Collects `source` and `time` data successively across bars. The function stores the information within a `Data` object for use in other exported functions/methods, such as `valueAtTimeOffset()` and `valueAtPeriodOffset()`. Any call to this function cannot execute more than once per bar or realtime tick.
Parameters:
source (series float) : The source series to collect. The function stores each value in the series with an associated timestamp representing its corresponding bar's opening time.
timeOffsetLimit (simple int) : Optional. A time offset (range) in milliseconds. If specified, the function limits the collected data to the maximum number of bars covered by the range, with a minimum of one bar. If the call includes a non-empty `timeframeLimit` value, the function limits the data using the largest number of bars covered by the two ranges. The default is `na`.
timeframeLimit (simple string) : Optional. A valid timeframe string. If specified and not empty, the function limits the collected data to the maximum number of bars covered by the timeframe, with a minimum of one bar. If the call includes a non-na `timeOffsetLimit` value, the function limits the data using the largest number of bars covered by the two ranges. The default is `na`.
Returns: (Data) A `Data` object containing collected `source` values and corresponding timestamps over the allowed time range.
method valueAtTime(data, timestamp)
(Overload 1 of 2) Retrieves value and time data from a `Data` object's fields at the index of the earliest timestamp closest to the specified `timestamp`. Callable as a method or a function.
Parameters:
data (series Data) : The `Data` object containing the collected time and value data.
timestamp (series int) : The millisecond UNIX timestamp to search. The function returns data for the earliest saved timestamp that is closest to the value.
Returns: ( ) A tuple containing the following data from the `Data` object:
- The stored value corresponding to the identified timestamp ("float").
- The earliest saved timestamp that is closest to the specified `timestamp` ("int").
valueAtTime(source, timestamp, timeOffsetLimit, timeframeLimit)
(Overload 2 of 2) Retrieves `source` and time information for the earliest bar whose opening timestamp is closest to the specified `timestamp`. Any call to this function cannot execute more than once per bar or realtime tick.
Parameters:
source (series float) : The source series to analyze. The function stores each value in the series with an associated timestamp representing its corresponding bar's opening time.
timestamp (series int) : The millisecond UNIX timestamp to search. The function returns data for the earliest bar whose timestamp is closest to the value.
timeOffsetLimit (simple int) : Optional. A time offset (range) in milliseconds. If specified, the function limits the collected data to the maximum number of bars covered by the range, with a minimum of one bar. If the call includes a non-empty `timeframeLimit` value, the function limits the data using the largest number of bars covered by the two ranges. The default is `na`.
timeframeLimit (simple string) : (simple string) Optional. A valid timeframe string. If specified and not empty, the function limits the collected data to the maximum number of bars covered by the timeframe, with a minimum of one bar. If the call includes a non-na `timeOffsetLimit` value, the function limits the data using the largest number of bars covered by the two ranges. The default is `na`.
Returns: ( ) A tuple containing the following data:
- The `source` value corresponding to the identified timestamp ("float").
- The earliest bar's timestamp that is closest to the specified `timestamp` ("int").
- The current bar's `source` value ("float").
method valueAtTimeOffset(data, timeOffset)
(Overload 1 of 2) Retrieves value and time data from a `Data` object's fields at the index of the earliest saved timestamp closest to `timeOffset` milliseconds behind the current bar's opening time. Callable as a method or a function.
Parameters:
data (series Data) : The `Data` object containing the collected time and value data.
timeOffset (series int) : The millisecond offset behind the bar's opening time. The function returns data for the earliest saved timestamp that is closest to the calculated offset time.
Returns: ( ) A tuple containing the following data from the `Data` object:
- The stored value corresponding to the identified timestamp ("float").
- The earliest saved timestamp that is closest to `timeOffset` milliseconds before the current bar's opening time ("int").
valueAtTimeOffset(source, timeOffset, timeOffsetLimit, timeframeLimit)
(Overload 2 of 2) Retrieves `source` and time information for the earliest bar whose opening timestamp is closest to `timeOffset` milliseconds behind the current bar's opening time. Any call to this function cannot execute more than once per bar or realtime tick.
Parameters:
source (series float) : The source series to analyze. The function stores each value in the series with an associated timestamp representing its corresponding bar's opening time.
timeOffset (series int) : The millisecond offset behind the bar's opening time. The function returns data for the earliest bar's timestamp that is closest to the calculated offset time.
timeOffsetLimit (simple int) : Optional. A time offset (range) in milliseconds. If specified, the function limits the collected data to the maximum number of bars covered by the range, with a minimum of one bar. If the call includes a non-empty `timeframeLimit` value, the function limits the data using the largest number of bars covered by the two ranges. The default is `na`.
timeframeLimit (simple string) : Optional. A valid timeframe string. If specified and not empty, the function limits the collected data to the maximum number of bars covered by the timeframe, with a minimum of one bar. If the call includes a non-na `timeOffsetLimit` value, the function limits the data using the largest number of bars covered by the two ranges. The default is `na`.
Returns: ( ) A tuple containing the following data:
- The `source` value corresponding to the identified timestamp ("float").
- The earliest bar's timestamp that is closest to `timeOffset` milliseconds before the current bar's opening time ("int").
- The current bar's `source` value ("float").
method valueAtPeriodOffset(data, period)
(Overload 1 of 2) Retrieves value and time data from a `Data` object's fields at the index of the earliest timestamp closest to a calculated offset behind the current bar's opening time. The calculated offset represents the amount of time covered by the specified `period`. Callable as a method or a function.
Parameters:
data (series Data) : The `Data` object containing the collected time and value data.
period (series string) : The period string, which determines the calculated time offset. The specified argument must contain a unit and an optional multiplier (e.g., "1Y", "3M", "2W", "YTD"). Supported units are:
- "Y" for years.
- "M" for months.
- "W" for weeks.
- "D" for days.
- "YTD" (Year-to-date) for the span from the start of the current bar's year in the exchange time zone. An argument with this unit cannot contain a multiplier.
Returns: ( ) A tuple containing the following data from the `Data` object:
- The stored value corresponding to the identified timestamp ("float").
- The earliest saved timestamp that is closest to the calculated offset behind the bar's opening time ("int").
valueAtPeriodOffset(source, period, timeOffsetLimit, timeframeLimit)
(Overload 2 of 2) Retrieves `source` and time information for the earliest bar whose opening timestamp is closest to a calculated offset behind the current bar's opening time. The calculated offset represents the amount of time covered by the specified `period`. Any call to this function cannot execute more than once per bar or realtime tick.
Parameters:
source (series float) : The source series to analyze. The function stores each value in the series with an associated timestamp representing its corresponding bar's opening time.
period (series string) : The period string, which determines the calculated time offset. The specified argument must contain a unit and an optional multiplier (e.g., "1Y", "3M", "2W", "YTD"). Supported units are:
- "Y" for years.
- "M" for months.
- "W" for weeks.
- "D" for days.
- "YTD" (Year-to-date) for the span from the start of the current bar's year in the exchange time zone. An argument with this unit cannot contain a multiplier.
timeOffsetLimit (simple int) : Optional. A time offset (range) in milliseconds. If specified, the function limits the collected data to the maximum number of bars covered by the range, with a minimum of one bar. If the call includes a non-empty `timeframeLimit` value, the function limits the data using the largest number of bars covered by the two ranges. The default is `na`.
timeframeLimit (simple string) : Optional. A valid timeframe string. If specified and not empty, the function limits the collected data to the maximum number of bars covered by the timeframe, with a minimum of one bar. If the call includes a non-na `timeOffsetLimit` value, the function limits the data using the largest number of bars covered by the two ranges. The default is `na`.
Returns: ( ) A tuple containing the following data:
- The `source` value corresponding to the identified timestamp ("float").
- The earliest bar's timestamp that is closest to the calculated offset behind the current bar's opening time ("int").
- The current bar's `source` value ("float").
getDataAtTimes(timestamps, source, timeOffsetLimit, timeframeLimit)
Retrieves `source` and time information for each bar whose opening timestamp is the earliest one closest to one of the UNIX timestamps specified in the `timestamps` array. Any call to this function cannot execute more than once per bar or realtime tick.
Parameters:
timestamps (array) : An array of "int" values representing UNIX timestamps. The function retrieves `source` and time data for each element in this array.
source (series float) : The source series to analyze. The function stores each value in the series with an associated timestamp representing its corresponding bar's opening time.
timeOffsetLimit (simple int) : Optional. A time offset (range) in milliseconds. If specified, the function limits the collected data to the maximum number of bars covered by the range, with a minimum of one bar. If the call includes a non-empty `timeframeLimit` value, the function limits the data using the largest number of bars covered by the two ranges. The default is `na`.
timeframeLimit (simple string) : Optional. A valid timeframe string. If specified and not empty, the function limits the collected data to the maximum number of bars covered by the timeframe, with a minimum of one bar. If the call includes a non-na `timeOffsetLimit` value, the function limits the data using the largest number of bars covered by the two ranges. The default is `na`.
Returns: ( ) A tuple of the following data:
- An array containing a `source` value for each identified timestamp (array).
- An array containing an identified timestamp for each item in the `timestamps` array (array).
- The current bar's `source` value ("float").
- The symbol's description from `syminfo.description` ("string").
getDataAtTimeOffsets(timeOffsets, source, timeOffsetLimit, timeframeLimit)
Retrieves `source` and time information for each bar whose opening timestamp is the earliest one closest to one of the time offsets specified in the `timeOffsets` array. Each offset in the array represents the absolute number of milliseconds behind the current bar's opening time. Any call to this function cannot execute more than once per bar or realtime tick.
Parameters:
timeOffsets (array) : An array of "int" values representing the millisecond time offsets used in the search. The function retrieves `source` and time data for each element in this array. For example, the array ` ` specifies that the function returns data for the timestamps closest to one day and one week behind the current bar's opening time.
source (float) : (series float) The source series to analyze. The function stores each value in the series with an associated timestamp representing its corresponding bar's opening time.
timeOffsetLimit (simple int) : Optional. A time offset (range) in milliseconds. If specified, the function limits the collected data to the maximum number of bars covered by the range, with a minimum of one bar. If the call includes a non-empty `timeframeLimit` value, the function limits the data using the largest number of bars covered by the two ranges. The default is `na`.
timeframeLimit (simple string) : Optional. A valid timeframe string. If specified and not empty, the function limits the collected data to the maximum number of bars covered by the timeframe, with a minimum of one bar. If the call includes a non-na `timeOffsetLimit` value, the function limits the data using the largest number of bars covered by the two ranges. The default is `na`.
Returns: ( ) A tuple of the following data:
- An array containing a `source` value for each identified timestamp (array).
- An array containing an identified timestamp for each offset specified in the `timeOffsets` array (array).
- The current bar's `source` value ("float").
- The symbol's description from `syminfo.description` ("string").
getDataAtPeriodOffsets(periods, source, timeOffsetLimit, timeframeLimit)
Retrieves `source` and time information for each bar whose opening timestamp is the earliest one closest to a calculated offset behind the current bar's opening time. Each calculated offset represents the amount of time covered by a period specified in the `periods` array. Any call to this function cannot execute more than once per bar or realtime tick.
Parameters:
periods (array) : An array of period strings, which determines the time offsets used in the search. The function retrieves `source` and time data for each element in this array. For example, the array ` ` specifies that the function returns data for the timestamps closest to one day, week, and month behind the current bar's opening time. Each "string" in the array must contain a unit and an optional multiplier. Supported units are:
- "Y" for years.
- "M" for months.
- "W" for weeks.
- "D" for days.
- "YTD" (Year-to-date) for the span from the start of the current bar's year in the exchange time zone. An argument with this unit cannot contain a multiplier.
source (float) : (series float) The source series to analyze. The function stores each value in the series with an associated timestamp representing its corresponding bar's opening time.
timeOffsetLimit (simple int) : Optional. A time offset (range) in milliseconds. If specified, the function limits the collected data to the maximum number of bars covered by the range, with a minimum of one bar. If the call includes a non-empty `timeframeLimit` value, the function limits the data using the largest number of bars covered by the two ranges. The default is `na`.
timeframeLimit (simple string) : Optional. A valid timeframe string. If specified and not empty, the function limits the collected data to the maximum number of bars covered by the timeframe, with a minimum of one bar. If the call includes a non-na `timeOffsetLimit` value, the function limits the data using the largest number of bars covered by the two ranges. The default is `na`.
Returns: ( ) A tuple of the following data:
- An array containing a `source` value for each identified timestamp (array).
- An array containing an identified timestamp for each period specified in the `periods` array (array).
- The current bar's `source` value ("float").
- The symbol's description from `syminfo.description` ("string").
52-Week & 5-Year High/Low with DatesThis indicator is designed to help traders quickly identify key price levels and their historical context by displaying the 52-week high/low and 5-year high/low prices along with their respective dates. It provides a clear visual representation of these levels directly on the chart and in a dashboard table for easy reference.
Key Features
52-Week High/Low:
Displays the highest and lowest prices over the last 252 trading days (approximately 52 weeks).
Includes the exact date when these levels were reached.
5-Year High/Low:
Displays the highest and lowest prices over the last 1260 trading days (approximately 5 years).
Includes the exact date when these levels were reached.
Visual Labels:
High and low levels are marked on the chart with labels that include the price and date.
Dashboard Table:
A table in the top-right corner of the chart summarizes the 52-week and 5-year high/low prices and their dates for quick reference.
Customizable Date Format:
Dates are displayed in the YYYY-MM-DD format for clarity and consistency.
Reversal Opportunity📌 Indicator Description – Reversal Opportunity 🎯
🔍 General Overview
The Reversal Opportunity indicator is designed to identify ideal conditions for Reversal Trading, but it does not provide trade entry signals. Instead, it helps traders determine whether the market conditions are favorable for a potential reversal.
It is specifically designed for traders who execute Reversal trades (Long or Short) and want a clear indication of whether the market is currently suitable for such setups.
💡 What does this indicator do?
- Identifies strong momentum before a reversal (a sharp upward or downward move).
- Detects momentum slowdown (decreasing volume and smaller candles).
- Checks if the RSI is at an extreme level (above 70 or below 30), indicating potential overbought or oversold conditions.
- Displays a table at the top center of the screen with the following key data:
- Are the conditions for a reversal met?
- Is there a slowdown in momentum?
- Is RSI at an extreme level?
- Was there strong uptrend momentum before a possible Short Reversal?
- Was there strong downtrend momentum before a possible Long Reversal?
⚙️ How Does the Indicator Work?
The indicator displays a table in the center of the screen, updating every 5 candles to indicate whether the market conditions are ideal for a reversal trade.
📊 Main Status Row:
- ✔ Ideal Reversal Setup → Conditions for a reversal trade are met (not a trade recommendation).
- ✖ Not Ideal → Reversal conditions are not met; it may be better to wait.
📌 Key Criteria Displayed in the Table:
1. ⚠️ Momentum Slowdown
- Yes → Momentum is weakening (a good sign for reversal trades).
- No → The market is still moving strongly, and a reversal might not be ready yet.
2. 📈 RSI Extreme
- Yes → RSI is above 70 (overbought) or below 30 (oversold), indicating a potential reversal.
- No → RSI is still in a normal range, suggesting that waiting for further confirmation might be wise.
3. 📊 Uptrend Momentum Before Reversal
- Yes → There was a strong uptrend over multiple consecutive candles, potentially setting up for a Short Reversal.
- No → No strong upward momentum was detected, meaning conditions for a Short Reversal may not be ideal.
4. 📉 Downtrend Momentum Before Reversal
- Yes → There was a strong downtrend over multiple consecutive candles, potentially setting up for a Long Reversal.
- No → No strong downward momentum was detected, meaning conditions for a Long Reversal may not be ideal.
🛠️ How to Use the Indicator?
- If "✔ Ideal Reversal Setup" appears, there is a high probability of a market reversal – use your personal entry strategy for further confirmation.
- If Momentum Slowdown = Yes, RSI Extreme = Yes, and strong momentum occurred beforehand, this is an ideal setup for a reversal trade.
- If any conditions are missing ("No"), it may be better to wait for further confirmation instead of entering too early.
- The indicator does NOT provide trade entries! Use your existing trading system for confirmation before entering a trade.
👥 Who Is This Indicator For?
- Reversal traders (entering against the current trend after a strong move).
- Intraday traders looking for reversal trades at extreme market levels.
- Technical traders who rely on Price Action and Volume for trade setups.
⚠️ Disclaimer:
This indicator does not recommend trade entries but provides insight into market conditions. The trader is responsible for risk management and decision-making.
It is best used in combination with additional confirmations such as reversal candles, Order Flow, Bookmap, or Volume Profile to improve accuracy.
🚀 The indicator is ready to use – add it to TradingView and get instant feedback on whether the market is ideal for a Reversal trade!
Display MB on BarsDescription
The "Display MB on Bars" Pine Script indicator is designed to visually represent Market Breadth values and R4.5 scores on trading charts. This script enables traders to highlight and analyze key market behavior using pre-defined thresholds for MB scores and dynamically calculated R4.5 values. Additionally, it includes a moving average status table to assess price levels relative to the 10-day and 20-day moving averages.
Features:
1. COB Date Matching: Displays data corresponding to specific "COB dates" provided by the user.
2. MB Value Visualization:
o Highlights bars with a background color based on MB values:
Red if MB ≤ MB_Red (default: -1).
Green if MB ≥ MB_Green (default: 3).
3. R4.5 Scores Display:
o Creates a label on the chart with the MB and R4.5 values when conditions are met (e.g., R4.5 > 200 or specific MB thresholds).
4. Index Moving Average Comparison:
o Calculates 10-day and 20-day moving averages for the selected symbol (default: NSE:NIFTYMIDSML400).
o Shows the price position relative to these moving averages in a table.
How to Use:
1. Configure Inputs:
o COB Dates: Enter a comma-separated list of dates in the format DD-MM-YYYY.
o MB Values: Provide the corresponding MB scores for the COB dates.
o R4.5 Values: Provide the R4.5 scores for the COB dates.
o Set the thresholds for MB values (MB Red<= and MB Green>=).
o Toggle features like MB, RS (R4.5), and the moving average status table.
2. Interpret the Output:
o Observe background colors on the bars:
Red: Indicates MB is less than or equal to the lower threshold.
Green: Indicates MB exceeds the upper threshold.
o Check labels above bars for R4.5 and MB values when conditions are met.
o Refer to the status table on the top-right corner to understand price positions relative to 10-day and 20-day moving averages.
This script is especially useful for traders seeking insights into custom metrics like MB and R4.5, enabling quick identification of key patterns and trends in the market.
Dominant Smoothed Volume Pro Smoothed Volume Pro provides a useful tool designed to provide traders with a deeper understanding of market dynamics by analyzing buy and sell volume across multiple timeframes. Unlike traditional volume indicators, this script normalizes volume data from lower timeframes to align with the current chart's timeframe, providing an apples-to-apples comparison. The result is a visual histogram representation of the dominant buy or sell activity, smoothed over 5 different periods to reflect momentum shifts and enhance clarity.
Core Methodology
1. Multi-Timeframe Volume Analysis
This indicator leverages data from five different lower timeframes, each chosen dynamically based on the current chart's timeframe. By aggregating and normalizing these granular data points, the indicator captures subtle shifts in buy and sell volume that might otherwise go unnoticed. This multi-timeframe approach allows for a more detailed and accurate representation of market activity.
2. Data Normalization
Normalization is a critical component of this indicator. It ensures that volume data from lower timeframes is scaled appropriately to match the total volume of the current chart's timeframe. This step eliminates discrepancies caused by varying time intervals, providing a more meaningful comparison of volume trends across different periods.
3. Smoothing for Momentum Representation
The indicator employs five customizable smoothing factors to smooth out noisy volume data.
Each smoothing factor is distinctly color-coded in the histogram and table for intuitive analysis, helping traders quickly identify prevailing trends.
Features and Benefits
➖Customizable Smoothing Factors: Choose from five different smoothing factors, each with its unique settings for line styles, colors, and extensions.
➖Normalized Buy and Sell Volume: Displays normalized buy and sell volumes as a percentage of total activity, aiding in quick decision-making.
➖Visual Cues: Color-coded columns and labels help identify dominant trends at a glance, with high-opacity fills for visual clarity.
➖Dynamic Table: A built-in table summarizes smoothed volume data for each smoothing factor, offering a quick overview of bullish and bearish percentages.
➖Momentum Signals: Detect significant shifts in volume momentum with visually distinct alerts for high relative volumes, including special symbols like "⚡" and "🔥."
Practical Applications
➖Identifying Market Sentiment: Quickly determine whether the market is dominated by buyers or sellers at any given moment.
➖Spotting Reversals: Use momentum shifts in smoothed volume to anticipate potential trend reversals.
➖Enhancing Entry and Exit Points: Combine this indicator with other technical tools to refine entry and exit points in your trading strategy.
Why This Indicator Stands Out
Many existing volume indicators focus solely on raw or single-timeframe data, which can be misleading or incomplete. This indicator sets itself apart by:
Utilizing multi-timeframe data to provide a holistic view of market activity.
Applying robust normalization techniques to ensure data consistency.
Offering advanced smoothing options to emphasize actionable momentum signals.
This unique combination of features makes it an indispensable tool for traders seeking to enhance their market analysis and decision-making process.
As always, by combining the Smoothed Volume Pro with other tools, traders ensure that they are not relying on a single indicator. This layered approach can reduce the likelihood of false signals and improve overall trading accuracy.
Here's an additional visual representation using the plot fills:
MAG 7 - Weighted Multi-Symbol Momentum + ExtrasOverview
This indicator aggregates the percentage change of multiple symbols into a single “weighted momentum” value. You can set individual weights to emphasize or de-emphasize particular stocks. The script plots two key items:
The default tickers in the script are:
AAPL (Apple)
AMZN (Amazon)
NVDA (NVIDIA)
MSFT (Microsoft)
GOOGL (Alphabet/Google)
TSLA (Tesla)
META (Meta Platforms/Facebook)
Raw Weighted Momentum (Histogram):
Each bar represents the combined (weighted) percentage change across your chosen symbols for that bar.
Bars are colored green if the momentum is above zero, or red if below zero.
Smoothed Momentum (Yellow Line):
An Exponential Moving Average (EMA) of the raw momentum for a smoother trend view.
Helps visualize when short-term momentum is accelerating or decelerating relative to its average.
Features
Symbol Inputs: Up to seven user-defined tickers, with weights for each symbol.
Smoothing Period: Set a custom lookback length to calculate the EMA (or switch to SMA in the code if you prefer).
Table Display: A built-in table in the top-right corner lists each symbol’s real-time percentage change, plus the total weighted momentum.
Alerts:
Configure alerts for when the weighted momentum crosses above or below user-defined thresholds.
Helps you catch major shifts in sentiment across multiple symbols.
How To Use
Select Symbols & Weights: In the indicator’s settings, specify the tickers you want to monitor and their corresponding weights. Weights default to 1 (equal weighting).
Watch the Bars vs. Zero:
Bars above zero mean a positive weighted momentum (the basket is collectively moving up).
Bars below zero mean negative weighted momentum (the basket is collectively under pressure).
Check the Yellow Line: The EMA of momentum.
If the bars consistently stay above the line, short-term momentum is stronger than its recent average.
If the bars dip below the line, momentum is weakening relative to its average.
Review the Table: Quick snapshot of each symbol’s daily percentage change plus the total basket momentum, all color-coded red or green.
Caution & Tips
This indicator measures rate of change, not absolute price levels. A rising momentum can still be part of a larger downtrend.
Always combine momentum readings with other technical and/or fundamental signals for confirmation.
For better reliability, experiment with different smoothing lengths to suit your trading style (shorter for scalping, longer for swing or positional approaches).
ForecastPro by BinhMyco1. Overview:
This Pine Script implements a custom forecasting tool on TradingView, labeled "BinhMyco." It provides a method to predict future price movements based on historical data and a comparison with similar historical patterns. The script supports two types of forecasts: **Prediction** and **Replication**, where the forecasted price can be either based on price peaks/troughs or an average direction. The script also calculates a confidence probability, showing how closely the forecasted data aligns with historical trends.
2. Inputs:
- Source (`src`): The input data source for forecasting, which defaults to `open`.
- Length (`len`): The length of the training data used for analysis (fixed at 200).
- Reference Length (`leng`): A fixed reference length for comparing similar historical patterns (set to 70).
- Forecast Length (`length`): The length of the forecast period (fixed at 60).
- Multiplier (`mult`): A constant multiplier for the forecast confidence cone (set to 4.0).
- Forecast Type (`typ`): Type of forecast, either **Prediction** or **Replication**.
- Direction Type (`dirtyp`): Defines how the forecast is calculated — either based on price **peaks/troughs** or an **average direction**.
- Forecast Divergence Cone (`divcone`): A boolean option to enable the display of a confidence cone around the forecast.
3. Color Constants:
- Green (`#00ffbb`): Color used for upward price movements.
- Red (`#ff0000`): Color used for downward price movements.
- Reference Data Color (`refcol`): Blue color for the reference data.
- Similar Data Color (`simcol`): Orange color for the most similar data.
- Forecast Data Color (`forcol`): Yellow color for forecasted data.
4. Error Checking:
- The script checks if the reference length is greater than half the training data length, and if the forecast length exceeds the reference length, raising errors if either condition is true.
5. Arrays for Calculation:
- Correlation Array (`c`): Holds the correlation values between the data source (`src`) and historical data points.
- Index Array (`index`): Stores the indices of the historical data for comparison.
6. Forecasting Logic:
- Correlation Calculation: The script calculates the correlation between the historical data (`src`) and the reference data over the given reference length. It then identifies the point in history most similar to the current data.
- Forecast Price Calculation: Based on the type of forecast (Prediction or Replication), the script calculates future prices either by predicting based on similar bars or by replicating past data. The forecasted prices are stored in the `forecastPrices` array.
- Forecast Line Drawing: The script draws lines to represent the forecasted price movements. These lines are color-coded based on whether the forecasted price is higher or lower than the current price.
7. Divergence Cone (Optional):
- If the **divcone** option is enabled, the script calculates and draws a confidence cone around the forecasted prices. The upper and lower bounds of the cone are calculated using a standard deviation factor, providing a visual representation of forecast uncertainty.
8. Probability Table:
- A table is displayed on the chart, showing the probability of the forecast being accurate. This probability is calculated using the correlation between the current data and the most similar historical pattern. If the probability is positive, the table background turns green; if negative, it turns red. The probability is presented as a percentage.
9. Key Functions:
- `highest_range` and `lowest_range`: Functions to find the highest and lowest price within a range of bars.
- `ftype`: Determines the forecast type (Prediction or Replication) and adjusts the forecasting logic accordingly.
- `ftypediff`: Computes the difference between the forecasted and actual prices based on the selected forecast type.
- `ftypelim`, `ftypeleft`, `ftyperight`: Additional functions to adjust the calculation of the forecast based on the forecast type.
10. Conclusion:
The "ForecastPro" script is a unique tool for forecasting future price movements on TradingView. It compares historical price data with similar historical trends to generate predictions. The script also offers a customizable confidence cone and displays the probability of the forecast's accuracy. This tool provides traders with valuable insights into future price action, potentially enhancing decision-making in trading strategies.
---
This script provides advanced functionality for traders who wish to explore price forecasting, and can be customized to fit various trading styles.