Holidays v1
1. Overview
Holidays — marks trading halts at the world's major stock exchanges directly on the PulseWire chart. For each configured holiday, a colored background block spans the full calendar day. At the bottom of the chart, auto-sizing labels display the holiday name and the flag emojis of all affected exchanges.
At a glance, you can see whether one or more markets are closed on any given day — critical information for assessing liquidity conditions, spread behavior, and correlation reliability across instruments.
Key Features
8 pre-configured exchanges with verified 2026 holiday data
10 freely assignable custom slots for user-defined holidays or events
Every holiday individually toggleable — enable only what you need
Per-exchange color and configurable session duration (default: full 24h calendar day)
Smart label merging: when multiple exchanges share the same holiday on the same day (e.g. New Year's Day), a single label shows the holiday name with all country flags combined
Labels at chart bottom with automatic round-robin stacking across 4 rows — no overlap, no text truncation
Info table showing active and upcoming holidays, color-coded by exchange, with flag and date columns
Three independent visibility toggles: background blocks, labels, and info table can each be shown or hidden separately
Works for past AND future dates (box.new with xloc.bar_time)
Visible chart range detection: label positions recalculate automatically when scrolling or zooming
2. Smart Label Merging & Stacking
Many major holidays — such as New Year's Day, Good Friday, or Christmas — are observed simultaneously by multiple exchanges. Without merging, these would produce 5-8 overlapping labels on the same day.
How Merging Works
The indicator groups all holidays by date AND name. When multiple exchanges have the same holiday on the same day, they are merged into a single label:
Line 1: Holiday name (e.g. 'New Year's Day')
Line 2: Combined flag emojis of all affected exchanges (e.g. '🇺🇸 🇬🇧 🇨🇦 🇩🇪 🇯🇵 🇨🇳 🇦🇺 🇰🇷')
Different holidays on the same day (e.g. JP Greenery Day and KR Children's Day on May 4/5) remain as separate labels and are stacked vertically.
Round-Robin Row Stacking
Labels are distributed across 4 rows at the bottom of the chart using a round-robin pattern: label 1 goes to row 1, label 2 to row 2, label 3 to row 3, label 4 to row 4, label 5 back to row 1, and so on. This guarantees that no two adjacent labels share the same vertical position, regardless of how closely spaced the holidays are in time.
The vertical spacing between rows scales automatically with the visible price range — when you zoom in, rows spread further apart; when you zoom out, they compress proportionally.
3. Supported Exchanges
The indicator includes pre-filled and verified holiday data for eight exchanges. Each exchange group has its own color, a master enable toggle, and a configurable session duration (default: 24 hours = full calendar day).
Holidays (Configurable session duration)
Default: full calendar day (24h)
🇺🇸
USA — NYSE / NASDAQ
Holidays: 9
🇬🇧
London — LSE
Holidays: 8
🇨🇦
Canada — TSX
Holidays: 8
🇩🇪
Germany — Xetra
Holidays: 7
🇯🇵
Japan — TSE
Holidays: 8
🇨🇳
China — SSE
Holidays: 7
🇦🇺
Australia — ASX
Holidays: 8
🇰🇷
South Korea — KRX
Holidays: 7
★
Custom (10 slots)
Freely configurable
4. Settings
All settings are accessible via the gear icon next to the indicator name in the chart legend, or by right-clicking the indicator and selecting 'Settings'.
4.1 Style Settings
Background Opacity
Transparency of the background blocks. 0 = fully opaque, 100 = invisible. Default: 85.
Border Color
Color of the outline drawn around each holiday block.
Border Style
Line style of the outline: Solid, Dashed, Dotted, or None.
Border Width (px)
Thickness of the outline in pixels (0–4).
Show Background Blocks
Toggle the full-height colored background blocks on/off. Can be disabled while keeping labels and/or table visible.
Show Block Labels
Toggle the holiday name labels at the bottom of the chart on/off.
Label Font Size
Font size for labels: Tiny, Small, Normal, Large.
Label Text Color
Text color of the bottom labels.
Label Background Transparency
Transparency of the label background. Uses the exchange color. 0 = opaque, 100 = invisible.
Show Info Table
Toggle the info table on/off. Works independently of blocks and labels.
Table Position
Corner of the chart: Top Right, Top Left, Bottom Right, Bottom Left.
Table: max upcoming rows
Maximum number of upcoming holidays in the table. Active holidays always shown additionally.
Table Font Size
Font size: Tiny, Small, Normal, Large.
Table Border Color
Grid line and frame color of the table.
Table Background Color
Background color of the table frame.
Table Upcoming Row Transparency
Transparency of upcoming (not yet active) holiday rows. Active rows always at 30%.
4.2 Per-Exchange Settings
Each of the eight exchanges has its own settings group:
✓ Enable Group: Enable or disable all holidays for this exchange.
Color: Color used for background blocks, labels, and table rows.
Session hours: Duration of the holiday highlight (default: 24h = full calendar day). Can be reduced to show only the actual trading session if desired.
Below these, each individual holiday has a checkbox (enable/disable) and a date/time input.
4.3 Custom Holidays
The '▼ Custom Holidays' group provides 10 free slots. Each slot has a checkbox, a name field, and a start timestamp. Custom slots share a common session duration setting.
5. The Info Table
The info table displays active and upcoming holidays in a compact, color-coded format.
Table Structure
Column 1 (Flag): Country flag emoji or ★ for custom holidays
Column 2 (Holiday): Holiday name with exchange prefix (e.g. 'GB Early May BH')
Column 3 (Date): Date in UTC (format: MMM dd)
Display Logic
Active holidays: strong exchange color, white text
Upcoming holidays (within 90 days): dimmed exchange color at configurable transparency
Maximum N upcoming entries shown (configurable), active holidays always additional
Entries sorted chronologically by date
6. Three Independent Visibility Toggles
The indicator provides three separate toggles in the Style Settings, allowing you to show exactly what you need:
Toggle & What it controls:
Show Background Blocks
Full-height colored blocks spanning the entire price range. Provides an immediate visual cue that a holiday is in effect.
Show Block Labels
Auto-sizing labels at the chart bottom showing the holiday name and country flags. Labels use round-robin row stacking to prevent overlap.
Show Info Table
Compact table listing active and upcoming holidays. Can serve as the sole holiday indicator when blocks and labels are disabled.
Example combinations: table-only mode for a clean chart with minimal visual clutter; blocks-only for quick visual scanning without text; all three enabled for maximum information density.
7. Technical Notes
7.1 Visible Range Detection
The indicator tracks the visible price range using chart.left_visible_bar_time, which triggers a recalculation whenever the user scrolls or zooms. The lowest and highest visible prices are computed incrementally using var float variables — no ta.lowest or ta.highest with series length, avoiding Pine's historical buffer allocation issues entirely.
7.2 Past and Future Display
Holiday blocks use box.new() with xloc=xloc.bar_time, which is not limited to historical bars. Holidays are rendered correctly for future dates as soon as the corresponding time range is visible on the chart axis.
7.3 Performance and Limits
Up to 500 boxes and 500 labels (configurable via indicator declaration)
All drawing objects redrawn only on barstate.islast — no performance impact on historical bars
Holiday data stored in global arrays to stay within Pine v6's 254-element-per-function limit
8.4 Holiday Data
All pre-filled dates refer to 2026 and have been verified against official exchange calendars from NYSE/ICE, LSE, TSX, Xetra/Deutsche Börse, JPX, SSE, ASX, and KRX. All timestamps are set to 00:00 UTC with a default duration of 24 hours, marking the full calendar day. For subsequent years, dates must be updated manually.
8. Use Cases
Liquidity Analysis
On days when multiple exchanges are simultaneously closed — Good Friday affects NYSE, LSE, TSX, Xetra, and ASX — the merged label shows all five flags at once, and the overlapping background blocks create a visually darker zone. This signals exceptionally thin market liquidity.
Forward Planning
The info table lists upcoming holidays chronologically. Traders can identify well in advance when reduced activity is expected — useful for position sizing, stop placement, and avoiding entries before liquidity gaps.
Custom Event Marking
The 10 custom slots can mark FOMC meetings, ECB rate decisions, NFP releases, or any other scheduled events using the same visual system.
If you have questions just contact me or put your ideas or wishes in the comments.
Indicator



