Create your own
Lesson illustration

Two-Ledger Swing Hierarchy and Protected Swing Identification

Good to see you again. You now have a fixed bar-by-bar classification rule: P2 establishes when a pivot is knowable, D5 tests whether it displaced meaningfully, and B20 determines whether it earned external promotion. The remaining problem is organizational: once a leg has been confirmed, how do you map the smaller swings inside it without quietly rewriting what you knew in real time?

This lesson gives you a two-ledger structure map for one timeframe. It will let you distinguish the current protected swing from ordinary internal pivots, while retaining an auditable record of every later annotation. Plan for roughly 30–35 minutes, including about five minutes of video.


Two clocks: the price event and the information event

A structure chart has two valid ways to describe the same price point:

  1. Event time: when the wick actually made the high or low.
  2. Information time: when your rules allowed you to assign a status to it.

That distinction matters even after an external leg is obvious. If an internal high occurred halfway through a bullish impulse, but its P2 confirmation arrived only two bars later, it was not an available confirmed internal high at the original wick. Likewise, if it later appears inside a newly confirmed external leg, that is a retrospective containment fact, not a signal that existed at the time.

A daily XRP/USD chart whose labels distinguish historical and confirmed bars from the latest bar. The image illustrates that a bar’s processing state is separate from its later structural interpretation.
A five-second LTC/USD chart showing the last bar updating in real time and then becoming confirmed. A completed candle is necessary for your P2, D5, and B20 rules, but confirmation of a candle alone does not make it a structural swing.

Do not confuse these two statements:

  • “This candle is confirmed” means its OHLC values are no longer changing.
  • “This is a confirmed external swing” means P2, D5, and B20 have all been satisfied at their respective completed-bar times.

The first is a platform/data condition. The second is your structure-contract conclusion.

A clean hierarchy must therefore preserve as-of labels. A chart annotation made later can be useful, but it cannot overwrite the label that was valid at the earlier close.


The two-ledger model

Use one pair of ledgers for each chart contract and timeframe. For now, that means a separate pair for your 1D, 4H, 1H, or 15-minute chart; do not place a 15-minute pivot inside a 1H ledger merely because it is visually located between two 1H swings.

The two ledgers have different jobs:

LedgerContainsMain purpose
External ledgerConfirmed external swings, their promotion breaks, and the active protected swingDefines the current external framework and its invalidation level
Internal ledgerP2 candidates and confirmed pivots occurring within, or potentially within, that frameworkRecords the smaller swings and internal rotations without granting them external status

The key rule is simple:

The external ledger owns the framework. The internal ledger describes the motion inside that framework.

A P2-confirmed pivot initially belongs in the internal ledger. If it later passes D5 and B20, create an external-ledger record and cross-link the two records. Do not delete the internal record. Its history is evidence of how the conclusion became available.

This is less like drawing a perfect swing line and more like maintaining an event log. The chart is a visualization of the log, not the other way around.

Minimum external-ledger fields

External ID:
Timeframe and contract version:
Direction: bullish-origin low / bearish-origin high
Pivot event time and wick price:
P2 recognition time:
D5 result and time:
Reference external level broken:
B20 promotion bar and close:
Current state: active / superseded / under review
Protected status: yes / no

For an externally confirmed bullish low, the pivotal fields are:

  • the original low’s wick and timestamp;
  • the later P2 recognition;
  • the D5 bar;
  • the B20-qualified break above the prior external high.

Those are four different observations, often occurring on four different bars.

Minimum internal-ledger fields

Internal ID:
Timeframe and contract version:
Direction: high / low
Pivot event time and wick price:
Candidate first observed at:
P2 recognition time:
Observed status at recognition:
Parent framework at recognition:
Later containment annotation:
External-promotion link, if any:
Current role: internal / pending external outcome / promoted

The particularly important columns are “parent framework at recognition” and “later containment annotation.” They answer different questions:

  • Parent framework at recognition: What external context was actually confirmed when this pivot became knowable?
  • Later containment annotation: Where does the pivot sit on the completed historical map?

Never merge those fields.


Partitioning an external leg into internal swings

The phrase “everything between the external high and low is internal” is a helpful visual shortcut, but it needs operational detail to work in replay.

Matt Donlevey’s explanation uses that visual convention: once the larger swing boundaries are set, the fluctuations between them are internal. Use it here as a chart-reading aid, while retaining your stricter P2–D5–B20 contract for recognition and promotion.

How To Understand Market Structure | FOREX | SMC (Part 1)

Watch “How To Understand Market Structure | FOREX | SMC (Part 1)” from Matt Donlevey - Photon Trading for a visual distinction between the larger swing range and smaller internal movements. The terminology is discretionary, so treat the video as an illustration of hierarchy rather than a replacement for your fixed rules.

