Session Open/Close BoxThis Pine Script indicator for TradingView allows you to visualize up to three distinct time-based sessions on your chart. For each active session, it draws a box from the session's open to its close, extending all the way to the right edge of the screen. It also includes a dotted line at the halfway point between the session's open and close. This tool is designed to help traders quickly identify and analyze price action within specific, customizable time windows.
ZAMAN
Pristine Value Areas & MGIThe Pristine Value Areas indicator enables users to perform comprehensive technical analysis through the lens of the market profile in a fraction of the time! 🏆
A Market Profile is a charting technique devised by J. Peter Steidlmayer, a trader at the Chicago Board of Trade (CBOT), in the 1980's. He created it to gain a deeper understanding of market behavior and to analyze the auction process in financial markets. A market profile is used to analyze an auction using price, volume, and time to create a distribution-based view of trading activity. It organizes market data into a bell-curve-like structure, which reveals areas of value, balance, and imbalance.
💠 How is a Value Area Calculated?
A value area is a distribution of 68%-70% of the trading volume over a specific time interval, which represents one standard deviation above and below the point of control, which is the most highly traded level over that period.
The key reference points are as follows:
Value area low (VAL) - The lower boundary of a value area
Value area high (VAH) - The upper boundary of a value area
Point of Control (POC) - The price level at which the highest amount of a trading period's volume occurred
If we take the probability distribution of trading activity and flip it 90 degrees, the result is our Pristine Value Area!
Market Profile is our preferred method of technical analysis at Pristine Capital because it provides an objective and repeatable assessment of whether an asset is being accumulated or distributed by institutional investors. Market Profile levels work remarkably well for identifying areas of interest, because so many institutional trading algorithms have been programmed to use these levels since the 1980's!
The benefits of using Market Profile include better trade location, improved risk management, and enhanced market context. It helps traders differentiate between trending and consolidating markets, identify high-probability trade setups, and adjust their strategies based on whether the market is in balance (consolidation) or imbalance (trending). Unlike traditional indicators that rely on past price movements, Market Profile provides real-time insights into trader behavior, giving an edge to those who can interpret its nuances effectively.
Virgin Point of Control (VPOC) - A point of control from a previous time period that has not yet been revisited in subsequent periods. VPOCs are great for identifying prior supply or demand zones.
Below is a great example of price reversing lower after taking out an upside VPOC
💠 Are all POCs Created Equal?
If POCs are used to gauge supply & demand zones at key levels, then a POC with higher volume should be viewed as more significant than a POC that traded lower volume, right? We created Golden POCs as a tool to identify high volume POCs on all timeframes.
Golden POC (GPOC) - A POC that traded the highest volume compared to prior POCs (proprietary to Pristine Capital)
We calculate value areas for the following time intervals based on the user selected timeframe:
5 Minute and 15 Minute Timeframes -> Daily Value Area
The daily value area paints the distribution of the PRIOR session's trading activity. The "d" in the label references for VAHd, POCd and VALd is a visual cue that value area shown is daily.
1 Hour Timeframe -> Weekly Value Area
The weekly value area paints the distribution of the PRIOR week's trading activity. The "w" in the label references for VAHw, POCw and VALw is a visual cue that value area shown is weekly.
1 Day Timeframe -> Monthly Value Area
The monthly value area paints the distribution of the PRIOR month's trading activity. The "m" in the label references for VAHm, POCm and VALm is a visual cue that value area shown is monthly.
1 Week Timeframe -> Yearly Value Area
The yearly value area paints the distribution of the PRIOR year's trading activity. The "y" in the label references for VAHy, POCy and VALy is a visual cue that value area shown is yearly.
💠 What is a developing value area?
The developing value area provides insight into the upcoming value area while it is still forming! It appears when 80% of the way through the current value area. As the end of a trading period approaches, it can make sense to start trading off the developing value area. When the time period flips, the developing value area becomes the active value area!
💠 Value Areas Trading Setups
Two popular market profile concepts are the bullish and bearish 80% rules. The concept is that there is an 80% probability that the market will traverse the entire relevant value area.
Bullish 80% Rule - If a security opens a period below the value area low , and subsequently closes above it, the bullish 80% rule triggers, turning the value area green. One can trade for a move to the top of the value area, using a close below the value area low as a potential stop!
In the below example, HOOD triggered the bullish 80% rule after it reclaimed the monthly value area!
HOOD proceeded to rally through the monthly value area and beyond in subsequent trading sessions. Finding the first stocks to trigger the bullish 80% rule after a market correction is key for spotting the next market leaders!
Bearish 80% Rule - If a security opens a period above the value area high , and subsequently closes below it, the bearish 80% rule triggers, turning the value area red. One can trade for a move to the bottom of the value area, using a close above the value area high as a potential stop!
ES proceeded to follow through and test the value area low before trending below the weekly value area
Value Area Breakouts - When a security is inside of value, the auction is in balance. When it breaks out from a value area, it could be entering a period of price discovery. One can trade these breaks out of value with tight risk control by setting a stop inside the value area! These breakouts can be traded on all chart timeframes depending on the timeframe of the individual trader. Combining multiple timeframes can result in even more effective trading setups.
RBLX broke out from the monthly value area on 4/22/25👇
RBLX proceeded to rally +62.78% in 39 trading sessions following the monthly VAH breakout!
💠 Market Generated Information to Improve Your Situational Awareness!
In addition to the value areas, we've also included stat tables with useful market generated information. The stats displayed vary based on the timeframe the user has up on their screen. This incentivizes traders to check the chart on multiple timeframes before taking a trade!
Metrics Grouped By Use Case
Performance
▪ YTD α - YTD Alpha (α) measures the risk-adjusted, excess return of a security over its user defined benchmark, on a year-to-date basis.
▪ MTD α - MTD Alpha (α) measures the risk-adjusted, excess return of a security over its user defined benchmark, on a month-to-date basis.
▪ WTD α - WTD Alpha (α) measures the risk-adjusted, excess return of a security over its user defined benchmark, on a week-to-date basis.
▪ YTD %Δ - Year-to-date percent change in price
▪ MTD %Δ - Month-to-date percent change in price
▪ WTD %Δ - Week-to-date percent change in price
Volatility
▪ ATR % - The Average True Range (ATR) expressed as a percentage of an asset's price.
▪ Beta - Measures the price volatility of a security compared to the S&P 500 over the prior 5 years (since inception if 5 years of data is not available)
Risk Analysis
▪ LODx - Low-of-day extension - ATR % multiple from the low of day (measures how extended a stock is from its low of day)
▪ MAx - Moving average extension - ATR % multiple from the user-defined moving average (measures how extended a security is from its moving average). Default moving average = 50D SMA
Why does MAx matter?
MAx measures the number of ATR % multiples a security is trading away from a key moving average. The default moving average length is 50 days.
MAx can be used to identify mean reversion trades . When a security trends strongly in one direction and moves significantly above or below its moving average, the price often tends to revert back toward the average.
Example, if the ATR % of the security is 5%, and the stock is trading 50% higher than the 50D SMA, the MAx would be 50%/5% = 10. A user might opt to take a countertrend trade when the MAx exceeds a predetermined level.
The MAx can also be useful when trading breakouts above or below the key moving average of your choosing. The lower the MAx, the tighter stop loss one can take if trading against that level.
Identifying an extreme price extension using MAx 👇
Price mean reverted immediately following the high MAx 👇
💠 Trend Analysis
The Trend Analysis section consists of short-term and long-term stage analysis data as well as the value area timeframe and price in relation to the value area.
Stage Analysis
▪ ST ⇅ - Short-term stage analysis indicator
▪ LT ⇅ - Long-term stage analysis indicator
Short-term and long-term stage analysis data is provided in the two rightmost columns of each table. The columns are labeled ST ⇅ and LT ⇅.
Why is Stage Analysis important? Popularized by Stan Weinstein, stage analysis is a trend following system that classifies assets into four stages based on price-trend analysis.
The problem? The interpretation of stage analysis is highly subjective. Based on the methodology provided in Stan Weinstein’s books, five different traders could look at the same chart, and come to different conclusions as to which stage the security is in!
We solved for this by creating our own methodology for classifying stocks into stages using moving averages. This indicator automates that analysis, and produces short-term and long-term trend signals based on user-defined key moving averages. You won’t find this in any textbook or course, because it’s completely unique to the Pristine trading methodology.
Our indicator calculates a short-term trend signal using two moving averages; a fast moving average, and a slow moving average. We default to the 10D EMA as the fast moving average & the 20D SMA as the slow moving average. A trend signal is generated based on where price is currently trading with respect to the fast moving average and the slow moving average. We use the signal to guide shorter-term swing trades.
In general, we want to take long trades in stocks with strengthening trends, and short trades in stocks with weakening trends. The user is free to change the moving averages based on their own short-term timeframe. Every trader is unique!
The same process is applied to calculate the long-term trend signal. We default to the 50D SMA as our fast moving average, and the 200D SMA as the slow moving average for the LT ⇅ signal calculation, but users can change these to fit their own unique trading style.
What is Stage 1?
Stage 1 identifies stocks that transitioned from downtrends, into bottoming bases.
Stage 1A - Bottom Signal: Marks the first day a security shows initial signs of recovery after a downtrend, with early indications of strength emerging.👇
Stage 1B - Bottoming Process: Identifies the ongoing phase where the security continues to stabilize and strengthen, confirming the base-building process after the initial signal.👇
Stage 1R - Failed Uptrend: Detects when a security that had entered an early uptrend loses momentum and slips back into a bottoming phase, signaling a failed breakout.👇
What is Stage 2?
Stage 2 identifies stocks that transitioned from bottoming bases to uptrends.
Stage 2A - Breakout: Marks the first day a security decisively breaks out, signaling the start of a new uptrend.👇
Stage 2B - Uptrend: Identifies when the security continues to trade in an established uptrend following the initial breakout, with momentum building but not yet showing full strength.👇
Stage 2C - Strong Uptrend: Detects when the uptrend strengthens further, with the security displaying clear signs of accelerating strength and buying pressure.👇
Stage 2R - Failed Breakdown: Detects when a security that had recently entered a corrective phase reverses course and reclaims its upward trajectory, moving back into an uptrend.👇
What is Stage 3?
Stage 3 identifies stocks that transitioned from uptrends to topping bases.
Stage 3A - Top Signal: Marks the first day a security shows initial signs of weakness after an uptrend, indicating the start of a potential topping phase.👇
Stage 3B - Topping Process: Identifies the period following the initial signal when the security continues to show signs of distribution and potential trend exhaustion.👇
Stage 3R - Failed Breakdown: Detects when a security that had entered a deeper corrective phase reverses upward, recovering enough strength to re-enter the topping phase.👇
What is Stage 4?
Stage 4 identifies stocks that transitioned from topping bases to downtrends.
Stage 4A - Breakdown: Marks the first day a security decisively breaks below key support levels, signaling the start of a new downward trend.👇
Stage 4B - Downtrend: Identifies when the security continues to trend lower following the initial breakdown, with sustained bearish momentum, though not yet fully entrenched.👇
Stage 4C - Strong Downtrend: Detects when the downtrend intensifies, with the security displaying clear signs of accelerating weakness and selling pressure.👇
Stage 4R - Failed Bottom: Detects when a security that had begun to show early signs of bottoming reverses course and resumes its decline, falling back into a downtrend.👇
Stage N/A - Recent IPO: Applies to stocks that recently IPO’ed and don’t have enough data to calculate all necessary moving averages.
Value Area
In Trend Analysis, the value area information is helpful to gauge price in relation to the value area.
▪ VA(y) - Categorizes the security based on the relation of price to the yearly value area
▪ VA(m) - Categorizes the security based on the relation of price to the monthly value area
▪ VA(w) - Categorizes the security based on the relation of price to the weekly value area
Value area states:
▪ ABOVE = Price above the value area high
▪ BELOW = Price below the value area low
▪ INSIDE = Price inside the value area
▪ Bull 80% = Bullish 80% rule in effect
▪ Bear 80% rule = Bearish 80% rule in effect
For example, in the chart above, VA(m) - ABOVE indicates a monthly value area and price is above the VAH.
💠 What Makes This Indicator Unique
There are many value area indicators, however...
Value Area
▪ Golden POC (GPOC) - This is a proprietary concept.
▪ Unique Label Customization
Pristine value areas often comprehensive and unique label customizations. Styles include options to display any combination of the following on your labels:
• Price levels associated with market profile levels
• % distance of market profile levels from security price
• ATR% extension of market profile levels from security price
Multi-Timeframe Analysis
Based on the chart timeframe, unique market generated information is shown to facilitate multi-timeframe analysis.
▪ Weekly Timeframe
On the weekly timeframe the focus is the bigger picture and the metrics reflect this perspective. Performance data includes YTD Alpha and YTD percent change in price. Volatility is measured using ATR % and the industry standard beta. Trend analysis for this higher timeframe include the 52-week range, which measures where a security is trading in relation to its 52wk high and 52wk low. Also included is the where price is in relation to yearly value area.
▪ Daily Timeframe
As one drills down to the daily timeframe, the performance metrics include MTD alpha and MTD percent change in price.
Risk analysis includes the low-of-day extension (LODx), which is the ATR % multiple from the low of the day, to measures how extended a stock is from its low of day. In addition, the moving average extension (MAx) is the ATR % multiple from the user-defined moving average, measures how extended a security is from its
moving average. The default moving average is the 50D SMA, however this can be customized in Settings.
Trend Analysis on the daily timeframe includes the Pristine Capital methodology for classifying stocks into stages using moving averages. Both short-term and long-term stage analysis data is included. Finally, price in relation to monthly value area is shown.
▪ Hourly Timeframe
An the hourly timeframe, performance metrics include WTD alpha and WTD percent change in price. Trend analysis includes the daily closing range (DCR) and price in relation to weekly value area.
💠 Settings and Preferences
💠 Acknowledgements
We'd like to thank @dgtrd, a TradingView Pine Wizard, for his insight on the finer details when working with volume profiles.
Simple Candle Countdown TimerDescription:
This lightweight and customizable TradingView indicator displays a real-time countdown timer for the current candle directly on your chart. The timer updates every second and shows the time remaining until the current candle closes, in the format MM:SS.
🔧 Features:
Adjustable X/Y offset to position the timer anywhere on the chart
Customizable text color, background color, and text size
Clear and minimal design for easy visibility
Ideal for scalpers, intraday traders, or anyone who wants precise awareness of candle close timing.
Time LevelsTime Levels is a customizable TradingView indicator designed to mark critical intraday price levels based on specific time inputs. This tool helps traders identify significant Open/High/Low/Close (OHLC) levels, support & resistance (S&R) zones, and potential Judas Swing manipulation points—aligned with selected timeframes and adjusted to any time zone via UTC offset.
🔧 Key Features:
OHLC/OLHC Levels: Automatically draws horizontal lines at the candle’s open price for up to four specified time points. Ideal for marking session opens, closes, or key intraday levels.
Support & Resistance Zones: Highlights two time-based S&R levels that can help identify discount and premium pricing zones.
Judas Swing Detection: Marks potential liquidity grab zones (Judas Swings) at three user-defined times, assisting in identifying manipulation and smart money entry points.
Global Timezone Support: Includes a UTC offset input to align levels accurately with your trading session, regardless of your location.
Full Customization: Personalize the color, style (solid, dashed, dotted), and thickness of each line independently for OHLC, S&R, and Judas levels.
🛠️ Use Cases:
New York / London open price tracking
ICT-based SMC level marking
Predefined time-based liquidity level visualizations
Institutional-level price reactions (e.g., during specific market opens)
This indicator is best suited for intraday and short-term (especially ICT) traders looking to bring precision and consistency into their technical analysis framework.
Calendar TableThis script displays a calendar-style visual grid directly on the TradingView chart. Unlike fundamental calendars or event indicators, this tool does not mark earnings, news, or economic data. Instead, it provides a simple and clean visual calendar layout for better understanding of date structures across timeframes.
The purpose of this script is purely visual – helping traders and analysts recognize monthly, weekly, and daily boundaries in a calendar format. It’s especially useful for visually aligning price action with time cycles, month-start effects, or periodic strategies.
✅ Key Features
🗓️ Calendar Grid Overlay
Displays calendar-style lines or boxes across candles based on real date logic (year, month, day).
📦 Minimalist Design
Non-intrusive layout that doesn’t interfere with price action or indicators.
⏳ Timeframe-Aware
Adjusts the calendar structure to match the selected chart timeframe.
🎨 Custom Styling Options
Choose line colors, label sizes, and boundary highlights.
⚙️ How to Use
Add the script to your chart.Adjust the visual style and frequency in the settings .
⚠️ Notes
This script does not fetch news, earnings, or events.
It is purely a static calendar layout based on date/time.
No user-defined events, reminders, or alerts are included.
📄 Licensing
This script is Protected Script its only for educational and analytical use.
Velez Price Action Signals (with 20 & 200 SMA)Velez Price Action Signals – With 20 & 200 SMA Overlay
This TradingView Pine Script is a clean and powerful reversal signal tool inspired by Oliver Velez’s price action philosophy, enhanced with trend context via two Simple Moving Averages.
🔍 Signal Logic
Buy Signal:
Current candle sweeps below the previous 5-bar low (liquidity grab).
Candle is bullish (close > open).
The lower wick is significantly larger than the body (e.g. ratio > 1.5).
Sell Signal:
Current candle sweeps above the previous 5-bar high.
Candle is bearish (close < open).
The upper wick is significantly larger than the body.
Signals appear as BUY/SELL labels on the chart (non-repainting).
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.
Time-based LiquidityThis indicator automatically marks important time-based liquidity levels on your chart, helping you stay aware of where major price reactions may occur and the market is forced to show its hand.
Key Features:
Previous Month’s, Week’s, and Day’s Highs and Lows: Displays PMH/PML, PWH/PWL, and PDH/PDL — key reference points where liquidity often accumulates.
Intraday Session Highs and Lows: Divides the trading day into quarters (00:00–06:00, 06:00–12:00, etc. following Day’s Quarterly Theory) and tracks session highs and lows dynamically across these periods.
Current Session 90-Minute Quarters: Splits the active session into 90-minute intervals to highlight short-term liquidity structures and potential reaction zones.
Level Alerts: Tracks when each liquidity level is reached and enables customizable alerts so you don’t miss important price movements.
Use Case:
This tool provides an organized, time-based framework for identifying where liquidity is likely to concentrate across different timeframes and intraday cycles. Use these levels for forming bias, planning entries, exits, or anticipating price reactions at key points in the market structure.
Customization Options:
Enable/disable liquidity levels to display (Daily, Weekly, Monthly, Sessions, Session Quarters)
Customize the appearance of each level (color, style, line width)
Enable or disable tracking and alerts for level interactions
Session Close/OpenThis indicator allows traders to mark and track two custom session times throughout each trading day, with flexible time zone and price source configuration.
Features:
Two configurable timestamps (e.g., session open and close) with adjustable hour and minute inputs.
Choose between multiple time zones: UTC-4 = New York
Mark the price at each selected time using either open, close, high, low, or any other price source.
Tracks and plots both current session and previous session values for each time point.
Visual markers appear as colored circles on the chart for clarity.
Built-in alert conditions when the live price touches either the current or previous session levels.
Use Cases:
- Monitor price reactions at key session opens or closes.
- Set alerts for breakouts or touches at specific time-based levels.
- Combine with other strategies to enhance time-based decision making.
- Perfect for intraday traders who want precise control over session-based reference points.
NY Time Cycles# New York Time Cycles Indicator
## Overview
The Time Cycles indicator is a specialized technical analysis tool designed to divide the trading day into distinct time blocks based on New York trading hours. Developed for TradingView, this indicator helps traders identify and analyze market behavior during specific time periods throughout the trading session. The indicator displays six consecutive time blocks, each representing 90-minute segments of the trading day, while tracking price ranges within each block.
## Core Concept
The Time Cycles indicator is built on the premise that different periods during the trading day often exhibit unique market characteristics and behaviors. By segmenting the trading day into standardized 90-minute blocks, traders can:
1. Identify recurring patterns at specific times of day
2. Compare price action across different time blocks
3. Recognize potential support and resistance levels based on the high and low of previous time blocks
4. Develop time-based trading strategies specific to certain market hours
## Time Block Structure
The indicator divides the trading day into six sequential 90-minute blocks based on New York time:
1. **Box 1**: 07:00 - 08:30 ET
2. **Box 2**: 08:30 - 10:00 ET
3. **Box 3**: 10:00 - 11:30 ET
4. **Box 4**: 11:30 - 13:00 ET
5. **Box 5**: 13:00 - 14:30 ET
6. **Box 6**: 14:30 - 16:00 ET
These time blocks cover the core US trading session from pre-market into regular market hours.
## Visual Representation
Each time block is represented on the chart as a visual box that:
- Spans the exact time period of the block (horizontally)
- Extends from the highest high to the lowest low recorded during that time period (vertically)
- Is displayed with customizable colors and transparency levels
- Automatically builds in real-time as price action develops
Additionally, the indicator draws dashed projection lines that:
- Display the high and low of the most recently completed time block
- Extend forward in time (for up to 24 hours)
- Help traders identify potential support and resistance levels
## Technical Implementation
The indicator employs several key technical features:
1. **Time Detection**: Accurately identifies the current New York time to place each box in the correct time period
2. **Dynamic Box Creation**: Initializes and updates boxes in real-time as price action develops
3. **Range Tracking**: Continuously monitors and adjusts the high and low of each active time block
4. **Projection Lines**: Creates horizontal dashed lines projecting the high and low of the most recently completed time block
5. **Daily Reset**: Automatically resets all boxes and lines at the start of each new trading day
6. **Customization**: Allows users to set custom colors and transparency levels for each time block
This Time Cycles indicator provides traders with a structured framework for analyzing intraday market movements based on specific time periods. By understanding how the market typically behaves during each 90-minute block, traders can develop more targeted strategies and potentially identify higher-probability trading opportunities throughout the trading day.
Delta Zones🔶 Delta Zones — A Precision Tool for Time-Price Mapping 🔶
The Delta Zones indicator is a refined structure-mapping tool that dynamically tracks zones of dominant trading activity across recent sessions.
These zones are projected forward in time, offering traders a reliable visual guide to where significant interactions between buyers and sellers are likely to take place.
This tool was designed for intraday use, but its adaptability makes it powerful even on higher timeframes, giving traders insights into market behavior without the noise. You need to change session setting from indicator to higher TF that the chart. For intra, its by default on daily.
🔧 What This Indicator Does
Detects and displays the key activity zone for the current session (today).
Recalls the most active zone from the previous session, allowing you to track momentum or reversal bias.
Color codes each zone based on where price currently trades relative to it:
Neutral gradient (orange/white) for today’s zone, showing where price is consolidating or reacting.
Bullish green fade if price is trading above yesterday’s zone.
Bearish red fade if price is trading below yesterday’s zone.
Extends each zone forward (default 200 bars) so you can observe price behavior as it revisits these areas over time.
📈 How to Use Delta Zones
Trend Continuation:
If price pushes beyond today's zone and maintains momentum, it may suggest strength in that direction. Watch how price reacts on retests of this zone.
Fade or Mean Reversion:
When price strays far from a Delta Zone and struggles to gain ground, it often rotates back into that region. These situations can offer attractive risk-reward setups.
Zone Polarity from Prior Sessions:
Yesterday’s zone serves as a directional cue — if price opens and stays above it (green-filled), sentiment favors strength. If it stays below (red-filled), weakness may persist.
Support/Resistance Anchors:
Use zones as dynamic S/R levels — watch for wick tests, engulfing candles, or volume surges at zone edges for potential trade entries or exits.
🎛️ Inputs You Can Control
Session Length (Default: Daily): Defines how often a new zone is calculated.
💡 Pro Tip
These zones act like magnetic fields around price — not only can they contain price, but they also attract it. The key is to recognize when price is respecting, rejecting, or absorbing at the edges of the zone.
Pair Delta Zones with your favorite price action, momentum, or volume tools for sharper decision-making. For example, "Accumulation/Distribution Money Flow" script which I published few days ago.
⚠️ Note
This is a conceptually adaptive framework designed to simplify the visual structure of the market. While no model guarantees predictive accuracy, Delta Zones are especially useful for contextualizing price behavior and anticipating where meaningful reactions may occur.
This is an educational idea, use it at your own risk.
Past performance does not guarantee future success.
Zig Zag Trend Metrics“ Zig Zag Trend Metrics ” is a highly versatile indicator, built on the classic Zig Zag concept and thoughtfully designed for technical traders seeking a deeper, more structured view of market dynamics. This tool identifies significant swing highs and lows, classifies them, and annotates each with key metrics, offering a precise snapshot of each movement. It enhances visual analysis by drawing connecting lines that outline the flow of market structure, making trend progression and reversals instantly recognizable. Beyond visual mapping, it features a compact, real-time statistics table that calculates the average price and time deltas for both bullish and bearish swings, giving traders deep insights into trend momentum and rhythm. With extensive customization options, this indicator adapts seamlessly to vast trading styles or chart setups, empowering traders to spot patterns, evaluate trend strength, and make more confident, data-backed decisions.
❖ FEATURES
✦ Automatic Swing Detection
At its core, this indicator automatically identifies swing highs and lows based on a customizable lookback period (default: 10 bars).
✦ Labeling Swing Points
Each swing is visualized with a label that includes:
Swing Classification : “HH” (Higher High), “LH” (Lower High), “LL” (Lower Low), or “HL” (Higher Low).
Price Difference : Displayed in percentage or absolute value from the previous opposite swing.
Time Difference : The number of bars since the previous swing of the opposite type.
These labels offer traders clear, immediate insight into price movements and structural changes.
✦ Visual Lines
The indicator draws three types of lines:
Bullish Lines: Connect recent swing lows to new swing highs, indicating uptrends.
Bearish Lines: Connect recent swing highs to new swing lows, indicating downtrends.
Range Lines: Connect consecutive highs or lows to outline price channels.
Each line type can be color-coded and customized for visibility.
✦ Statistics Table
An on-screen metrics table provides a live summary of trends. Script uses Relative Averaging to smooth price and time changes. This prevents outliers from distorting the data and provides a more reliable sense of typical swing behavior.
Uptrend Metrics: Shows average price and time differences from recent bullish swings.
Downtrend Metrics: Shows the same for bearish swings.
🛠️ Customization Options
Ability to tailor the indicator to suit their strategy and aesthetic preferences:
Swing Period: Adjust sensitivity to short- or long-term swings.
Color Settings: Customize line and label colors.
Label Display: Choose between absolute or percentage price differences.
Table Settings: Modify size, location, or visibility.
This makes the indicator highly flexible and useful across various timeframes and assets.
Personal Time Zone: Days of WeekThis is probably the simplest indicator I have ever made.
It just gives you a the days of weeks in your specified time zone and puts the day on the first bar in your time zone.
You can use UTC time format or named time zones like the default.
Just for fun I tried to give it symbols that sort of relate the old gods that the days of week were named after and even colors that one could argue match, but it was all in fun because it was so simple I felt I had to add something.
Enjoy.
All-Time High MarkerThis indicator automatically identifies and displays the All-Time High (ATH) price on a chart. When a new ATH is reached, a horizontal line is drawn, extending from a user-specified number of bars to the left of the ATH candle to the current bar, and continuing indefinitely to the right. An "ATH" label is placed at the beginning of the line. Key features:
Dynamic ATH Tracking: Automatically updates as new all-time highs are reached.
Customizable Line: Adjust the line color and width to match your chart theme.
Customizable Label: Change the label color, text color, and vertical offset.
Line Start Offset: Control how far back the ATH line starts from the ATH candle.
This tool helps traders quickly visualize and track ATH levels for potential breakouts or resistance zones.
Daily Time MarkerThis TradingView indicator draws thin, white, dashed vertical lines on the chart at a user-defined time each day. The indicator takes into account Daylight Saving Time (DST) adjustments, ensuring the correct time is displayed throughout the year.
Key Features:
✅ Daily Vertical Markers:
Displays vertical dashed lines from Monday to Friday at the selected time.
The lines extend infinitely in both directions.
✅ Historical & Future Projection:
Shows lines 15 days into the past and 5 days into the future for better visualization of key time levels.
✅ DST Adjustment:
Automatically adjusts between summer and winter time , ensuring the correct hour is displayed.
This indicator is useful for traders who rely on specific time-based events, such as market opens or key trading sessions.
Quarterly Theory ICT 02 [TradingFinder] True Open Session 90 Min🔵 Introduction
The Quarterly Theory ICT indicator is an advanced analytical system built on ICT (Inner Circle Trader) concepts and fractal time. It divides time into four quarters (Q1, Q2, Q3, Q4), and is designed based on the consistent repetition of these phases across all trading timeframes (annual, monthly, weekly, daily, and even shorter trading sessions).
Each cycle consists of four distinct phases: the first phase (Q1) is the Accumulation phase, characterized by price consolidation; the second phase (Q2), known as Manipulation or Judas Swing, is marked by initial false movements indicating a potential shift; the third phase (Q3) is Distribution, where price volatility peaks; and the fourth phase (Q4) is Continuation/Reversal, determining whether the previous trend continues or reverses.
🔵 How to Use
The central concept of this strategy is the "True Open," which refers to the actual starting point of each time cycle. The True Open is typically defined at the beginning of the second phase (Q2) of each cycle. Prices trading above or below the True Open serve as a benchmark for predicting the market's potential direction and guiding trading decisions.
The practical application of the Quarterly Theory strategy relies on accurately identifying True Open points across various timeframes.
True Open points are defined as follows :
Yearly Cycle :
Q1: January, February, March
Q2: April, May, June (True Open: April Monthly Open)
Q3: July, August, September
Q4: October, November, December
Monthly Cycle :
Q1: First Monday of the month
Q2: Second Monday of the month (True Open: Daily Candle Open price on the second Monday)
Q3: Third Monday of the month
Q4: Fourth Monday of the month
Weekly Cycle :
Q1: Monday
Q2: Tuesday (True Open: Daily Candle Open Price on Tuesday)
Q3: Wednesday
Q4: Thursday
Daily Cycle :
Q1: 18:00 - 00:00 (Asian session)
Q2: 00:00 - 06:00 (True Open: Start of London Session)
Q3: 06:00 - 12:00 (NY AM)
Q4: 12:00 - 18:00 (NY PM)
90 Min Asian Session :
Q1: 18:00 - 19:30
Q2: 19:30 - 21:00 (True Open at 19:30)
Q3: 21:00 - 22:30
Q4: 22:30 - 00:00
90 Min London Session :
Q1: 00:00 - 01:30
Q2: 01:30 - 03:00 (True Open at 01:30)
Q3: 03:00 - 04:30
Q4: 04:30 - 06:00
90 Min New York AM Session :
Q1: 06:00 - 07:30
Q2: 07:30 - 09:00 (True Open at 07:30)
Q3: 09:00 - 10:30
Q4: 10:30 - 12:00
90 Min New York PM Session :
Q1: 12:00 - 13:30
Q2: 13:30 - 15:00 (True Open at 13:30)
Q3: 15:00 - 16:30
Q4: 16:30 - 18:00
Micro Cycle (22.5-Minute Quarters) : Each 90-minute quarter is further divided into four 22.5-minute sub-segments (Micro Sessions).
True Opens in these sessions are defined as follows :
Asian Micro Session :
True Session Open : 19:30 - 19:52:30
London Micro Session :
T rue Session Open : 01:30 - 01:52:30
New York AM Micro Session :
True Session Open : 07:30 - 07:52:30
New York PM Micro Session :
True Session Open : 13:30 - 13:52:30
By accurately identifying these True Open points across various timeframes, traders can effectively forecast the market direction, analyze price movements in detail, and optimize their trading positions. Prices trading above or below these key levels serve as critical benchmarks for determining market direction and making informed trading decisions.
🔵 Setting
Show True Range : Enable or disable the display of the True Range on the chart, including the option to customize the color.
Extend True Range Line : Choose how to extend the True Range line on the chart, with the following options:
None: No line extension
Right: Extend the line to the right
Left: Extend the line to the left
Both: Extend the line in both directions (left and right)
Show Table : Determines whether the table—which summarizes the phases (Q1 to Q4)—is displayed.
Show More Info : Adds additional details to the table, such as the name of the phase (Accumulation, Manipulation, Distribution, or Continuation/Reversal) or further specifics about each cycle.
🔵 Conclusion
The Quarterly Theory ICT, by dividing time into four distinct quarters (Q1, Q2, Q3, and Q4) and emphasizing the concept of the True Open, provides a structured and repeatable framework for analyzing price action across multiple time frames.
The consistent repetition of phases—Accumulation, Manipulation (Judas Swing), Distribution, and Continuation/Reversal—allows traders to effectively identify recurring price patterns and critical market turning points. Utilizing the True Open as a benchmark, traders can more accurately determine potential directional bias, optimize trade entries and exits, and manage risk effectively.
By incorporating principles of ICT (Inner Circle Trader) and fractal time, this strategy enhances market forecasting accuracy across annual, monthly, weekly, daily, and shorter trading sessions. This systematic approach helps traders gain deeper insight into market structure and confidently execute informed trading decisions.
Quarterly Theory ICT 01 [TradingFinder] XAMD + Q1-Q4 Sessions🔵 Introduction
The Quarterly Theory ICT indicator is an advanced analytical system based on the concepts of ICT (Inner Circle Trader) and fractal time. It divides time into quarterly periods and accurately determines entry and exit points for trades by using the True Open as the starting point of each cycle. This system is applicable across various time frames including annual, monthly, weekly, daily, and even 90-minute sessions.
Time is divided into four quarters: in the first quarter (Q1), which is dedicated to the Accumulation phase, the market is in a consolidation state, laying the groundwork for a new trend; in the second quarter (Q2), allocated to the Manipulation phase (also known as Judas Swing), sudden price changes and false moves occur, marking the true starting point of a trend change; the third quarter (Q3) is dedicated to the Distribution phase, during which prices are broadly distributed and price volatility peaks; and the fourth quarter (Q4), corresponding to the Continuation/Reversal phase, either continues or reverses the previous trend.
By leveraging smart algorithms and technical analysis, this system identifies optimal price patterns and trading positions through the precise detection of stop-run and liquidity zones.
With the division of time into Q1 through Q4 and by incorporating key terms such as Quarterly Theory ICT, True Open, Accumulation, Manipulation (Judas Swing), Distribution, Continuation/Reversal, ICT, fractal time, smart algorithms, technical analysis, price patterns, trading positions, stop-run, and liquidity, this system enables traders to identify market trends and make informed trading decisions using real data and precise analysis.
♦ Important Note :
This indicator and the "Quarterly Theory ICT" concept have been developed based on material published in primary sources, notably the articles on Daye( traderdaye ) and Joshuuu . All copyright rights are reserved.
🔵 How to Use
The Quarterly Theory ICT strategy is built on dividing time into four distinct periods across various time frames such as annual, monthly, weekly, daily, and even 90-minute sessions. In this approach, time is segmented into four quarters, during which the phases of Accumulation, Manipulation (Judas Swing), Distribution, and Continuation/Reversal appear in a systematic and recurring manner.
The first segment (Q1) functions as the Accumulation phase, where the market consolidates and lays the foundation for future movement; the second segment (Q2) represents the Manipulation phase, during which prices experience sudden initial changes, and with the aid of the True Open concept, the real starting point of the market’s movement is determined; in the third segment (Q3), the Distribution phase takes place, where prices are widely dispersed and price volatility reaches its peak; and finally, the fourth segment (Q4) is recognized as the Continuation/Reversal phase, in which the previous trend either continues or reverses.
This strategy, by harnessing the concepts of fractal time and smart algorithms, enables precise analysis of price patterns across multiple time frames and, through the identification of key points such as stop-run and liquidity zones, assists traders in optimizing their trading positions. Utilizing real market data and dividing time into Q1 through Q4 allows for a comprehensive and multi-level technical analysis in which optimal entry and exit points are identified by comparing prices to the True Open.
Thus, by focusing on keywords like Quarterly Theory ICT, True Open, Accumulation, Manipulation, Distribution, Continuation/Reversal, ICT, fractal time, smart algorithms, technical analysis, price patterns, trading positions, stop-run, and liquidity, the Quarterly Theory ICT strategy acts as a coherent framework for predicting market trends and developing trading strategies.
🔵b]Settings
Cycle Display Mode: Determines whether the cycle is displayed on the chart or on the indicator panel.
Show Cycle: Enables or disables the display of the ranges corresponding to each quarter within the micro cycles (e.g., Q1/1, Q1/2, Q1/3, Q1/4, etc.).
Show Cycle Label: Toggles the display of textual labels for identifying the micro cycle phases (for example, Q1/1 or Q2/2).
Table Display Mode: Enables or disables the ability to display cycle information in a tabular format.
Show Table: Determines whether the table—which summarizes the phases (Q1 to Q4)—is displayed.
Show More Info: Adds additional details to the table, such as the name of the phase (Accumulation, Manipulation, Distribution, or Continuation/Reversal) or further specifics about each cycle.
🔵 Conclusion
Quarterly Theory ICT provides a fractal and recurring approach to analyzing price behavior by dividing time into four quarters (Q1, Q2, Q3, and Q4) and defining the True Open at the beginning of the second phase.
The Accumulation, Manipulation (Judas Swing), Distribution, and Continuation/Reversal phases repeat in each cycle, allowing traders to identify price patterns with greater precision across annual, monthly, weekly, daily, and even micro-level time frames.
Focusing on the True Open as the primary reference point enables faster recognition of potential trend changes and facilitates optimal management of trading positions. In summary, this strategy, based on ICT principles and fractal time concepts, offers a powerful framework for predicting future market movements, identifying optimal entry and exit points, and managing risk in various trading conditions.
ICT SB Time (Lee B)A minimal and clean indicator that simply plots the ICT Silver Bullet time windows for you on the chart with vertical lines.
It also has the option to show other important times, like 00:00, 8:30, and 9:30. Toggles in settings let you change line color, turn any of them off temporarily, and can limit their visibility to only the lower timeframes for less clutter.
I hope you find this indicator useful... and happy trading!
Lee B
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").
Price and Longitude Angles Planetary Price & Longitude Angles Indicator
This indicator plots planetary price and longitude angles starting from a user-selected date and time, offering a distinctive lens to explore the relationship between price and planetary timing. It supports both heliocentric and geocentric, enabling flexible and in-depth planetary analysis. The angles can be plotted across any time frame for maximum versatility.
How to Use
Once the indicator is loaded, you’ll be prompted to select a starting date and time for your analysis. From there, customize it as follows:
Select Planetary Options:
To plot the price and longitude for a single planet, choose the same planet in both dropdown menus.
To plot the average of two planets, select a different planet in each dropdown.
Set the Price Per Degree of Longitude: Adjust this value to define the scaling of the planetary angles relative to price.
Customize Fan Settings:
Toggle the mirroring of the fan on or off based on your needs.
Show or hide specific angle divisions to tailor the display to your preferences.
Display or conceal the information label that indicates the price per longitude and the number of degrees traveled.
This indicator is inspired by the methodologies of W.D. Gann and Patrick Mikula, expanding on concepts from Gann Scientific Method Unveiled, Volume 2. It was built using Astrolib by @BarefootJoey
I crafted this tool through dedication to support my own study of these ideas. I’m sharing it open-source not only to deepen my understanding and honor the work of Gann and Mikula, but also to invite collaboration. There’s always room for improvement—whether in functionality, accuracy, or design—and I hope others will join me in refining it. This is for those like me: eager to explore these concepts but lacking tools to experiment with. Let’s build on it together.
Time-based Alerts for Trading Windows🌟 Time-based Alerts for Trading Windows 🌐📈
This is a re-uploaded script as the previous one got hidden.
This Time-based Alerts for Trading Windows script is a highly customizable and reliable tool designed to assist traders in managing automated strategies or manually monitoring specific market conditions. Inspired by CrossTrade's Time-based Alert, this script is tailored for those who rely on precise time windows to trigger actions, such as sending webhook signals or managing Expert Advisors (EAs).
Whether you are a scalper, day trader, or algorithmic trader, this script empowers you to stay on top of your trades with fully customizable time-based alerts.
🛠️ Customizable Time Alerts
This indicator allows you to create up to 12 unique time windows by specifying the exact hour and minute for each alert. Each time window corresponds to an individual alert condition, making it perfect for managing trades during specific market sessions or key time periods.
For example:
Alert 1 can be set at 9:30 AM (market open).
Alert 2 can be set at 3:55 PM (just before market close).
Each alert can be toggled on or off in the indicator settings, allowing you to manage alerts without having to reconfigure your script.
You can adjust the colours to fit any colour scheme you like!
🕒 Odd and Even Time Alerts
The script comes with three built-in alert type categories:
Odd Alerts (marked with a green triangle on the chart): These correspond to odd-numbered inputs like Alert 1, Alert 3, Alert 5, and so on.
Even Alerts (marked with a red triangle on the chart): These correspond to even-numbered inputs like Alert 2, Alert 4, Alert 6, and so on.
You can also customize all 12 alerts individually to include a custom alert message
These alerts serve as a convenient way to differentiate between multiple trading strategies or market conditions. You can customize alert messages for odd and even alerts directly from TradingView’s alert panel.
🔗 Webhook Integration for Automation
This script is fully compatible with webhook-based automation. By configuring your alerts in TradingView, you can send signals to trading bots, EAs, or any third-party system. For example, you can:
Turn off an EA at a specific time (e.g., 3:55 PM EST).
Send buy/sell signals to your bot during predefined trading windows.
Simply use TradingView’s alert message editor to format webhook payloads for your automation system.
🌐 Timezone Flexibility
Trading happens across multiple time zones, and this script accounts for that. You can toggle between:
Eastern Time (New York): Ideal for most US-based markets.
Central Time (Exchange): Useful for futures and commodities traders.
This ensures your alerts are always in sync with your preferred time zone, eliminating confusion.
🎨 Visual Indicators
The script plots visual markers directly on your chart to indicate active alerts:
Up Facing Triangles: Represent odd-numbered alerts, providing a quick reference for these time windows.
Down Facing Triangles: Represent even-numbered alerts, helping you track different strategies or conditions.
These visual markers make it easy to see when alerts are triggered, even at a glance.
📈 Practical Use Case
Let’s say you’re trading the USTEC index on a 1-minute chart. You want to:
Turn off your trading bot at 16:55 EST to avoid after-market volatility.
Trigger a re-entry signal at 17:30 EST to capture moves during the Asian session.
Visually monitor these actions on your chart for easy reference.
This script makes it possible with precision alerts and webhook integration. Simply configure the time windows in the settings and set up your alerts in TradingView.
🚨 How to Set Up Alerts
Enable or Disable Alerts: Use the script’s settings to toggle specific alerts on or off as needed.
Set Custom Time Windows: Define the hour and minute for each alert in the settings panel.
Create Alerts in TradingView:
Go to the TradingView alert panel.
Select the condition (e.g., "Odd Time-based Alert (Green)" or "Even Time-based Alert (Red)").
Customize the alert message for webhook integration or personal notification.
Choose the trigger type: Once Per Bar or Once Per Bar Close to keep the alert active.
Integrate with Webhooks: Use the alert message field to format payloads for automation systems like MT4, MT5, or third-party bots.
📋 Key Notes
Alerts can trigger indefinitely if set to "Once Per Bar" or "Once Per Bar Close".
Always ensure the expiration date is set far in the future to avoid unexpected alert deactivation.
Test webhook messages and alert configurations thoroughly before using them in live trading.
This script is a powerful addition to your trading toolbox, offering precision, flexibility, and automation capabilities. Whether you’re turning off an EA, managing trades during market sessions, or automating strategies via webhooks, this script is here to support you.
Start using the Time-based Alerts for Trading Windows today and trade with confidence! 🚀✨
Range Chart Time Analyzer by Shresht
DISCLAIMER :
This indicator is provided for informational and educational purposes only. It is not intended as financial, investment, or trading advice. The calculations and data presented by this indicator are based on available historical information and predefined logic, which may not always reflect real-time market conditions accurately.
I do not guarantee the accuracy, reliability, or completeness of the values displayed by this indicator. Users should independently verify any data before making trading decisions. I am not responsible or liable for any losses, damages, or financial consequences resulting from the use of this indicator.
By using this indicator, you acknowledge and accept full responsibility for any actions taken based on its output. Always conduct your own research and consult with a qualified financial professional before making any investment or trading decisions.
Range-Chart Time Analyzer
Make your Range Chart Complete
Overview:
This indicator is specifically designed for Range Charts. Unlike traditional charts, Range Charts plot bars at varying time intervals. This indicator helps visualize these "time warps" by calculating the difference between the opening time of the current bar and the opening time of the previous bar, along with their averages. Additionally, it offers optional settings to display Green-only, Red-only, or Green vs. Red averages .
Time Unit:
This indicator uses seconds as the unit of measurement for time
Logic: At its core, it relies solely on the opening time of each candle. The averages are calculated based on the time difference between consecutive pair of bars. For example, with a length of 3, the average is computed as:
/ 2
Features :
~Three Averages
~Green Candle only Average , Red Candle only Average and Green vs Red Average ( Green only Average minus Red only Average )
Inputs/Settings :
~Reference Bar: When the indicator is first added to the chart, it will prompt you to select a Reference Bar. This selection can be changed later without reapplying the indicator by either specifying the timestamp in the settings or adjusting the slider that appears above the red "R" label when hovering over it. The Reference Bar allows you to calculate an average starting from a specific point in time, such as the beginning of a trading session or a significant event like a news release or an announcement.
~Session Breaker: This feature ensures that averages are not skewed by the large time gap between trading sessions, i.e., the last candle of the previous session and the first candle of the current session. It is measured in seconds, as mentioned earlier. Set it to a large number of seconds, but ensure that it is less than the actual time gap between sessions.
~ Length and Length 2: The default Length is set to 2, allowing you to see individual differences. It is important to understand the following: WHEN LENGTH IS 2, THE AVERAGE DISPLAYED BELOW A CANDLE REPRESENTS THE DIFFERENCE BETWEEN THE PREVIOUS CANDLE'S OPEN TIME AND THE CURRENT/LATEST CANDLE'S OPEN TIME. BECAUSE, IN RANGE CHARTS, THE CLOSE OF THE PREVIOUS CANDLE AND THE OPEN OF THE CURRENT CANDLE ARE THE SAME, THIS MAY RESULT IN A RED-COLORED COLUMN APPEARING BELOW A GREEN CANDLE IF THE PREVIOUS CANDLE WAS RED. HOWEVER, THIS DOES NOT AFFECT THE ACCURACY OF THE RED ONLY OR GREEN ONLY AVERAGES. THIS INDICATOR IS ALWAYS "ONE CANDLE AHEAD" IN ITS PLOTTING.
Length 2 is used to calculate a third, larger average with a custom length of your choice.
~ Length for Green Only Average and Length for Red Only Average: These inputs define the lookback period for calculating the average of a specific candle color. A crucial point to remember is that when displaying the Green vs Red Average, both these inputs must be set to the same value to ensure an accurate comparison .
DISCLAIMER :
This indicator is provided for informational and educational purposes only. It is not intended as financial, investment, or trading advice. The calculations and data presented by this indicator are based on available historical information and predefined logic, which may not always reflect real-time market conditions accurately.
I do not guarantee the accuracy, reliability, or completeness of the values displayed by this indicator. Users should independently verify any data before making trading decisions. I am not responsible or liable for any losses, damages, or financial consequences resulting from the use of this indicator.
By using this indicator, you acknowledge and accept full responsibility for any actions taken based on its output. Always conduct your own research and consult with a qualified financial professional before making any investment or trading decisions.