Feature guide · 7 min read
Sunrise Zones
For each enabled city the engine finds the local civil sunrise every trading day and marks the high/low of the minute it lands in, projected forward with an EQ midpoint line.
- Settings toggle
- Enable Sunrise Zones
- NinjaTrader 8 name
- ToredaSunriseZones
- Ships enabled
- Yes
What it does
For each enabled city, the indicator computes the local civil sunrise time every trading day and marks a sunrise zone: the high and low of the 1-minute bar in which that sunrise occurs, projected forward for the city's Keep Days, with an EQ (midpoint) line and a day-age counter.
Detection runs on its own added 1-minute series, so the zone resolves to the true sunrise minute no matter what period your chart is on. A 15-minute chart gets the same zone a 1-minute chart does.
Zone anatomy
Every zone is a band, not a line. The EQ line through the middle is the 50% level of that band, and it is where price most often reacts inside the zone.
Zone strength
Each zone also records how much was actually traded in its sunrise minute, so you can tell a zone worth watching from one that formed in dead air:
- Volume — the sunrise bar's volume.
- RVOL — that volume divided by the average 1-minute volume over the RVOL Lookback bars before it. Dividing through makes cities in very different liquidity comparable to each other.
- Retests — a live count, incremented each time a chart bar overlaps the zone after the previous bar closed fully outside it.
The optional stats table shows, per enabled city: sunrise time in the session timezone, High, Low, Range, Volume with its RVOL multiple, and Retests — always for that city's newest zone. The volume cell is tinted in the city color once RVOL clears the highlight threshold.
Cities
18 preset cities plus 4 custom lat/lng slots. Each has its own Enabled, Color, Sunrise Offset and Keep Days inputs, grouped into Day Sun Cities and Night Sun Cities sections in the dialog.
The seven cities on by default are the Day Sun beginner preset — the day-flow sequence TLV → FRA → LON → RIO → NYC → CHI → SFO. Custom slots add Name, Latitude and Longitude; their timezone is approximated from longitude at 15° per hour.
| City | Abbrev | Default | City | Abbrev | Default |
|---|---|---|---|---|---|
| New York | NYC | On | London | LON | On |
| Frankfurt | FRA | On | Chicago | CHI | On |
| S. Francisco | SFO | On | Rio | RIO | On |
| Tel Aviv | TLV | On | Tokyo | TYO | Off |
| Dubai | DXB | Off | Auckland | AKL | Off |
| Miami | MIA | Off | Reykjavik | REK | Off |
| Singapore | SIN | Off | Hong Kong | HKG | Off |
| Shanghai | SHA | Off | Sydney | SYD | Off |
| Toronto | TOR | Off | Dallas | DAL | Off |
When each zone forms
Because a sunrise zone is minted at local sunrise, each city drops its zone at a different point in your trading day. These are the two beginner presets in the dialog, with roughly when each one lands in Eastern Time.
These times are a snapshot, not a schedule
The figures below are approximate Eastern Time for 9 September 2026. Sunrise moves every day — typically by about a minute — and DST changes shift it by a full hour, so treat these as a guide to when a city's zone tends to land rather than as fixed times.
| 🌙 Night Sun city | Approx. sunrise (ET) |
|---|---|
| Auckland | 2:31 PM |
| Tokyo | 4:19 PM |
| Hong Kong | 6:08 PM |
| Singapore | 6:58 PM |
| Dubai | 10:02 PM |
| Tel Aviv | 11:21 PM |
| ☀️ Day Sun city | Approx. sunrise (ET) |
|---|---|
| Frankfurt | 12:51 AM |
| London | 1:25 AM |
| Rio de Janeiro | 4:56 AM |
| New York | 6:31 AM |
| Chicago | 7:24 AM |
| San Francisco | 9:46 AM |
The seven cities in bold are the ones enabled out of the box. Read them in order — Tel Aviv, Frankfurt, London, Rio, New York, Chicago, San Francisco — and you have the day-flow sequence: each zone forms a little later than the last, so the chart fills in from overnight through to the US afternoon.
Start simple, add cities as you learn
Seven zones is already a busy chart. The remaining presets are there for when you want coverage of a particular session — turn them on one at a time rather than all at once.
Inputs
| Input | Default | Meaning |
|---|---|---|
| Zone Opacity | 86 | Fill transparency. 0 = solid, 100 = invisible. |
| Zone Border | On | Outline each zone in its city color. |
| Show EQ Line / EQ Line Style | On / Dashed | Midpoint line through each zone. |
| Show Day Counter | Off | Age label (1 = sunrise day) at the right edge of each zone. |
| Label Offset (minutes) | 25 | How far past the last bar the day counter sits. |
| Session Timezone | America/New_York | Timezone for the stats-table sunrise times. |
| Daylight Saving Time | On | Sunrise in each city's DST-aware local time. Off uses the standard offset year-round, which shifts DST-observing cities by an hour in summer. |
| Strength on Day Counter | Off | Adds a second line to each counter: volume, RVOL and retests. |
| Show Sunzone Labels | On | Live-edge mode: each zone is cut off just past its counter and ends in a city-name chip. Off gives classic zones spanning the full Keep Days. |
| Label Buffer (minutes) | 2 | Gap between a zone's live-edge end and its name chip. |
| Auto Label Background / Label Background | On / #000000 | Chip background: the zone's own fill, or a fixed color. |
| Strength on Zone Name Chips | Off | Adds the strength line to each name chip. Needs Show Sunzone Labels. |
| Draw Visuals | On | Master drawing switch. |
Stats table inputs
| Input | Default | Meaning |
|---|---|---|
| Show Table / Position / Text Size | Off / BottomRight / Small | Table placement and font. |
| RVOL Lookback (1m bars) | 20 | Bars of 1-minute volume averaged as the RVOL baseline. |
| RVOL Highlight Threshold | 1.5 | Volume cell is tinted in the city color at or above this RVOL. |
Per-city inputs
| Input | Default | Meaning |
|---|---|---|
| Enabled | Varies | Whether this city draws a zone. |
| Color | Per city | The zone fill, border, EQ line and name chip color. |
| Sunrise Offset (sec) | 0 | Shifts the detected sunrise moment for this city. |
| Keep Days | 12 (max 20) | How long this city's zones stay on the chart. |
Adding it to a chart
- Right-click the chart → Indicators… → find ToredaSunriseZones, click Add, set the inputs, click OK.
- Color inputs shown as #RRGGBB are typed as hex text, e.g. `#6FA8DC`. An invalid value falls back to a default and prints a note in the NinjaScript Output window rather than failing the indicator.
- Give it history. Zones appear only once a sunrise has been seen on the 1-minute series, so load at least a couple of days of data. Cities whose sunrise falls outside your instrument's session simply produce no zone that day.
- Enable more cities in their city groups as needed. Each enabled city costs one sunrise calculation per minute bar, which is cheap.
Notes and limitations
- The name-chip buffer is measured in minutes rather than pixels, so it reads as more bars on faster charts.
- Retests count once per closed chart bar, so the count depends on your chart period.
- A city whose timezone or color fails to resolve is disabled on its own with a note in the Output window. The other cities keep working.
For strategy builders
NinjaTrader 8 only
The plots below are the NinjaScript surface the NT8 build exposes to the Strategy Builder. Every plot is registered transparent, so it changes nothing on a chart until you color it in the indicator dialog. Levels are NaN when there is no value — never 0, which would compare as a real price — and flags are 1/0.
Only seven inputs are reachable from the Strategy Builder: City Roster, Focus City, Session Timezone, Daylight Saving Time, RVOL Lookback, Keep Days Override and Draw Visuals. City Roster (`"NYC,LON,…"`, blank = use the per-city toggles) and Keep Days Override (0 = use each city's own) exist so the Builder never has to touch the 88 per-city inputs.
| Plot | Meaning |
|---|---|
| FocusZoneHigh / Low / Eq | Newest zone of the city named in Focus City. All NaN when that input is blank, unknown, disabled, or the city has no live zone. |
| FocusZoneAgeDays | Whole city-local days since that zone was minted (0 = today). |
| FocusZoneRetests | Its re-entry count. |
| FocusZoneRvol | Its sunrise-bar RVOL. |
| NearestZoneHigh / Low / Eq | The zone nearest to price across all enabled cities. A zone containing price wins outright. |
| NearestZoneDistanceTicks | Signed ticks from price to that zone: + above, − below, 0 inside. |
| NearestZoneAgeDays / Retests / Rvol | The same three measures for the nearest zone. |
| NearestZoneCityIndex | Its city slot, 0–21, comparable against a literal. |
| InAnyZone | 1 while price is inside any live zone of any enabled city. |
| NewZoneSignal | 1 on the first chart bar after any enabled city mints a zone. |
| RetestSignal | 1 on any bar where a zone's retest count incremented. |
This content is for educational purposes only and is not financial advice. Trading involves substantial risk of loss. See our risk disclosure for details.