Time zoneI wrote a small indicator for myself that draws time zones and it is convenient to edit them through the settings.
I've tried a lot that I didn't find inconvenient or overloaded.
Opportunities:
1 - Allocation of a time range, the one that is convenient for you in terms of currency volatility.
2 - Adjusting the color of the periods.
3 - Display in the upper right corner of the time until the close of trading according to your timings.
Maybe it will be convenient for someone, use it, share it. Over time, I will add functionality here that will improve the convenience.
--------
Написал небольшой индикатор для себя, который отрисовывает временные зоны и их удобно править через настройки.
Перепробовал множество, которые мне не показались не удобными и перегруженными.
Возможности:
1 - Выделение временного диапазона, того, который вам удобен по волатильности валют.
2 - Корректировка цвета периодов.
3 - Отображение в правом верхнем углу времени до закрытия торгов по вашим таймингам.
Может кому то будет удобно, пользуйтесь, делитесь. Со временем добавлю сюда функционала, который будет улучшать удобство. Indicator

Pythagorean Time Price Geometry Ver 1.0Pythagorean Time Price Geometry — Ver 1.0
By Timepricedecoder
Overview
This indicator applies W.D. Gann's Time = Price principle using Pythagorean geometry to project natural time cycles and price grid levels directly on the chart.
Gann believed that financial markets move in geometric harmony — that price and time are not independent variables, but two sides of the same equation. When they balance, the market reaches a natural turning point.
This script operationalises that idea using the Pythagorean theorem — the ancient mathematical relationship where in a right-angled triangle, the square of the hypotenuse equals the sum of squares of the other two sides (a² + b² = c²). In market terms:
Side A (time) — the number of bars in the anchor swing
Side B (price) — the range of the anchor swing (High − Low)
Side C (hypotenuse) — the natural cycle projection derived from both
By selecting a Pythagorean Triple (sets of whole numbers satisfying a² + b² = c², such as 3-4-5, 5-12-13, 8-15-17), the script scales the time-price relationship into a precise geometric ratio. This ratio then defines the grid cell size, the cycle length, and the angle of the diagonal — all derived from a single anchor swing.
The result is a self-organising grid that maps where price should find support or resistance, and when time cycles are due to complete — giving the trader a structured, geometry-based framework rather than arbitrary indicator levels.
When time and price arrive at the same Pythagorean node simultaneously — the market is squaring — and that is where the highest-probability signals are generated.
Core Concepts
Time = Price Squaring
Price range and time duration are treated as the two legs of a right triangle. When they balance — the market is at a Square — reversals or accelerations are most likely.
Pythagorean Nodes
From the anchor swing (High → Low or Low → High), the script calculates:
Sq — Square of the swing (time leg = price leg). Highest grade signal
Hyp — Hypotenuse projection. Major cycle marker
½Hyp — Half Hypotenuse. Minor cycle node
½Sq — Early warning zone
These project forward as repeating time cycles across the chart.
Harmonic Grid
Price is divided into cells derived from the Pythagorean triple ratio (B/A × Range). The grid repeats both in time (columns) and price (rows), creating a natural map of support, resistance, and time confluence.
Signal Tiers
🟨 BUY/SELL-Sq — Time node + Price grid level align. Strongest signal
🟩 BUY/SELL-T — Time node only. Moderate signal
⬜ BUY/SELL-P — Price grid level only. Weakest, disabled by default
Confluence Zones ⚡
⚡ — Quarter cycle node
⚡⚡ — Half cycle node
⚡⚡⚡ — Full cycle node (highest confluence)
Recommended Settings
StyleGann NumberDivisorTripleSwing WidthScalping221/44-3-5NarrowShort Term441/24-3-5NormalMedium Term881/23-4-5NormalLong Term176Full3-4-5Wide
InstrumentType SettingNotesOptionsOptionsGrid origin auto-adjustedIndicesIndicesUse 88, 1/2 divisorStocksStocksUse Adaptive stabilityFuturesFuturesUse 44 or 88
Grid Stability
Strict — Anchors rarely shift. Best for trending markets
Adaptive — Default. Balances stability and responsiveness
Relaxed — Reanchors more freely. Best for ranging markets
How To Use
Let the script auto-detect the swing anchor (or set manually)
Watch for Sq labels on vertical cycle lines — these are key dates
Enter on BUY-Sq / SELL-Sq signals with candle confirmation
Use ⚡⚡⚡ confluence zones as high-alert turning point windows
The active zone box shows current grid cell position (Upper = bullish bias, Lower = bearish bias)
Disclaimer
This script is published for educational purposes only. It does not constitute financial advice. Past signal accuracy does not guarantee future results. The swing detection uses Daily OHLC data with lookahead enabled — results may differ slightly on live bars versus historical bars. Always use proper risk management. Trade at your own risk. Indicator

Indicator

Indicator