Watch swing boundaries, where the larger high and low define what is internal between them. Then watch strong and weak swings for the intuition that a meaningful swing is judged by the structural consequence it produced. In your journal, use the precise term protected, defined below, rather than relying on subjective “strong” or “weak” labels.

Define the active external leg precisely

Under your baseline contract, a bullish external leg becomes confirmed when a pivot low:

  1. satisfies P2;
  2. produces D5 bullish displacement;
  3. produces the B20-qualified close above the relevant confirmed external high.

The promoted pivot low is the origin of that confirmed bullish external leg. The B20 breakout bar proves the leg’s external significance. After that break, the leg may continue extending to new provisional highs; those highs remain provisional until the rules later justify a different status.

For a confirmed bullish external leg:

  • The origin boundary is the promoted external low.
  • The live upper boundary is the current provisional upper range extreme.
  • Every smaller P2 pivot that does not receive external promotion is an internal swing.
  • The original external low is a boundary, not an internal child swing.

The bearish version is symmetric:

  • The promoted external high is the origin boundary.
  • The current provisional lower range extreme is the live lower boundary.
  • Smaller non-promoted pivots are internal.

A robust containment rule

When reviewing a completed segment, assign a confirmed P2 pivot as an internal child of an external leg only when all of the following are true:

  1. Its pivot event occurs after the external origin pivot.
  2. It has P2 confirmation.
  3. It has not itself been promoted to an external swing.
  4. It lies within the time span of that external leg on the same timeframe.

This makes the hierarchy readable. But it does not authorize historical rewriting.

Suppose an internal high prints before the B20 promotion that creates a new bullish external leg. At the time that internal high receives P2 confirmation, the new bullish leg does not yet exist as a confirmed object. Therefore:

  • In the live record, its parent is the then-current external framework.
  • After the B20 break, you may add the annotation: “Retrospectively contained within bullish leg .”
  • You may not write “internal high of ” as though were known at the original recognition time.

This is the exact point at which many clean-looking post-trade SMC charts become unreliable.


The protected swing: one level, one job

“Protected low” and “protected high” are often used loosely. For your contract, make the term narrow and testable.

Protected-swing rule

Current external stateProtected swingWhat it means operationally
BullishThe most recent confirmed external low that produced the active bullish external legA qualifying bearish break through this low is required before the bullish external framework can be retired
BearishThe most recent confirmed external high that produced the active bearish external legA qualifying bullish break through this high is required before the bearish external framework can be retired

The protected swing is not:

  • the most recent minor higher low in a bullish move;
  • the nearest visually appealing order-block-style candle;
  • any wick that “looks defended”;
  • a level removed merely because price wicked through it once.

Under the current contract, it remains protected until an opposite-direction break meets the same kind of predeclared qualification that you use for external promotion. The next module will give a more exact vocabulary for that break, including wick-through, close-through, displacement, and CHoCH state. For this lesson, the important discipline is: do not replace or retire the protected level because of an internal fluctuation.

Justin Bennett’s chart-marking example reinforces why labeling internal and external events differently prevents confusion. It is useful visually, but its interpretation still needs your own contract-defined thresholds.

Why Your SMC Trades Fail (Internal vs External Structure)

Watch the short internal-versus-external labeling example from Justin Bennett’s “Why Your SMC Trades Fail (Internal vs External Structure).” It shows why a chart needs visibly distinct labels for structure at different levels.

Watch separate labels. Focus on the claim that swings between broader boundaries are internal and on the practical benefit of marking internal and external breaks differently. Keep your own P2–D5–B20 definitions as the decision rule; the video does not test those definitions statistically.

When does the protected level change?

In a bullish state, a new internal higher low does not replace the protected low. It may be relevant for an execution setup, but it has not earned external authority.

Replace the protected low only when a later pivot low itself completes the full external-promotion process:

  • P2 confirms the pivot;
  • D5 confirms meaningful bullish displacement;
  • B20 confirms the qualifying break of the applicable external reference.

At that later promotion bar, the new external low becomes protected, and the former one becomes superseded, not “wrong.”

This distinction resolves a common confusion:

A higher low can be useful internally without being the low that protects the external bullish thesis.


Worked example: an auditable bullish hierarchy

Assume a 1H chart under the same P2–D5–B20 contract from the previous lesson.

  • Existing confirmed external high:
  • Pivot low at , on bar
  • A B20-qualified bullish close later occurs at
  • The breakout occurs within the 20-bar deadline

What the external ledger records

