SSTP tracks ten timeframe levels using two fundamentally different detection methods. Understanding how each works helps you interpret what the labels actually mean.
Two Detection Paradigms
Period-Based Detection
Eight timeframes use period accumulation: bars are collected until a period boundary is reached, then the completed period is classified.
The process:
- Accumulate bars as they arrive
- Track running high, low, open, close for the current period
- Detect when the period ends (hour boundary, week end, month end, etc.)
- Compare the completed period to the previous period
- Classify: Higher High, Lower Low, Outside Bar, Inside Bar, or False Outside Bar
- Apply swing detection rules
- If swing confirms (direction changed), place label at the bar where the extreme occurred
Count-Based Detection
Two timeframes use consecutive bar counting: watch for directional persistence, confirm the previous extreme when the count threshold is met.
The process:
- Classify each daily bar (up, down, inside, outside)
- Count consecutive bars in the same direction
- When the count reaches the threshold (2 or 3), confirm the previous opposite extreme as a swing
- Place label at the confirmed swing bar
Period-Based Timeframes
Intraday Periods (15-Minute, 1-Hour, 4-Hour)
These accumulate chart bars until the target duration is reached. The boundaries align to actual exchange times, not arbitrary bar counts.
Example: 4-Hour on a 1-Hour Chart
If exchange hours start at 9:30 AM:
- First 4-hour period: 9:30 AM – 1:30 PM
- Second 4-hour period: 1:30 PM – 5:30 PM
- And so on...
When four 1-hour bars complete, SSTP captures the period's OHLC (open, high, low, close) and classifies it against the previous 4-hour period.
Why exchange alignment matters:
Without it, your 4-hour periods would shift based on when you loaded the chart. With exchange alignment, the same 4-hour swing appears at the same bar regardless of when you opened TradingView. This ensures consistency and reproducibility.
<!-- IMAGE: sstp-4hr-alignment.png — 1-hour chart showing 4H labels at consistent exchange-aligned boundaries. Annotate two or three 4-hour periods with their start/end times. -->
4-Hour labels align to exchange boundaries, ensuring the same swings appear regardless of when the chart is loaded.
Daily
Daily periods follow trading day boundaries. On intraday charts, bars accumulate throughout the trading session until the day ends, then the daily period is evaluated as a single unit.
On a daily chart, each bar IS a daily period — no accumulation is needed. SSTP classifies bar-by-bar directly.
Weekly
Weekly periods accumulate daily bars until the trading week ends (typically Friday close for most markets).
What defines a "week":
- Standard markets: Monday open → Friday close
- Crypto/Forex: Sunday open → Friday close (or continuous for 24/7 markets)
When the trading week completes, the weekly period captures the week's high, low, open, and close, then classifies against the previous week.
Monthly
Monthly periods follow calendar month boundaries. Daily bars accumulate until the last trading day of the month, then the monthly period is evaluated.
Edge case handling:
- Partial months at chart start: SSTP waits for the first full month before classifying
- Holidays: Uses actual trading days, not calendar days — a month with 20 trading days and a month with 22 are both one "month"
Quarterly
Quarterly periods follow calendar quarters:
- Q1: January – March
- Q2: April – June
- Q3: July – September
- Q4: October – December
Three months of data accumulate, then the quarterly period is classified against the previous quarter. Quarterly swings are among the most significant structural turning points the indicator detects — they represent major shifts in market direction.
Yearly
Yearly periods follow calendar years. Twelve months of data accumulate, then the yearly period is classified against the previous year.
On long-term charts, yearly swings reveal the biggest structural turning points — bull market peaks, bear market bottoms, multi-year ranges. These are rare events (markets might produce only 10–15 yearly swings across several decades), but each one marks a major inflection.
<!-- IMAGE: sstp-yearly-swings.png — Monthly chart showing Y labels at major yearly turning points over 10+ years of data. Annotate with dates to show how rare yearly swings are. -->
Yearly swings on a monthly chart — rare but structurally significant turning points marking major market inflections.
Count-Based Timeframes
The Gann Multi-Day Methodology
W.D. Gann's swing charting rules include a concept often called "2-day" and "3-day" swings. Instead of waiting for a calendar period to complete, these methods count consecutive directional daily bars.
The principle: When price moves persistently in one direction for multiple days, the previous extreme in the opposite direction becomes more significant. The count threshold determines how much persistence is required before confirming the swing.
2-Day Swings
Confirms swings after 2 consecutive directional bars.
How it works:
- Watch each daily bar's classification
- An "up bar" has both a higher high AND higher low than the previous bar
- A "down bar" has both a lower high AND lower low than the previous bar
- When 2 consecutive up bars occur, the previous down extreme confirms as a swing low
- When 2 consecutive down bars occur, the previous up extreme confirms as a swing high
Inside bars are invisible to the count — they don't break a consecutive sequence and don't count toward it. If an inside bar appears between two up bars, the sequence is still intact. The count simply pauses until the next directional bar.
Example sequence:
Bar 1: Down bar (lower high, lower low)
Bar 2: Down bar (lower high, lower low) ← 2 consecutive down
→ Previous high confirmed as swing high, label placed
Bar 3: Up bar (higher high, higher low)
Bar 4: Inside bar (ignored, doesn't break count)
Bar 5: Up bar (higher high, higher low) ← 2 consecutive up
→ Previous low confirmed as swing low, label placed
2-Day swings require two consecutive same-direction bars before confirming the previous opposite extreme.
3-Day Swings
Confirms swings after 3 consecutive directional bars.
Same logic as 2-Day, but requires more persistence. This filters out minor fluctuations and shows only swings with stronger directional commitment.
When to use each:
- 2-Day: More responsive, shows smaller structural swings within the daily rhythm
- 3-Day: More filtered, shows only significant directional moves that persisted for three or more sessions
Both can run simultaneously on the same chart with different colors, revealing nested swing structure within the daily timeframe — similar to how SSI PRO users run multiple swing periods to see "wheels within wheels."
Gann's Exception Rule
An optional rule that affects 2-Day and 3-Day detection only. When enabled, if price exceeds a prior swing extreme before the required consecutive bar count is met, the swing is marked early.
Example (3-Day, Exception Rule ON):
- Downtrend established with a swing low at 100
- Market rallies: up bar, up bar (two consecutive — not yet three)
- Third bar gaps up, makes a new high at 115 (exceeding the prior swing high), but closes lower (not a third up bar)
- Without Exception Rule: the rally to 115 is invisible — three consecutive up bars were never completed
- With Exception Rule: the 115 high is captured because it exceeded the prior swing extreme
The Exception Rule captures range that strict counting would miss. It's most valuable on volatile instruments where fast breakouts don't always produce clean consecutive bar sequences.
Setting: Gann's Exception Rule (MD) — On/Off, default Off. Located in Core Settings (Group ②).
Daily Chart Only
Count-based detection only makes sense on daily charts. On intraday charts, "consecutive daily bars" has no meaning — you'd need the daily bar to complete first, which defeats the purpose.
When you're on a daily chart, 2-Day and 3-Day appear as options in the Timeframes settings. On any other chart timeframe, they're automatically hidden.
Classification Rules
Both detection methods use the same underlying classification once a period or bar is ready to evaluate. This classification uses true AND logic — both the high and the low must confirm the direction:
Higher High (HH)
- High is higher than the previous period's high
- Low is at or above the previous period's low
- Both conditions must be true — this is an unambiguous up move
Lower Low (LL)
- High is at or below the previous period's high
- Low is lower than the previous period's low
- Both conditions must be true — this is an unambiguous down move
Outside Bar (OB)
- High is higher than the previous period's high
- Low is lower than the previous period's low
- Price moved in both directions — ambiguous, requires resolution
Inside Bar (IB)
- High is at or below the previous period's high
- Low is at or above the previous period's low
- Price stayed contained — no decision, state frozen until the next directional bar
False Outside Bar
- Meets the Outside Bar criteria (exceeded both extremes)
- But the closing price doesn't confirm the breakout direction
- Marked with distinct visual treatment when "Mark False OBs" is enabled in Core Settings
The AND logic distinction matters. Many swing indicators use OR logic — calling a bar "up" if it makes a higher high OR a higher low. This creates ambiguity. SSTP requires both conditions, eliminating false signals from bars that moved in conflicting directions.
OB Continuation Mode
Outside Bars create a problem: price exceeded both extremes, so which direction counts? SSTP offers three configurable approaches, set globally for all timeframes in Core Settings (Group ②):
Mark as Continuation (Default)
The OB extends the current trend direction first, then reverses. This produces a conservative interpretation — the trend is assumed to continue through the OB before a new swing begins.
This is the traditional, most conservative approach. It produces fewer swing signals and captures the full OB range as part of the existing move.
Mark as Reversal
The OB immediately reverses the current trend. This produces an earlier, more aggressive signal — the swing changes direction at the OB itself rather than after it.
This mode creates earlier turning points but may react to OBs that don't lead to sustained reversals.
Skip Entirely
Outside Bars are ignored for swing detection purposes. Only clear directional bars (HH or LL) are counted. OBs are treated as noise.
This produces the cleanest, most filtered swing structure with the fewest turning points.
All three modes produce valid swing structures. The difference is how much detail you want and how conservatively you want swings detected.
State Isolation
Each of the 10 timeframes maintains completely independent state:
- Its own swing detection state (current trend direction, last confirmed swing type)
- Its own OB resolution state (pending OBs, prior trend direction)
- Its own accumulation data (running OHLC for the current period, bar count)
- Its own label array (for dynamic window management)
This isolation ensures that activity in one timeframe never affects another. A Weekly swing confirming has no impact on Monthly detection, and vice versa. A 2-Day swing completing doesn't influence the 3-Day count.
This is why you can see different timeframes showing different trends simultaneously — the Weekly may be trending up while the Monthly is still trending down. Each timeframe reflects its own structural reality.
Boundary Detection
How the indicator knows when a period has ended depends on the timeframe type:
Calendar-Based (Monthly, Quarterly, Yearly)
Uses actual calendar boundaries detected on every bar:
- Month change: When the month of the current bar differs from the previous bar
- Quarter change: When the month crosses a quarter boundary (Mar→Apr, Jun→Jul, Sep→Oct, Dec→Jan)
- Year change: When the year of the current bar differs from the previous bar
Time-Based (15-Minute, 1-Hour, 4-Hour, Daily, Weekly)
Uses time-in-seconds calculations aligned to exchange schedules:
- 15-Minute: Every 900 seconds of accumulated session time
- 1-Hour: Every 3,600 seconds
- 4-Hour: Every 14,400 seconds
- Daily: Trading day boundary (market-specific — different for NYSE vs. CME vs. crypto)
- Weekly: End of the trading week (typically Friday close)
The key insight: boundaries are detected on every bar by checking actual timestamps, not assumed from bar counts. This correctly handles holidays, half-days, irregular sessions, and markets with different schedules. The same boundaries are detected regardless of when you load the chart.
Which Timeframes Should I Enable?
There's no universal answer — it depends on your analysis horizon. Here are common starting points:
Swing traders typically use the defaults: Weekly, Monthly, and Quarterly. These capture the major turning points that define medium-to-long-term structure.
Day traders working intraday charts often enable 15m, 1H, 4H, and Daily. These reveal short-term structure within a single session and across recent days.
Cycle analysts may enable all 10 to study how turning points nest across the full hierarchy — from intraday through yearly.
Multi-day analysts benefit from enabling 2D and 3D alongside Daily on a daily chart. These count-based timeframes catch directional persistence that calendar-based daily detection handles differently.
Gann practitioners typically enable 2D or 3D with Gann's Exception Rule, plus W and M for higher timeframe context.
Start with fewer timeframes and add more as you need them. Enabling too many at once can clutter the chart — though the label stacking system handles overlap cleanly. The defaults (Weekly, Monthly, Quarterly) are a solid starting point for most users.
Next Steps
- Labels & Display — How labels stack and how to customize their appearance
- Tooltips & Metrics — The analytical detail available when hovering over any label
- X-Ray Mode — Visualize the classification structure behind the swings
- Settings — Full reference for enabling and configuring timeframes