Time Stop Planner [AGPro Series]Time Stop Planner
🧠 Core Idea
Has a setup spent too much time without enough progress?
📌 Overview / What it does
Time Stop Planner is a chart-first trade management overlay designed to evaluate the lifecycle of a triggered setup after price breaks from a prior structure. Instead of showing another generic signal, it asks whether the setup is actually making enough progress before the time window starts working against it.
The script builds a forward lifecycle box, maps a trigger reference, an invalidation rail, and a progress target reference, then scores the active setup from 0 to 100 using elapsed bars, distance traveled, follow-through quality, volatility decay, and invalidation proximity.
It does not predict future price movement, automate trade decisions, or promise that a setup will continue. Its purpose is to turn time, progress, and risk context into a cleaner visual decision framework.
🎯 Purpose & Design Philosophy
This script was built for traders who already have a setup idea but need a cleaner way to judge whether that setup is still alive, losing quality, or becoming stale.
Many tools focus on entries or targets. Time Stop Planner focuses on the often-overlooked middle stage: what happens after a setup activates but before the outcome is clear. It supports a disciplined review process by showing whether progress is keeping pace with elapsed time.
The design philosophy is simple: a setup should not remain interesting forever just because it once looked valid. The chart should make lifecycle quality visible.
⚡ Why This Script Is Different
Most tools focus on trigger signals, stop levels, or target projections.
This script does NOT behave like a generic timer dashboard, a stop-loss optimizer, a full position planner, or a profit-target ladder.
Instead, it connects time directly to progress quality. A setup is evaluated through a visible lifecycle window, a progress score, time-risk pressure, invalidation context, and a clear next-action state.
⚙️ Methodology
1. Context Detection
The script detects a directional setup lifecycle when price breaks beyond a prior structure boundary with sufficient candle body strength, close location quality, and optional trend support.
2. Reference Mapping
After activation, the script maps the trigger reference, invalidation rail, and ATR-based progress target reference. These levels create the lifecycle framework used for progress and risk evaluation.
3. Reaction Evaluation
The engine measures elapsed bars, directional travel, close-based follow-through, volatility behavior, and distance from invalidation. These components are converted into a 0-100 quality score and a separate time-risk reading.
4. Visual Output
The chart displays a lifecycle box, rails, checkpoint labels, state labels, and a compact AGPro panel. The active box text is centered inside the lifecycle area for clean chart reading.
🗺️ How to Read the Chart
Zones = the lifecycle box shows the active time window in which the setup should show reasonable progress.
Rails = the trigger reference, progress target reference, and invalidation rail define the active setup map.
Labels = setup, checkpoint, continue, time-risk, expired, and invalidated labels mark important lifecycle events.
Colors = green/teal suggests constructive progress, amber suggests time-risk or expiry pressure, pink suggests invalidation or failed lifecycle context, and indigo marks neutral active structure.
Panel = the panel summarizes Bars Active, Progress Score, Time Risk, Invalidation, and Action.
🚦 Signals & States
• New Time Stop Lifecycle → a new setup lifecycle window has been detected.
• Continue Review → progress and quality are strong enough to keep the lifecycle under constructive review.
• Time Risk → elapsed time is high relative to progress, so the setup deserves closer review.
• Lifecycle Expired → the active lifecycle reached its time boundary without enough progress.
• Lifecycle Invalidated → price closed beyond the invalidation rail.
🔔 Alerts Logic
The script includes alerts for:
• New Time Stop Lifecycle
• Continue Review State
• Time Risk State
• Lifecycle Expired
• Lifecycle Invalidated
These alerts are attention markers. They are not trade instructions, automated orders, or guaranteed outcome signals.
🧩 Confluence Logic
The strongest lifecycle context appears when structure break quality, candle body strength, close location, trend support, progress travel, and invalidation distance align.
When progress improves while time-risk stays low, the active lifecycle becomes more constructive. When elapsed bars increase while progress remains weak, the setup becomes more vulnerable to time-stop review.
📊 When to Use
• After a clean structure break
• During breakout follow-through review
• During trend continuation management
• When a setup is active but progress is unclear
• When you want a rule-based way to identify stale setups
⚠️ When NOT to Use
• Extremely low-liquidity symbols
• Very noisy markets with repeated false breaks
• News-driven spikes where ATR behavior becomes distorted
• Markets where structure boundaries are not meaningful
• As a standalone entry or exit system
🎛️ Key Inputs
• Sensitivity → controls how strict the setup activation logic is.
• Structure Lookback → defines the prior boundary used for lifecycle activation.
• Lifecycle Window Bars → sets how long a setup can remain active before time-risk becomes dominant.
• Minimum Progress % → defines how much progress is expected before expiry pressure matters.
• Progress Target ATR → sets the ATR-based progress reference.
• Invalidation Buffer ATR → controls the distance of the invalidation rail.
• Label Font Size and Panel Font Size → control visual readability.
• Panel Location and Panel Theme → customize the AGPro summary panel.
🖥️ Interface & Visual Design
The interface is built around a clean chart-first workflow. The lifecycle box is the primary visual object, and its centered text summarizes the active state without requiring extra dashboard interpretation.
The panel is compact and uses the AGPro standard first row: one merged blue header row containing only the panel title. The remaining rows focus on time, progress, risk, invalidation, and the next review state.
Labels are limited by cooldown and max-visible controls so the chart remains informative without becoming crowded.
🧪 Practical Usage Workflow
1. Read the panel to identify the current lifecycle state.
2. Check the lifecycle box and rails to understand the active structure.
3. Compare Bars Active with Progress Score.
4. Watch whether Time Risk rises before meaningful progress appears.
5. Use invalidation context to decide whether the setup is still structurally relevant.
🔍 Interpretation Guidelines
A high score does not mean price must continue. It means the active lifecycle is progressing well under the script's rules.
A high time-risk reading does not mean price must reverse. It means time is becoming less favorable relative to progress.
An expired lifecycle does not judge the broader market. It only says the active setup window did not produce enough progress within the configured time boundary.
🚫 What This Script Is NOT
• Not a prediction engine
• Not financial advice
• Not auto trading
• Not guaranteed signals
• Not a stop-loss optimizer
• Not a full position planner
• Not a profit-target promise tool
⚠️ Limitations & Transparency
The script uses rule-based structure detection and ATR-based references, so results can vary across symbols, sessions, and timeframes.
Confirmed lifecycle states depend on the selected lookback, sensitivity, ATR settings, and volatility conditions.
During sideways chop, repeated structure breaks may produce lifecycles that expire quickly. During extreme volatility, time and progress readings may change rapidly.
🧠 Market Context Notes
Time is part of risk. A setup that does not progress can become less useful even if it has not technically invalidated.
This script is designed to make that time component visible without turning it into a direct trade command.
🧾 Use Case Examples
When price breaks above a prior structure and the lifecycle box appears, the trader can watch whether progress develops before the time window matures.
When progress remains weak and the Time Risk state appears, the trader can reassess whether the original setup idea still deserves attention.
When price closes beyond the invalidation rail, the lifecycle is marked invalidated and the context resets.
🧱 System Philosophy
Time Stop Planner belongs to the AGPro decision-engine style: it does not simply show data. It organizes setup validity, progress quality, risk context, and next-action state into one readable workflow.
🔐 Non-Promise Statement
This script does not provide certainty.
It does not guarantee continuation, reversal, profit, or protection from loss.
📉 Risk Disclosure
Trading involves risk.
All outputs from this script are educational and analytical only.
Users remain responsible for their own decisions, risk management, and market interpretation.
This script does not provide financial advice.
📚 Educational Note
Use the script as a structured way to study time, progress, and invalidation behavior after a setup activates. The value is in consistent interpretation, not in treating any state as a command.
Indicator