TimeInformation available thenExternal-ledger action
Bar is below the prior two lowsNo external record yet; the low is only a candidate in the internal ledger
Close of Two subsequent bars have higher lowsStill no external record; P2 confirms a pivot low
Bar A bullish candle satisfies D5Record that the pivot is pending external outcome
Bar Close at meets B20 above the referenceCreate external record : confirmed external low at ; mark it protected
Later barsPrice extends above Update only the provisional upper range extreme

At bar , the external ledger gains a new confirmed object:

E15
Direction: bullish-origin low
Pivot wick: 95.00 at bar p
P2 recognition: close of p+2
D5 passed: p+3
B20 promotion: p+8, close 100.75
Protected: yes
State: active

The fact that price may print , , or higher after does not by itself create a newly confirmed external high. Those are updated provisional range extremes.

What the internal ledger records

Now add two smaller pivots.

Internal IDPivot eventP2 recognizedReal-time recordLater annotation
High at on Confirmed P2 pivot high; external outcome not earnedContained within the bullish leg rooted at
Low at on Confirmed P2 pivot low after is known; internal unless separately promotedInternal higher low within the active leg

Notice the asymmetry:

  • was confirmed before the B20 promotion of . In a real-time journal, it could not have been labeled as part of the confirmed leg yet.
  • was confirmed after the B20 promotion, so its recognition-time parent can legitimately be the active bullish leg.

Your historical chart may visually place both pivots under the leg. That is acceptable only if the journal preserves the different recognition histories.

The protected-level conclusion

Even though is a higher low at , the protected low remains , because is the confirmed external low that generated the qualifying external outcome.

A correct chart summary would read:

External state: bullish
Protected low: 95.00, E15
Current upper extreme: 101.20, provisional
Internal pivots: I31 high at 97.20; I32 low at 96.60

An incorrect summary would read:

Protected low: 96.60 because it is the latest higher low

That second statement confuses local internal behavior with externally validated structure.


Separate original labels from retrospective annotations

Use these two fields in every record:

FieldRule
Observed statusImmutable. It states what your rule allowed at that bar close.
Retrospective annotationAdditive. It describes later context, containment, promotion, or outcome.

For example:

Pivot: 97.20 high at 14:00
Observed status at 16:00: P2-confirmed pivot high
Observed status at 17:00: D5 did not qualify
Final structural role: internal pivot
Retrospective annotation at 22:00: contained in E15 bullish leg

The annotation is allowed because it says when it was added and does not pretend the conclusion existed earlier.

By contrast, avoid chart labels such as:

Internal high of E15 at 14:00

unless your annotation convention clearly displays the later date of assignment. Otherwise, that label implies that was already a confirmed framework at 14:00.

A practical naming convention is:

  • RT for the real-time, immutable label;
  • RA for the retrospective annotation.

For instance:

RT-16:00: P2 pivot high
RA-22:00: contained in E15

This is deliberately plain. The goal is not elegant markup; it is a replay record that survives skepticism.


A fast charting workflow

When you open one of your 1H charts, use the following workflow at each completed bar:

  1. Update the internal ledger first.
    Add new candidates, confirm eligible P2 pivots, and record whether D5 or B20 deadlines are pending, passed, or failed.

  2. Check the external ledger second.
    Ask whether any pending pivot has just met B20. If yes, create a new external record at the current bar, while retaining the original pivot timestamp.

  3. Update the protected flag.
    If a new bullish external low has been promoted, mark it protected and mark the prior bullish protected low as superseded. Apply the mirror process in bearish conditions.

  4. Add retrospective containment only after the fact.
    This is for chart readability and review, never for replacing real-time fields.

  5. Keep the live range edge provisional.
    A new high in a bullish leg, or new low in a bearish leg, is a moving range extreme until a future rule-based process grants it another role.

For replay practice, do this on 30–50 unseen 1H bars. Pause only at bar closes. Save the chart state before revealing each next bar, then compare your original ledger with the final historical map. The useful review question is not “Did I predict the reversal?” It is “Did any later annotation contaminate an earlier decision?”


Key takeaways

A usable SMC hierarchy is not a collection of swing labels; it is a time-stamped record of how those labels became available.

  • The external ledger holds only externally confirmed swings, their promotion events, and the current protected level.
  • The internal ledger holds the P2-level pivots and candidates that describe smaller movement inside the framework.
  • A protected low in a bullish state is the most recent confirmed external low that produced the active bullish external leg. An internal higher low does not replace it.
  • A pivot can later be annotated as contained within an external leg without having been known as part of that leg in real time.
  • Preserve immutable observed status separately from additive retrospective annotations.

Next, you will make the promotion and invalidation logic more precise by defining what counts as a structural break: wick-through, close-through, and displacement-qualified evidence.

Can't find a good explanation? Sign up and we'll make it for you

Sign up