Regime Transition Intelligence [AGPro Series]Regime Transition Intelligence
Most regime scripts answer a single question: "what regime are we in right now?". Regime Transition Intelligence is designed to answer a different, more actionable set of questions: how long does this regime usually last, how close to its typical end is it, how likely is it to flip within the next N bars, and where does it historically go when it does flip. Instead of treating the current regime as a standalone snapshot, it builds a living, self-calibrating statistical profile of the symbol's own regime behavior and presents it in a compact on-chart dashboard.
The engine runs on three independent axes — Trend Strength (Kaufman Efficiency Ratio + ADX), Chop Risk (Choppiness Index + inverse trend), and Volatility (ATR% normalized over a user-defined lookback). Each axis is classified as LOW / MID / HIGH, either with fixed 33/67 thresholds or with an adaptive percentile rank engine that learns the symbol's own statistical envelope over a rolling window. The three axes are then combined into a discrete regime state: TREND, MIXED, or RANGE / CHOP.
🟦 Overview / What it does
Regime Transition Intelligence is a single-pane overlay indicator that continuously classifies the market into one of three regimes and then layers a full transition intelligence stack on top of that classification:
- A per-regime dwell-time distribution learned from the chart's own completed regime blocks
- A Bayesian-style flip probability that answers "how likely is a regime change within the next N bars, given the current age"
- A 3x3 transition matrix that ranks the most likely next regime with a secondary fallback
- A fatigue score comparing the current regime's age to its historical mean (FRESH / MATURE / EXTENDED)
- A confidence decay tracker that shows whether conviction is BUILDING, STABLE, or FADING within the current regime block
- A compact history ribbon showing the last completed regime blocks with their durations
- Higher-timeframe alignment with a SYNC / DIV indicator and a live beacon at the right edge of the chart
All of this is delivered inside a single configurable dashboard, a directional transition marker layer on the chart, optional regime tint and candle coloring, and a right-edge beacon summarizing the current state.
🟣 Unique Edge / Why it is not a basic mashup
Standard regime indicators report the current state and stop there. Regime Transition Intelligence adds six distinct statistical layers that together form a transition-aware view:
1. Dwell Time Statistics — the script stores every completed regime block in a rolling array (configurable depth) and continuously updates running mean, running variance, running max, and running count per regime code. Statistics are only shown after a minimum number of blocks per regime have been collected, so the user always knows when the sample size is still too small.
2. Exponential Hazard Flip Probability — the baseline flip probability uses P(flip within H bars) = 1 - exp(-H / mean), a standard survival-analysis construction assuming constant hazard. The result is then fatigue-adjusted: if the current age is far above the historical mean, the probability is boosted; if the regime has just started, the probability is damped. The final value is capped at 95% to avoid certainty claims.
3. Transition Matrix — a 3x3 counter records every observed regime transition and is read as a conditional distribution: "given the current regime ends, which regime is it most likely to move to, and what is the runner-up". Both the top candidate and the secondary candidate are displayed with their percentages.
4. Fatigue Score — the ratio of the current age to the historical mean is bucketed into three zones (FRESH, MATURE, EXTENDED) using user-configurable thresholds. It tells the user whether the current regime is still in its early lifecycle or already past its typical end.
5. Confidence Decay Tracker — conviction in the current regime is sampled at the start of each new block and compared to the current conviction. The delta is classified as BUILDING, STABLE, or FADING, which gives an early read on whether the regime is strengthening or losing its grip.
6. History Ribbon — the last N completed regime blocks are compressed into a single compact line such as "C2·M4·C8·M1·M7*", where letters are regime codes and numbers are bar counts, with the current block marked by an asterisk. It gives immediate context on recent regime rhythm at a single glance.
None of these layers is a repackaged classic indicator. They are built on top of a trend / chop / volatility engine but deliver information that is categorically different from a simple "regime yes / no" readout.
🟢 Methodology / Conceptual data flow
1. Feature extraction. Kaufman Efficiency Ratio (net move over lookback divided by summed absolute moves) and normalized ADX are combined into a trend score. The Choppiness Index is normalized against its operating range and blended with inverse trend to produce a chop score. ATR as a percentage of price is normalized against its own lookback min/max to produce a volatility score.
2. Classification. Each score is mapped to LOW / MID / HIGH using either fixed thresholds (Static mode) or percentile rank over an adaptive lookback (Adaptive mode). The three bands are combined into a discrete regime state: TREND when trend is HIGH and chop is LOW, RANGE / CHOP when chop is HIGH, and MIXED otherwise.
3. Block tracking. Every time the regime state changes on a confirmed bar, the previous block is closed: its duration is pushed to a rolling history array and added to the running sum / sum-of-squares / count / max for its regime code. When the history array exceeds its configured depth, the oldest block is popped and its contribution is subtracted from the running totals, which keeps the statistics adaptive and non-expanding.
4. Transition matrix update. When a block closes into a new regime, the 3x3 counter is incremented at the corresponding cell, and the row total is incremented. The conditional distribution for the current regime is read from its row at display time.
5. Statistical outputs. Mean dwell, fatigue ratio, exponential-hazard flip probability, fatigue-adjusted flip probability, top and secondary next regimes, and confidence delta are all derived from the running state and rendered into the dashboard.
6. Higher-timeframe alignment. The same three-axis engine is run on a user-selected higher timeframe via request.security and compared against the current-timeframe regime; the result appears as SYNC or DIV in the header and as an optional HTF row in the dashboard.
🔔 Signals & Alerts / Interpretation
Regime Transition Intelligence is a state-mapping and statistical context tool rather than a directional buy / sell engine. The main on-chart events are:
- Regime Shift — fires when the regime state changes on a confirmed bar
- High Flip Probability — fires when the fatigue-adjusted flip probability crosses a high threshold
- Regime Fatigue Extended — fires on the transition into the EXTENDED fatigue zone
- Confidence Fading — fires on the transition into the FADING confidence zone
How to read the panel:
- Summary + Age tells the user which regime is active and how long it has been active.
- Dwell Context compares the current age to the historical mean in the form "age / mean · % of typical lifespan".
- Fatigue summarizes that comparison as FRESH, MATURE, or EXTENDED.
- Flip Probability reports the statistical odds of a regime change within the user-defined horizon.
- Next Likely names the most probable next regime with its percentage and a secondary fallback.
- Confidence and Conf Decay together tell the user whether the current read is reliable and whether conviction is rising or fading.
- History gives quick situational awareness of recent regime rhythm.
None of these rows should be interpreted as a trade instruction. They are a context layer meant to be combined with the user's own structure and entry framework.
🎛️ Key Inputs
Regime Engine Core — Trend Persistence Length, DMI/ADX Length, Chop Length, ATR Length, Volatility Normalize Lookback.
Adaptive Boundaries — Band Classification Mode (Adaptive / Static), Adaptive Lookback, Adaptive Low / High Percentile.
Transition Intelligence — Regime History Depth, Flip Probability Horizon, Min Blocks Before Stats Activate, Fatigue Fresh / Extended thresholds.
HUD — Display Mode (PRO / MINIMAL), HUD Position, Text Size, transparency controls, individual row toggles, history ribbon length.
Add-ons — Chart Regime Tint, Regime Candle Coloring (Soft / Strong), HTF Peek Timeframe, Transition Markers (location, cooldown, stagger, size, ATR offset), Live Regime Beacon (position, size, stats toggle).
🧭 How to use
1. Add the script to any chart and timeframe. The engine is tuned to work from 15m up to Daily; very low timeframes on illiquid instruments can produce unstable regime blocks and are not the intended use case.
2. Give the script time to collect blocks. Statistics stay in N/A until the configured minimum number of completed blocks per regime has accumulated. On a fresh chart or an illiquid instrument this is expected behavior, not a bug.
3. Read the dashboard top-down. Start with the three axis rows to understand the current market shape, then move to Summary and Age to see what is active and for how long, then use Dwell / Fatigue / Flip / Next Likely to place the current regime inside its historical distribution, and finally use Conf Decay and HTF to sanity-check reliability and alignment.
4. Treat EXTENDED fatigue and high flip probability as context, not as a reversal signal. Regimes can remain in the EXTENDED zone for a while before actually flipping; the statistical profile is descriptive, not deterministic.
5. Combine with structural context. The script does not know about support / resistance, order blocks, or news. It only knows about the symbol's own regime rhythm. Use it as a regime-aware filter on top of the user's existing framework.
⚠️ Limitations & Transparency
This is not a strategy and not a complete trading system. It does not predict price direction and does not generate buy or sell signals. All statistics are estimated from a rolling history of the chart's own regime blocks, so they are sensitive to the chosen engine parameters, the timeframe, and the symbol; different timeframes and different instruments will produce different statistical profiles, and that is by design.
The exponential-hazard flip probability assumes a constant hazard within the current regime, which is a simplification. Real-world regime durations are not perfectly memoryless and the fatigue multiplier is a heuristic correction, not a formal model. The probability is capped at 95% on purpose, because even a heavily aged regime cannot be considered a certainty and the script deliberately avoids certainty language.
The transition matrix is read as a conditional frequency over completed blocks; it is informative about the symbol's own past behavior and should not be interpreted as a forward-looking forecast. Very small samples produce unstable conditional probabilities, which is why stats stay in N/A until a minimum number of blocks is collected.
Regime classification itself reacts to confirmed bars and can change as new data arrives, which is expected for any regime filter. Users who prefer fully non-repainting alerts should rely on the barstate.isconfirmed-gated alert conditions provided.
📜 Risk Disclosure
Trading involves substantial risk of loss and is not suitable for every investor. Past performance is not indicative of future results. This indicator is provided for educational and analytical purposes only and should not be interpreted as financial advice, an investment recommendation or a solicitation to trade. Always combine multiple forms of analysis, manage position size responsibly, and never risk capital you cannot afford to lose. Indicator

Price Void Atlas [AGPro Series]Price Void Atlas
🗺️ OVERVIEW
Price Void Atlas maps the chart's low-interaction price corridors — zones where price travelled fast and spent very little time — and tracks how price behaves when it returns. Unlike volume-based profiles that highlight crowded price levels, this indicator surfaces the opposite: the empty highways of the chart. Every corridor carries a live state (Fresh, Entered, Passed, Rejected) so you can read return behavior at a glance.
🧭 UNIQUE EDGE
Most volume profile and imbalance tools show where price concentrated. Price Void Atlas inverts the question: where did price refuse to concentrate? The detection engine is purely time-weighted and ATR-normalized, so it works identically on instruments without reliable volume data (forex, many altcoins, CFDs). The state machine adds a second layer — it does not just detect voids, it follows their return stories. This combination (time-based emptiness detection + entry-side-aware state tracking) is the core differentiator.
🔬 METHODOLOGY
The Scan Length window is sliced into 40 horizontal price bands. For each historical bar in the window, every band it intersects receives an ATR-normalized time weight. Bands that accumulate weight below a sensitivity-driven percentile threshold are flagged as empty. Contiguous empty bands form a corridor. Height is capped at 50% of total range to keep corridors structurally meaningful. Candidates are scored on a 65/35 weighted blend of emptiness intensity and ATR-normalized height, then the top N survivors are kept. Optional vertical proximity merging (0.3×ATR) consolidates nearby corridors into larger atlas-feel zones.
The state machine then observes price behavior per corridor:
- Fresh → never touched since birth
- Entered → price crossed inside; entry side is locked (top or bottom)
- Passed → close crossed beyond the far boundary (clean traversal)
- Rejected → close reversed beyond entry side by 35% of corridor depth
🔔 SIGNALS & ALERTS
Three independent alert channels:
- Void Entered — price re-enters an active corridor
- Void Passed — price closes through the far boundary
- Void Rejected — price reverses past its entry side
Each alert fires once per bar on confirmed close. Corridors are drawn as persistent ATR-aware rectangles with state-colored borders and labels. A dominant corridor (highest rank score) gets a thicker border as a visual hierarchy cue.
🎛️ KEY INPUTS
Core Engine
- Scan Length (100–1000): window of bars analyzed
- Sensitivity (Strict / Balanced / Loose): emptiness threshold
- Max Voids (1–6): hard cap on simultaneous corridors
- Hide Resolved Voids: removes Passed/Rejected for a clean view
- Merge Vertically Close Voids: atlas consolidation
Visual
- Panel Location (5 positions), Panel Theme (Dark / Light)
- Panel Font Size, Label Font Size (tiny → large, default normal)
- Show Entry Side Hint (↑ / ↓ arrows on Entered labels)
Alerts
- Individual toggles for Entered / Passed / Rejected
🎯 HOW TO USE
1. Apply on a chart with enough history (200+ bars recommended for 300 Scan Length)
2. Fresh amber zones are untouched voids — potential re-interaction targets
3. When price approaches a Fresh zone, the corridor turns indigo (Entered)
4. Observe whether the interaction resolves as a traversal (Passed, teal) or a turn-away (Rejected, pink)
5. Use corridor boundaries as structural reference points alongside your own system
6. The dominant corridor (thickest border) represents the cleanest void by rank score
7. Works across all timeframes; adaptive rebuild cadence keeps performance consistent
⚠️ LIMITATIONS & TRANSPARENCY
- This is an analysis aid, not a trading strategy. It does not generate buy or sell signals.
- Corridor detection requires at least Scan Length bars of history; newly loaded charts render progressively as history accumulates.
- The time-weighted emptiness metric depends on ATR stability; very low-volatility environments may produce fewer meaningful voids.
- State transitions are evaluated on confirmed bar closes to prevent intrabar repainting.
- Corridors persist across bars but are rebuilt on an adaptive cadence (5–25 bars depending on timeframe) for CPU efficiency.
- All visuals are computed from the visible historical data on the current chart; extending the lookback will refresh the atlas.
🛡️ RISK DISCLOSURE
This indicator is provided for educational and analytical purposes only. It does not predict future price movement, does not generate trade recommendations, and does not constitute financial advice. Trading involves substantial risk of loss. Past corridor interactions do not guarantee future behavior. Always conduct your own research and risk management. Indicator

Silver Bullet Window Map [AGPro Series]Silver Bullet Window Map
🔹 Overview
Silver Bullet Window Map is a precision time-based tool that maps the three classic ICT "Silver Bullet" kill zones — compact 1-hour windows where institutional order flow is statistically concentrated — and automatically detects Fair Value Gap (FVG) imbalances formed inside each window. Instead of cluttering the chart with session-wide structures, the script isolates only the high-probability time periods ICT scalpers actually trade, rendering each window as a clean vertical zone with a live countdown, pulse highlight on the active window, and a lifecycle S/R zone for every FVG that prints during the window.
🔸 Unique Edge
Most Silver Bullet scripts either draw static colored backgrounds with no analytical value, or detect FVGs across the entire session and overwhelm the chart. This script does neither. It enforces a strict discipline: FVGs are only drawn if they form INSIDE an active Silver Bullet window. Outside-window price action is deliberately ignored. The result is a chart where every marked imbalance carries ICT-legitimate timing context — not noise. Each FVG becomes a horizontal lifecycle zone (bull or bear) that extends forward in time and is dimmed automatically when mitigated, giving you both a real-time map and a historical window-quality record in one view.
🔹 Methodology
The indicator evaluates the current bar's hour and minute in a user-selectable timezone (New York default, per ICT standard) and identifies three windows: London (03:00–04:00), AM (10:00–11:00), and PM (14:00–15:00). During each window, a three-bar FVG check is performed on confirmed bars: a bullish FVG requires the current bar's low to exceed the high two bars back; a bearish FVG requires the current bar's high to fall below the low two bars back. Gaps are filtered by a user-tunable ATR(14) multiplier to reject insignificant imbalances. Valid FVGs are rendered as time-anchored rectangular zones that extend a configurable number of bars into the future and are marked as mitigated the moment price revisits the opposite side of the gap.
A built-in timeframe guard disables rendering on timeframes of 1 hour and above, because Silver Bullet windows are exactly 1 hour long and cannot be resolved by bars equal to or larger than the window itself. On HTF charts, the panel displays a clean warning message instead of a broken visual.
🔸 Signals & Alerts
Four alert conditions are available: London window open, AM window open, PM window open, and window close. The script is designed for discretionary use — it does not issue buy/sell signals. Its purpose is to put the trader inside the correct time context with the correct structural references, and to let the trader read price action within that context.
🔹 Key Inputs
• Timezone: New York / London / UTC / Exchange
• Historical window depth: 1–30 days
• Individual toggles and custom colors for each of the three windows
• Active-window pulse effect (on/off)
• FVG detection (on/off), minimum size as ATR multiple, zone extension in bars
• Mitigation behavior: dim inactive zones or remove them
• Panel position, theme (Dark/Light), and font size
• Window labels and FVG labels: independently toggleable, font size configurable
🔸 How to Use
Best deployed on 1m–30m intraday charts where the 1-hour windows are visually meaningful. The AM window (10:00–11:00 NY) is historically the most actionable for US equities, indices, and major FX pairs. Wait for a window to open — the background lights up, the panel shows ● LIVE, and the window label appears above the opening candle. Look for a displacement candle creating an FVG inside the window. Use the FVG zone as a retest entry reference with risk defined beyond the gap. The panel's countdown and per-window FVG tally help you gauge window quality in real time. At the end of each day, the L / AM / PM tally shows which window produced the most imbalances — a quick read on session character.
🔹 Limitations & Transparency
This indicator does not predict direction. It does not backtest or display historical win rates — such figures on a time-window tool would be statistically misleading without an execution model. FVG detection uses the standard 3-bar definition; alternative definitions (implied fair value, BPR, inversion FVGs, etc.) are not covered by design. The tool is timezone-sensitive: if your data feed's timestamps drift from the selected timezone's DST boundaries, window alignment can shift by one bar around DST transitions. On timeframes equal to or greater than 1 hour, the script deliberately disables all rendering to avoid producing a misleading visual.
🔸 Risk Disclosure
This script is provided for educational and analytical purposes only. It does not constitute financial advice. Trading leveraged instruments carries substantial risk of loss. Past price behavior around kill zones does not guarantee future results. Use proper risk management and position sizing at all times. Indicator

Discipline Guard [CrestAlgo]Discipline Guard
🔍 What This Indicator Does
Every trader has sessions they should avoid. The post-lunch chop. The pre-market noise. The late-night revenge trade window. You know these windows exist because your journal proves it. The problem is remembering in the moment.
Discipline Guard is a behavioral guardrail that visually obscures the chart during user-defined time windows where you have identified that you tend to underperform. It serves as a pattern-interrupt: a deliberate visual barrier between you and a trade you should not be taking.
This is not a signal indicator. It does not tell you what to trade. It tells you when to stop.
🛑 How It Works — The Four Stages
The indicator uses a progressive warning system so you are never caught off guard mid-position:
Stage 1 — Early Warning (15 minutes before window)
A subtle amber tint appears on the chart background. This is your cue to begin winding down any open positions and stop scanning for new setups.
Stage 2 — Approaching (5 minutes before window)
The amber tint deepens and a warning label appears above the current bar showing the window name. Final warning before the blackout begins.
Stage 3 — Active Block (during the window)
The chart is covered with a configurable-opacity dark overlay and a centered message. The default reads "NO-TRADE ZONE — SCHEDULED PAUSE" but you can customize it to anything. This is the core of the indicator — making it psychologically harder to enter a trade during your known bad window.
Stage 4 — Recovery (5 minutes after window ends)
The overlay fades gradually back to a clean chart. This gives you a moment to recalibrate before re-engaging.
The progressive ramp can be toggled off if you prefer an instant blackout with no lead-in.
🌍 Per-Window Timezone Support
Each window has its own timezone selector with 14 options covering all major trading sessions:
America/New_York (default), America/Chicago, America/Los_Angeles, Europe/London, Europe/Amsterdam, Europe/Frankfurt, Asia/Tokyo, Asia/Hong_Kong, Asia/Singapore, Asia/Shanghai, Asia/Dubai, Australia/Sydney, UTC, and Chart (uses the symbol's exchange timezone).
This means you can configure one window for the NY lunch chop in Eastern time and another for the London close in GMT on the same chart. Each window resolves its own day-of-week and time-of-day independently.
⚙️ Configuration
Up to 5 independent no-trade windows can be configured. Each window has:
Enable/Disable toggle
Custom label (e.g., "Post-Lunch Slump", "Pre-FOMC", "Revenge Trade Zone")
Timezone selector (14 options)
Day-of-week checkboxes (Mon through Sun)
Start and end time in 24-hour HHMM-HHMM format
Visual settings (global):
Blackout color (default: near-black #0A0A0A)
Blackout opacity (40-95%, default 70%)
Warning tint color (default: amber)
Warning symbol (🛑 🚫 ⛔ ❌ 🔒 ⚠️)
Custom blackout message text
Message font size (Small / Medium / Large / Huge)
Progressive ramp toggle (on/off)
Historical display:
Show Historical Windows toggle (off by default — keeps your chart clean)
Realtime Range (how many bars back from current to shade, default 48)
🔔 Alerts
Two alert conditions are available:
Window approaching (fires when Stage 2 begins, 5 minutes before the blackout)
Window active (fires when Stage 3 begins)
To set an alert: right-click the indicator name on your chart → "Add alert on Discipline Guard."
🕐 Timeframe Compatibility
This indicator works on all timeframes and all markets (futures, stocks, forex, crypto, commodities, indices).
For the full four-stage progressive warning to render correctly, use on timeframes of 15 minutes or less. On higher timeframes (1H, 4H, Daily), the warning stages may collapse onto a single bar since each bar spans more time than the 15-minute lead-in window. The blackout itself works correctly on all timeframes.
Practical guidance:
1m to 5m: Full progressive ramp renders smoothly. Ideal for day traders and scalpers.
15m: Warning stages may render on only 1 bar each. Still functional.
1H and above: Use with progressive ramp disabled (instant blackout mode). The blackout still activates at the correct time.
📐 Default Configuration
Window 1 is enabled out of the box:
Label: "NY Post-Lunch Slump"
Timezone: America/New_York
Time: 13:00 – 13:30 ET
Days: Monday through Friday
This targets the well-known low-volume, choppy lunch period in US equity index futures trading. Adjust or disable it to match your own trading journal findings.
Windows 2-5 are pre-configured with common session labels (NY Pre-Open, London Lunch, Tokyo Fix, Custom) but disabled by default. Enable and adjust them to fit your own discipline rules.
⚠️ Limitations
This indicator enforces time-based discipline rules. It does not analyze price action, volume, or any market data beyond the current bar's timestamp.
The timing logic is derived from bar timestamps, not a separate wall clock. On inactive symbols where bars do not print continuously, the warning stages may not appear if no bar falls within the warning window.
Windows that cross midnight in their configured timezone (e.g., 23:30 to 00:30) require both days to be enabled in the day-of-week settings. Each day is evaluated independently.
The blackout is a visual overlay only. It does not prevent order execution or interact with your broker in any way. You can still place trades during a blackout if you choose to. The decision is always yours.
⚖️ Disclaimer
This indicator is a behavioral visualization tool for educational and informational purposes only. It does not constitute financial, investment, or trading advice. It does not generate trade signals, recommendations, or any form of market analysis.
No representation is made that using this tool will improve trading performance, reduce losses, or produce any specific result. Trading discipline is a personal responsibility. This tool provides a visual reminder; it does not guarantee behavioral change.
Trading futures, options, and other financial instruments involves substantial risk of loss and is not appropriate for all investors. Past performance is not indicative of future results. Indicator

Indicator

Indicator

Indicator

Indicator

Indicator

Gann Time Price Geometry Ver 1.0Gann Time Price Geometry — Ver 1.0
This indicator builds a dynamic Gann Square grid directly on your chart, anchored to automatically detected swing highs and lows. It combines classical Gann geometry with a scoring-based signal engine to highlight high-confluence buy and sell opportunities.
How it works
The script uses a Vector Circle Search to find the best pivot pair within a harmonic window around your chosen Gann number (88 bars by default). It scores each candidate swing by how closely its price-per-bar ratio and duration match the ideal Gann proportion, then anchors the full grid to the winning pair.
What you get on the chart
What is Drawn on the Chart
🔲 Full Square
The outer Gann Square spans your chosen Gann number in bars horizontally, and 2× the detected swing range vertically. This is the master structure everything else is built inside.
🔲 Sub-Squares (4 Inner Cells)
The full square is divided into 4 equal inner cells — 2 columns × 2 rows. Each cell gets its own set of angle lines projected from its corners. This creates nested geometry that gives you finer entry and exit precision within the larger structure.
📐 Angle Lines
1x1 — the true balance angle between price and time, projected from all four corners of both the full square and each sub-cell
2x1 / 1x2 — steeper and shallower angles showing acceleration and deceleration zones
All angles are clamped within their respective square boundaries so the chart stays clean
⏱️ Time Cycle Verticals
Vertical lines mark Gann's 1/8 harmonic divisions of time across the square:
1/2 cycle (orange, prominent) — the most powerful time node, midpoint of the square
1/4 and 3/4 cycles (dashed) — secondary time divisions where reactions are common
1/8 minor cycles (optional) — finer subdivisions for short-term timing
When price reaches an angle line and a time cycle vertical at the same bar — that is a Gann confluence point, and where this indicator focuses its signals.
Signal scoring (max ~10 pts per signal)
Set Min Confluence Score to 3–4 for quality signals. Lower it to 0 to see all geometrically valid touches.
Settings to tune first
Match Gann Number to your timeframe (88 for most, 44 for fast charts)
Check the Info Table — if Swing pts/bar doesn't match Diagonal, update the Swing Diagonal Is dropdown
Adjust Period Divisor to the harmonic you are trading (1/2 suits swing traders)
Alerts included — Gann Buy and Gann Sell, fire on bar close.
First-Time Setup — 3 Steps
Step 1 — Choose your Gann Number
Start with 88 on Daily or 4H charts. Use 44 on 1H or faster. This defines the width of your square in bars.
Step 2 — Match the Diagonal
Open the chart, look at the Info Table. Find Swing pts/bar and the suggest note next to it. If it says "use 2x1", set the Swing Diagonal Is dropdown to 2x1. Green ✅ means you are calibrated correctly.
Step 3 — Set your Confluence Level
Start at 3. If you are getting too many signals, raise it to 4 or 5. If you want to study all geometric touches without filtering, set it to 0.
Works on: Any instrument — stocks, crypto, forex, indices, commodities
Works on: Any timeframe — tune Gann Number to match
Alerts: Gann Buy and Gann Sell included, fire on bar close
Note on Line Limits
PulseWire Pine Script has a 500-line limit. Keep Squares Forward and Squares Backward at 2 or below to stay within this limit. The indicator will silently drop lines if the limit is exceeded.
Indicator

Indicator

Indicator

Session Range Boxes by APOVERVIEW
This indicator is designed for traders who require clear, visual boundaries for different trading sessions. It tracks the highest high and lowest low of up to six custom-defined time windows, wrapping them in dynamic boxes that update in real-time.
FEATURES
6 Customizable Sessions: Fully adjustable time ranges and names (Asia, London, NY Open, etc.).
Real-Time Tracking: Session boxes expand dynamically as price creates new highs or lows during the session.
Visual Organization: Individual color and transparency controls for each session to keep your chart clean.
Auto-Delete Logic: Automatically removes older session boxes to prevent chart clutter (user-definable "Keep Last N Sessions").
Timezone Flexibility: Built-in timezone support (IANA/Olson format) to ensure sessions align perfectly with your chart regardless of your local time.
HOW TO USE
Define your Timezone: Set the global "Session Timezone" to your reference market (e.g., America/New_York)
Input Sessions: Enter the 24-hour time ranges for your desired trading windows (e.g., 0930-1100).
Customize your settings & colors
Enjoy :)
SETTINGS
Global : Toggle borders and labels globally, and set the auto-cleanup frequency.
Session-Specific: Individual toggles for time, background fill, border color, and naming.
NOTES
Of course I could add more functionality, but my main goal was to keep the indicator as small and simple as possible, while providing functionality which it was built for.
Since the functionality is limited, I will keep this indicator open-source so everybody can edit and customize it to his own liking.
Indicator

Interactive TA↕️ Interactive TA is a proof-of-concept indicator that enables moving average selection directly on the chart through an interactive selector, without opening the settings panel. Drag the selector marker vertically to switch between SMA, EMA, VWMA, HMA, and DEMA — the selected moving average updates on the price overlay in real time. Built as an educational framework for interactive technical analysis in PineScript, the indicator demonstrates how PulseWire's price input can be repurposed as a draggable on-chart control, establishing a template for developers to build interactive indicators, dashboards, and selection tools beyond what PineScript natively offers.
💡 CONCEPT 💡
PineScript currently offers no command buttons, toggles, or selection controls that operate directly on the chart. All indicator configuration is handled through the settings panel, requiring the user to open a dialog, adjust values, and close it before seeing the result. This workflow, while functional, interrupts the analytical process and disconnects the user from the chart during configuration changes.
Interactive TA demonstrates a workaround to this limitation. The indicator uses input.price — a PineScript function originally designed for anchoring price levels on a chart — as a vertically draggable selector. By mapping the vertical position of this price input to discrete zones, each corresponding to a different moving average type, the indicator transforms a simple price anchor into a functional control element.
The lower pane of the chart serves as the control surface. A selector marker is displayed with labeled zones on the right side, each representing a moving average type (SMA, EMA, VWMA, HMA, DEMA). The currently active zone is highlighted, and the selected moving average is plotted on the upper price chart using force_overlay , with its type and length displayed in the top-right corner. Dragging the selector marker into a different zone immediately switches the active moving average in real time.
This approach demonstrates that interactive technical analysis — where chart elements respond to direct user manipulation rather than static settings — is achievable within PineScript's existing capabilities. The moving average selector is intentionally simple; it exists to illustrate the interactive pattern itself, which can be extended to virtually any indicator parameter or selection logic.
🔶 HOW TO USE 🔶
Add the indicator to your chart. The lower pane displays the selector with labeled zones, and the upper chart displays the currently selected moving average.
Click and drag the orange selector marker up or down to move it into the zone of the desired moving average type.
Release the drag. The moving average on the upper chart updates immediately to reflect the new selection. Interactive Selector : The arrows indicate the drag points where the user can click and slide the selector line vertically to switch between moving average types. The currently selected type (VWMA) is highlighted in orange, and the corresponding moving average is plotted on the upper chart.
Pane sizing: The lower pane can be resized by dragging the horizontal divider between the upper and lower panes. This allows the user to adjust the vertical spacing of the zone labels for comfort and readability. Making the lower pane taller spreads the labels out; making it shorter compresses them. This is standard PulseWire behavior and provides an additional layer of visual customization.
Pane scale: The numeric values on the lower pane's vertical axis are internal zone coordinates used for selector positioning and do not represent price.
🛠️ SETTINGS 🛠️
MA Length : Sets the period for the moving average calculation. Default is 50.
MA Color : Sets the color of the moving average line on the upper chart.
Selector Color : Sets the color of the selector pointer, zone highlight, and the type label on the upper chart.
Auto-Generated By PineScript : System input created by the interactive selector. No adjustment needed.
🔑 PRACTICAL ADVANTAGES 🔑
The ability to adjust indicator parameters directly on the chart, without leaving the visual context of price action, offers practical advantages for technical analysis:
Rapid comparison. Switching between moving average types to evaluate their behavior on the same price action takes a single drag gesture rather than multiple clicks through the settings panel. This enables quick side-by-side evaluation of how different calculations respond to the same market conditions.
Reduced context switching. Opening the settings dialog shifts attention away from the chart. Interactive controls keep the analyst's focus on price action while making adjustments, preserving the visual continuity of the analysis.
Faster live workflow. During active market sessions, the difference between a one-second drag and a multi-step settings change can affect the pace of analysis. Interactive controls compress the decision-to-observation cycle.
Education and presentation. When demonstrating technical analysis concepts to others, the ability to switch between indicator types in real time — visibly, on the chart — is more effective than toggling settings behind a dialog. The audience sees the change happen, which reinforces understanding of how different indicators behave.
Exploration. Interactive controls lower the friction of experimentation. When switching between options is effortless, analysts are more likely to explore alternatives they might otherwise skip, potentially discovering indicator configurations better suited to current market conditions.
DEMA (50) : Selected via the interactive slider. The selector is positioned in the DEMA zone, with the corresponding label highlighted and the double exponential moving average plotted on the upper chart. EMA (50) : Selected on the same chart and timeframe. The selector has been dragged to the EMA zone, switching the overlay without changing any settings. Comparing the two charts reveals how the EMA responds differently to the same price action.
🔮 EXPANDING THE CONCEPT 🔮
Interactive TA is released as a proof of concept and an open invitation to the PineScript development community. The interactive pattern demonstrated here — mapping a draggable price input to discrete zones that drive indicator logic — is not limited to moving average selection. The same framework can be adapted to control virtually any aspect of a technical analysis tool.
Timeframe or source selection controlled by an on-chart slider
Strategy mode switching between parameter presets
Alert threshold adjustment through direct chart interaction
Multi-indicator dashboards where a single control determines which overlay is visible
Sensitivity or risk level tuning without opening settings
These are starting points, not boundaries. The framework is deliberately generic — a draggable position mapped to an array of options — and developers are encouraged to extend it in directions not anticipated here. As the community explores and builds upon this workaround, the case for native support becomes increasingly evident. Definable slider ranges, anchored control elements, minimum and maximum value constraints, step intervals, and discrete input types would significantly expand the potential for building interactive analytical tools in PineScript.
⚠️ NOTE ⚠️
Interactive TA is a proof-of-concept indicator designed for educational purposes and as a development framework. It demonstrates an innovative approach to on-chart interactivity in PineScript and is intended to serve as a template for further development by the community. The included moving average selector is a demonstration of the interactive pattern, not a standalone trading tool. It is not intended as financial advice or a trading signal generator. Users and developers are encouraged to adapt, extend, and build upon this framework to suit their own analytical needs. Indicator

ICT Macro Tracker | Multi-TFThis indicator extends the ICT Macro boundaries to different timeframe, not just the traditionally known 10min to 10min hourly window.
From 1-Hour to Monthly, each candle will close → open.
During this handoff is where the new OHLC sequence begins and liquidity seeks / rebalances inefficiencies.
Built on the foundation of @toodegrees ICT Algorithmic Macro Tracker°.
Extended to track candle boundary macros across multi-timeframe tiers with automatic timeframe alignment, session filtering, H/L tracking, and a full alert system.
💠 MACRO OHLC CONCEPT
Every candle must close before the next one opens. That transition is where the algorithm seeks liquidity or rebalances price.
One hour divides into four 15-minute candles, each maps to a leg of the OHLC sequence: Open, High (or Low), Low (or High), Close.
The traditional ICT macro captures a 20-minute window: last 10 minutes of the closing candle, first 10 of the new one.
Extend that to 15 minutes each side and the window now aligns with the full 15-minute OHLC legs. The close completing its delivery and the open beginning its new sequence.
This principle is fractal. The same close → open handoff applies at every timeframe:
Macro Breakdown
Monthly Macro → Daily
Last week of old month → First week of new month · ~10 trading days
Weekly Macro → 4-Hour
Thu / Fri → Mon / Tue · ~2.5 days
Daily Macro → 1-Hour
Last 6H of closing day → First 6H of new day · ~12 hours
4-Hour Macro → 15-Min
Last 1H of closing 4H → First 1H of new 4H · ~2 hours
1-Hour Macro → 1-Min
Last 15min of closing hour → First 15min of new hour · ~30 min
💠 FEATURES
Multi-Timeframe Macro Tiers
– 1H Macros: brackets at every hourly boundary (XX:45–XX:15 or XX:50–XX:10)
– 4H Macros: brackets at 4-hour boundaries (Full: 2H window / Half: 1H window)
– Daily Macros: brackets at daily boundaries (Full: 12H / Half: 6H)
– Weekly Macros: single bracket straddling the weekend
– Monthly Macros: single bracket straddling the month boundary
Auto
– Auto TF Alignment: automatically shows the right tier for your chart timeframe
≤3m → 1H · 5m → 4H · 15m → Daily · 1H → Weekly · 4H → Monthly
– Auto Futures Detection: aligns boundaries to exchange times (CME 6PM) or midnight based on symbol type
– Custom mode for manual control over all tiers and visibility
Visuals
– 50% temporal midpoint line marking the old close / new open transition
– H/L tracking with extending lines that detect mitigation (price breaks the level)
– H/L modes: "All" (every macro gets lines) or "Most Recent" (last completed only)
– Above/Below bracket positioning
– Tiered lane display — multiple active tiers stack vertically without overlapping
– Session filtering: toggle Asia, London, NY AM, NY PM independently per tier
Alerts
– On Open / On 50% / On Close for any active macro
– Pre-Alert and Pre-50% with configurable advance time (1min to Daily)
– Compatible with PulseWire's "Any alert() function call"
💠 SETTINGS
📐 Settings
– Macros: main on/off toggle
– Above / Below: bracket display position relative to price
– 50%: show/hide temporal midpoint line
– H/L: toggle macro high/low tracking lines
– H/L Mode: "All" shows lines for every macro, "Most Recent" shows only the last completed
– TF Alignment: "Auto" assigns one tier per chart timeframe, "Custom" gives full manual control
– Futures: "Auto" detects via symbol type, "On" forces exchange-aligned boundaries (4H: 2,6,10,14,18,22 / Daily: 6PM), "Off" forces midnight-aligned
⏱ Intraday Macros
– 1H Macro: enable/disable, window size (15min: 30-min bracket or 10min: 20-min bracket), colour
– Session toggles: Asia (5pm–12am), London (12am–6am), NY AM (6am–12pm), NY PM (12pm–5pm)
– Apply Below: restrict 1H macros to chart timeframes at or below this setting
– 4H Macro: enable/disable, window size (Full: 1H+1H or Half: 30m+30m), colour
– 4H Session toggles with futures-aware boundary hours
– 4H Apply Below
📅 HTF Macros
– Daily Macro: enable/disable, window (Full: 6H+6H / Half: 3H+3H), colour, Apply Below
– Weekly Macro: enable/disable, window (Full: Thu–Tue / Half: Fri–Mon), colour, Apply Below
– Monthly Macro: enable/disable, window (Full: 7+7 days / Half: 3+3 days), colour, Apply Below
🔔 Alerts
– On Open / On 50% / On Close
– Advance: how far ahead pre-alerts fire (1min, 5min, 15min, 30min, 1H, 4H, Daily)
– Pre-Alert / Pre-50%: fires before the macro opens or reaches midpoint
💠USAGE
Start with Auto mode, it picks the right macro tier for your chart timeframe automatically.
Recommended starting points:
– 1-min to 3-min chart → 1H macros (every hourly boundary)
– 5-min chart → 4H macros (session-level boundaries)
– 15-min chart → Daily macros
– 1-hour chart → Weekly macros
– 4-hour chart → Monthly macros
Switch to Custom mode when you want multiple tiers visible at once or need fine control over which sessions and timeframes appear.
The bracket shows the macro time window. The 50% midpoint marks where the old candle's close transitions to the new candle's open. H/L lines mark where liquidity was created during the macro, watch for price to return and mitigate those levels.
Hover over any bracket label for detailed tooltip information including the exact time range, session, window size, and futures/midnight alignment.
💠ATTRIBUTION & OPEN SOURCE
Built on @toodegrees open-source ICT Algorithmic Macro Tracker°.
Massive thanks to @toodegrees for making the code open source.
Disclaimer
This tool is for educational purposes only and is not financial advice. Users assume full responsibility for their trading decisions. Past performance does not guarantee future results. Indicator

Indicator

blueprint_ephemeris_lib🔭 Library blueprint_ephemeris_lib
Consolidated planetary ephemeris library with improved accuracy. Supersedes previous individual planet libraries (lib_vsop_core, lib_vsop_mercury, lib_vsop_venus, etc.). One import gives you geocentric/heliocentric positions for all 10 solar system bodies.
█ ACCURACY — VALIDATED AGAINST JPL DE440
Every planetary body was validated against NASA's DE440 ephemeris (via Skyfield). Using only 1.6% of the full VSOP87D theory (511 of 31,577 terms), this library achieves sub-arcminute accuracy for all planets:
Sun 0.004° (14 arcseconds)
Mercury 0.005° (18")
Venus 0.006° (22")
Mars 0.010° (36")
Jupiter 0.007° (25")
Saturn 0.009° (32")
Uranus 0.013° (47")
Neptune 0.017° (61")
Moon 0.062° (3.7')
Pluto 0.059° (3.5')
All bodies under 0.1° RMS — more than sufficient for aspect calculations, ingress timing, and planetary line work. The Sun is accurate to 14 arcseconds using a truncated series that fits entirely inside Pine Script's token limits.
█ WHAT'S NEW (V2)
The original ephemeris required 11 chained library imports. A full validation audit uncovered critical coefficient errors and motivated this rewrite:
• L1 Precession Fix — All 8 VSOP87 planets had incorrect longitude rate coefficients (VSOP87B values instead of VSOP87D). Each was missing +0.24382 rad/millennium of general precession. This single correction reduced error from ~0.75° to < 0.1° across the board.
• 28% Smaller — 4,300 lines across 11 files → ~3,100 lines in 1 file.
• Single Import — No dependency chain. Faster execution.
• Moon Improvements — Functions accept raw `time` directly. Node functions renamed with explicit north/south designation.
█ THEORIES
VSOP87D (Bretagnon & Francou, 1988) — Mercury through Neptune
511 truncated terms out of 31,577 total (1.6%). Heliocentric spherical
coordinates in the ecliptic of date.
ELP2000-82 (Chapront-Touzé & Chapront, 1983) — Moon
91 terms (48 longitude + 43 latitude) from Meeus Chapter 47.
Meeus Series (Meeus, 1998) — Pluto
Analytical series from "Astronomical Algorithms" Ch. 37.
Valid ±1 century from J2000.
█ HOW TO USE
Import the library:
import BlueprintResearch/blueprint_ephemeris_lib/1 as eph
Basic — plot a planet's geocentric longitude and declination:
float jupiter_lon = eph.get_longitude(eph.Planet.Jupiter, time, true)
float jupiter_decl = eph.get_declination(eph.Planet.Jupiter, time)
plot(jupiter_lon, "Jupiter Geo Lon", color.yellow)
plot(jupiter_decl, "Jupiter Decl", color.red)
Retrograde detection:
bool mercury_retro = eph.is_retrograde(eph.Planet.Mercury, time)
bgcolor(mercury_retro ? color.new(color.red, 90) : na)
Moon nodes and declination:
float north_node = eph.get_mean_north_node_lon(time)
float south_node = eph.get_mean_south_node_lon(time)
float moon_decl = eph.get_declination(time)
plot(north_node, "North Node", color.green)
plot(south_node, "South Node", color.purple)
plot(moon_decl, "Moon Declination", color.orange)
Dynamic planet selection from input:
string planet_str = input.string("Sun", "Planet", options= )
eph.Planet p = eph.string_to_planet(planet_str)
float geo = eph.get_longitude(p, time, true)
float helio = eph.get_longitude(p, time, false)
float speed = eph.get_speed(p, time)
plot(geo, "Geocentric", color.yellow)
plot(helio, "Heliocentric", color.blue)
plot(speed * 100, "Speed x100", color.white)
All functions accept PulseWire's `time` variable directly.
█ FUNCTIONS
Unified API (all planets):
`get_longitude(Planet, time, preferGeo)` — geo or heliocentric longitude
`get_declination(Planet, time)` — equatorial declination
`get_speed(Planet, time)` — longitude speed (°/day)
`is_retrograde(Planet, time)` — true when retrograde
`string_to_planet(string)` — name to enum
Averages :
`get_avg6_geo_lon` / `get_avg6_helio_lon` — Mercury–Saturn
`get_avg8_geo_lon` / `get_avg8_helio_lon` — Mercury–Neptune
Moon (direct access):
`get_geo_ecl_lon(time)` · `get_geo_ecl_lat(time)` · `get_declination(time)`
`get_mean_north_node_lon(time)` · `get_mean_south_node_lon(time)`
`get_true_north_node_lon(time)` · `get_true_south_node_lon(time)`
`get_north_node_declination(time)` · `get_south_node_declination(time)`
█ LIMITATIONS
• Truncated series — sub-degree accuracy, not sub-arcsecond. More than sufficient for ingress timing and aspect work.
• Validated against DE440 across 250 years (1850–2100). Over this full span, the worst-case VSOP87 planet (Uranus) is 0.017° RMS / 0.043° max error. Ingress dates manually verified back to the late 1800s with consistent accuracy.
• Pluto uses Meeus series, limited to ±1 century from J2000.
• Moon has no speed function.
█ ACKNOWLEDGMENTS
Coefficient validation was made possible by Greg Miller's VSOP87 multi-language project, which provides the complete VSOP87D coefficient tables in accessible formats. His work converting the original Fortran data files into CSV/JSON for multiple languages was essential for identifying the L1 precession errors in the original libraries. Miller released this work into the public domain.
github.com/gmiller123456/vsop87-multilang
References :
• Meeus, Jean. Astronomical Algorithms (2nd Ed., 1998)
• Bretagnon & Francou. VSOP87 Solutions (Astronomy & Astrophysics, 1988)
• Chapront-Touzé & Chapront. ELP2000-82 (1983)
█ OPEN SOURCE
MIT License — part of the Blueprint Research open-source toolkit.
Source code on GitHub
get_geo_ecl_lon(time_)
Returns geocentric ecliptic longitude of the Moon.
Parameters:
time_ (float)
Returns: (float) Longitude in degrees, range [0, 360).
get_geo_ecl_lat(time_)
Returns geocentric ecliptic latitude of the Moon.
Parameters:
time_ (float)
Returns: (float) Latitude in degrees.
get_obliquity_j(time_)
Returns mean obliquity of the ecliptic.
Parameters:
time_ (float)
Returns: (float) Obliquity in degrees.
get_declination(time_)
Returns geocentric equatorial declination of the Moon.
Parameters:
time_ (float)
Returns: (float) Declination in degrees, range where positive is north.
get_declination(p, t)
Returns planetary geocentric equatorial declination.
Parameters:
p (series Planet) : (Planet) Planet to query.
t (float) : (float) Unix timestamp in milliseconds (use built-in 'time' variable).
Returns: (float) Geocentric declination in degrees, range where positive is north.
@note Declination is always geocentric (no heliocentric equivalent in library).
get_mean_north_node_lon(time_)
Returns mean longitude of the Moon's North Node (ascending node).
Parameters:
time_ (float)
Returns: (float) Longitude in degrees, range [0, 360).
@note Mean node is a simple averaged calculation, reducing computational error. Used for declination calculations.
get_mean_south_node_lon(time_)
Returns mean longitude of the Moon's South Node (descending node).
Parameters:
time_ (float)
Returns: (float) Longitude in degrees, range [0, 360). Equals North Node + 180°.
get_true_north_node_lon(time_)
Returns true longitude of the Moon's North Node with perturbation corrections.
Parameters:
time_ (float)
Returns: (float) Longitude in degrees, range [0, 360).
@note True node includes periodic perturbations but formula is low precision. Consider using mean node for consistency.
get_true_south_node_lon(time_)
Returns true longitude of the Moon's South Node with perturbation corrections.
Parameters:
time_ (float)
Returns: (float) Longitude in degrees, range [0, 360). Equals True North Node + 180°.
get_north_node_declination(time_)
Returns declination of the Moon's North Node.
Parameters:
time_ (float)
Returns: (float) Declination in degrees, range (bounded by obliquity).
@note Uses mean node for calculation (more consistent than true node).
get_south_node_declination(time_)
Returns declination of the Moon's South Node.
Parameters:
time_ (float)
Returns: (float) Declination in degrees. Inverse of North Node declination.
normalizeLongitude(lon)
Normalizes any longitude value to the range [0, 360) degrees.
Parameters:
lon (float) : (float) Longitude in degrees (can be any value, including negative or >360).
Returns: (float) Normalized longitude in range [0, 360).
string_to_planet(planetStr)
Converts a planet string identifier to Planet enum value.
Parameters:
planetStr (string) : (string) Planet name (case-insensitive). Supports formats: "Sun", "☉︎ Sun", "sun", "SUN"
Returns: (Planet) Corresponding Planet enum. Returns Planet.Sun if string not recognized.
@note Supported planet strings: Sun, Moon, Mercury, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune, Pluto
get_longitude(p, t, preferGeo)
Returns planetary longitude with automatic coordinate system selection.
Parameters:
p (series Planet) : (Planet) Planet to query.
t (float) : (float) Unix timestamp in milliseconds (use built-in 'time' variable).
preferGeo (bool) : (bool) If true, return geocentric; if false, return heliocentric.
Returns: (float) Longitude in degrees, normalized to range [0, 360).
@note Sun and Moon always return geocentric regardless of preference (heliocentric not applicable).
get_speed(p, t)
Returns planetary geocentric longitude speed (rate of change).
Parameters:
p (series Planet) : (Planet) Planet to query.
t (float) : (float) Unix timestamp in milliseconds (use built-in 'time' variable).
Returns: (float) Geocentric longitude speed in degrees per day. Negative values indicate retrograde motion. Returns na for Moon.
@note Speed is always geocentric (no heliocentric equivalent in library). Moon speed calculation not implemented.
get_avg6_geo_lon(t)
get_avg6_geo_lon
@description Returns the arithmetic average of the geocentric longitudes for the six outer planets: Mars, Jupiter, Saturn, Uranus, Neptune, and Pluto.
Parameters:
t (float) : (float) Time in Unix timestamp (milliseconds).
Returns: (float) Average geocentric longitude of the six outer planets in degrees, range [0, 360).
get_avg6_helio_lon(t)
get_avg6_helio_lon
@description Returns the arithmetic average of the heliocentric longitudes for the six outer planets: Mars, Jupiter, Saturn, Uranus, Neptune, and Pluto.
Parameters:
t (float) : (float) Time in Unix timestamp (milliseconds).
Returns: (float) Average heliocentric longitude of the six outer planets in degrees, range [0, 360).
get_avg8_geo_lon(t)
get_avg8_geo_lon
@description Returns the arithmetic average of the geocentric longitudes for all eight classical planets: Mercury, Venus, Mars, Jupiter, Saturn, Uranus, Neptune, and Pluto.
Parameters:
t (float) : (float) Time in Unix timestamp (milliseconds).
Returns: (float) Average geocentric longitude of all eight classical planets in degrees, range [0, 360).
get_avg8_helio_lon(t)
get_avg8_helio_lon
@description Returns the arithmetic average of the heliocentric longitudes for all eight classical planets: Mercury, Venus, Mars, Jupiter, Saturn, Uranus, Neptune, and Pluto.
Parameters:
t (float) : (float) Time in Unix timestamp (milliseconds).
Returns: (float) Average heliocentric longitude of all eight classical planets in degrees, range [0, 360).
is_retrograde(p, t)
Returns true if the planet is currently in retrograde motion (geocentric speed < 0) == 0 = stationary.
Parameters:
p (series Planet) : The planet to check.
t (float) : Time in Unix timestamp (milliseconds).
Returns: true if the planet is in retrograde, false otherwise. Library

Indicator
