Structure Ledger User Guide: How Swings, BOS, CHoCH, EQH and EQL Are Decided, Reading the Panel, and Every Setting

20 October 2026, 18:05
Yuki Nakayama
0
25

What Structure Ledger is

Structure Ledger is a free indicator that draws market structure on the chart it is attached to: confirmed swing highs and lows, break of structure (BOS), change of character (CHoCH), and bands over clusters of equal highs (EQH) and equal lows (EQL), the places where liquidity tends to rest. Everything is decided on bars that have already closed; the bar still forming is never used. It does not trade, gives no buy or sell signals and draws no order blocks, fair value gaps or kill zones.

Structure Ledger on a gold M15 chart: confirmed swings, BOS and CHoCH lines, equal high and equal low bands, and the panel at the top right

The legend box and the caption in the picture were added for the screenshot; on your chart the indicator draws only the marks and the panel.

Quick start

  1. Open a chart of the symbol and timeframe you want to read and drag the indicator onto it from the Navigator. It is an indicator, so it can share a chart with an Expert Advisor.
  2. In the inputs, pick Language / 言語. The other defaults are meant to be used as they are.
  3. Click OK. The indicator reads the last 1500 closed bars, draws the marks it finds there, and opens its panel in the top-right corner (unless the panel has already been saved on that chart, see What the panel remembers). The chart needs at least 300 bars; with fewer, the panel shows waiting for history and nothing is drawn.
  4. From then on, new marks appear when a bar closes.

If something looks wrong, see Frequently asked questions further down; the questions are written as symptoms.

How a mark is decided

Swings

Every threshold is measured in ATR of the chart (ATR period (scale of every threshold), 14 by default, smoothed the way Wilder's ATR is). A swing high is confirmed when a later bar has traded k x ATR below the high and that bar closes (Swing confirms after a k x ATR reversal, k = 2.0 by default). A swing low is confirmed the other way round. So a swing becomes known one or more bars after the high or low itself, and its dot is placed on the bar of the high or low at that moment. Swing highs get a dot in the down colour and swing lows a dot in the up colour.

BOS and CHoCH

Only the close counts. When a bar closes above the last confirmed swing high, or below the last confirmed swing low, the structure is broken. If the break goes against the current direction, it is a CHoCH, drawn as a dashed line; otherwise it is a BOS, drawn as a solid line. The first break in the bars it reads is a BOS, because there is no direction yet to go against; it can fall inside the warm-up described below, in which case it is not drawn and the first mark you see may be a CHoCH. The line runs from the broken swing to the bar that broke it, and the word sits at the middle of the line, above it for an upward break and below it for a downward one, on a small plate in the chart's background colour so that candles do not show through it. A wick through the level does not count, and each swing can be broken only once.

Equal highs and lows

Each confirmed swing high is compared with the clusters of earlier swing highs, and each swing low with the clusters of swing lows. It joins the nearest cluster whose centre is within eps x ATR (Swings within eps x ATR count as equal, 0.5); otherwise it starts a new cluster. When a cluster reaches two swings (Swings needed before a band is drawn), its band is drawn and its size is fixed: the outer edge is the outermost swing plus 0.25 x ATR (Band padding beyond the swings (x ATR)). The shaded part is at most 0.25 x ATR tall and sits against the outer edge, the top of an EQH band and the bottom of an EQL band, with a thin grey outline. A new band that would overlap a live band already on the chart is not drawn.

A live band reaches 8 bars past the newest bar (Extend live bands to the right (bars)), and its EQH or EQL word sits just right of that end. A band retires in two ways. If no new swing joins it for 250 bars (Band retires after N bars without a touch), it ages out. If price trades through its outer edge and no close comes back inside within 3 bars (Bars allowed to close back inside after a pierce), it is taken out. A retired band stops at the bar where it retired and keeps only its faint fill; its outline and word are hidden.

The first bars are a warm-up

On start the indicator reads the last 1500 closed bars (Closed bars scanned on attach, 300 to 5000). The first 200 of them are a warm-up and get no marks, because the first turns of the swing search depend on where the reading starts. Marks within the window are therefore the same each time the indicator is attached again, as long as the window covers them.

Marks stay where they were placed

Every mark is created only after the bar that confirms it has closed. In Strategy Tester replays (1-minute OHLC, default inputs) on GOLD M15 and H1, EURUSD H1 and BTCUSD D1, covering 3 days to 5 months per run, no mark placed on a closed bar was moved, recoloured or retitled as later bars arrived; older marks only dropped off at the on-chart limits, and re-attaching the indicator redrew the same marks. Those replays did not cover real ticks, live charts over longer periods, broker corrections of past bars or inputs other than the defaults.

Three things do keep changing, by design. The right end of a live band follows the newest bar, and its word moves with it. When a band retires, its right end is set to the bar where it retired and its outline and word are hidden. When you change the chart's background colour, the band fill is mixed again to suit the new background and the plates under the structure words take the new background colour.

The chart keeps the latest 30 BOS and CHoCH marks, 12 bands and 80 swing dots (Structure labels kept on the chart, Bands kept on the chart, Swing dots kept on the chart). When a new mark arrives beyond the limit, the oldest one of that kind is removed. If the indicator finds a mark of its own missing from the chart, for example after a timeframe switch, it draws it again from the same reading with the same time and price.

Reading the panel

Structure Ledger on a EURUSD H1 chart, 16 to 25 September; the panel reads STRUCTURE UP, LAST CHoCH 09/25 11:00 and LIQUIDITY 1.2 ATR above and 3.2 ATR below

Header

At the left, the small ledger sign opens the About card. From the right: the caret collapses the panel to its header and opens it again, the corner button (TL, TR, BR, BL) moves the panel to the next corner, and the size button switches between 100% and 140%. Drag the header to put the panel anywhere on the chart; it then stays where you left it instead of following a corner. Double-click the header to send it back to its corner. Pressing the corner button also makes it follow a corner again. While you press the mouse button on the panel, the chart does not scroll.

Rows

STRUCTURE shows the current direction: UP after an upward break, DOWN after a downward one, NONE before the first break. LAST shows the last BOS or CHoCH with its direction and the time of the bar that broke the swing, or no structure yet before the first break. LIQUIDITY shows the distance in ATR from the current Bid to the nearest live band above (left of the dot) and below (right of the dot); a dash means there is no band on that side. The distance is measured to the near side of the band's full range, which is the cluster of swings plus the padding on both sides; the shaded part shows at most the outer 0.25 x ATR, so the measured edge lies at or below the shading of an EQH band and at or above the shading of an EQL band. With the Japanese panel the rows read 構造, 直近 and 流動性.

Hover a row for the numbers behind it. STRUCTURE: the last confirmed swing high and swing low with their bar times, and since when the current direction has held. LAST: the broken level, the close that broke it and the difference, the time of the broken swing and how many bars before the break it was, the ATR at the bar that broke it, and the time left until the current bar closes. LIQUIDITY: for the nearest band above and below, EQH or EQL, the price of its nearer edge, the distance in points and how many swings have joined it. Times are bar open times in server time.

The ALERTS row carries a PRO label. This edition sends no alerts of any kind.

About card and rating card

The ledger sign at the left of the header opens the About card with the version, the licence type, where to get support (the Comments tab of the product page) and buttons to rate the product and to open the support note; click the sign again to close the card. After some real use, a card may ask for a rating. It appears at most three times, weeks apart, never in the Strategy Tester. Don't ask again, or Show a one-time rating reminder (after a while) set to false, stops it.

What the panel remembers

The panel keeps its position, size, corner and collapsed state per chart. They are saved when you use the panel and stay in the terminal's global variables after the indicator is removed. Once they have been saved on a chart, Panel corner and Panel size (100% / 140%) no longer apply on that chart; use the buttons on the panel instead.

The Experts log

With Write each mark to the Experts log (once per closed bar) on, every mark writes one line starting with [SLG] to the Experts tab: swings, BOS and CHoCH with the bar, the swing, the level, the close and the ATR, new bands with their edges and number of swings (a band that is not drawn because it overlaps a live band is logged with hidden=overlap), and bands that retire (TAKEN or AGED). Two more kinds of line concern live bands and have no mark of their own in this edition: SWEEP on the bar on which price first trades through a band's outer edge, and RECLAIM on the bar on which a close comes back inside. A mark that drops off at an on-chart limit is logged as dropped. Lines written while the indicator rereads history end with src=replay, lines written on a newly closed bar with src=live. On start there is one [INIT] line with the inputs in use and one scan line with the counts found.

Frequently asked questions

The panel says waiting for history and nothing is drawn.
The chart has fewer than 300 bars. Scroll the chart back or wait for the terminal to load more history.

A swing dot appears several bars after the high or low.
That is how a swing is confirmed: only once price has moved k x ATR away and that bar has closed. Until then the high or low may still be exceeded. A smaller k confirms sooner and finds more, smaller swings.

Price went through a level with a wick and there is no BOS.
BOS and CHoCH use the close only. A wick through the level does not count.

There are two equal highs on the chart but no band.
Check that the two swings are within 0.5 x ATR of each other, that they were both confirmed swings (dots), that they are no more than 250 bars apart (a single swing waiting for a partner is forgotten after Band retires after N bars without a touch), and that no live band overlaps the place where the new band would be. Overlapping bands are not drawn.

Older marks disappeared.
The chart keeps 30 structure marks, 12 bands and 80 swing dots by default. Raise the limits in the Display group to keep more.

The marks are different after I changed an input.
Every input in the Detection and Liquidity groups changes what is found. The statement above about marks staying in place was measured with the default inputs.

Can an Expert Advisor read the marks?
No. This edition has no buffers, so nothing appears in the Data Window and there is nothing to read with iCustom. The lines in the Experts log are for reading, not for programs.

Can I use two copies on one chart?
Use one per chart. Two copies on the same chart share one set of saved panel settings, and with the same Chart object prefix they would use the same object names.

All settings

The table is generated from the shipped source, so it lists every input as the terminal shows it.

General

Language, panel placement, refresh and the rating reminder.

Setting (as shown in MT5)DefaultWhat it does
Language / 言語LANG_ENLanguage of the panel, the tooltip and the About and rating cards: LANG_EN (English) or LANG_JP (Japanese). LANG_JP also switches the panel font to Yu Gothic UI. The words drawn on the chart (BOS, CHoCH, EQH, EQL), the title STRUCTURE LEDGER, the buttons, the PRO label, the Experts log lines and the input names stay in English.
Choices: LANG_EN, LANG_JP
Panel cornerC_TRCorner the panel starts in: C_TL top left, C_TR top right, C_BR bottom right, C_BL bottom left. Used only until the panel's state has been saved on that chart.
Choices: C_TL, C_TR, C_BR, C_BL
Panel size (100% / 140%)SZ_LStarting panel size: SZ_S = 100%, SZ_L = 140%. Used only until the panel's state has been saved on that chart.
Choices: SZ_S, SZ_L
Corner margin (px)14Distance in pixels between the panel and the chart edge when it sits in a corner (0 to 60).
Extra right gap for the price scale (px)64Extra space in pixels kept on the right for the price scale when the panel sits in a right-hand corner (0 to 200). Used only while the price scale is shown.
Refresh seconds2How often, in seconds, the panel and its tooltip are refreshed and the corner position is checked (1 to 30). Marks are not driven by this timer; they are placed when a bar closes.
Show a one-time rating reminder (after a while)truefalse switches off the card that asks for a rating. The card appears at most three times, weeks apart, and never in the Strategy Tester; the About card stays reachable from the panel.

Detection

How swings are found. Every threshold in the indicator is measured in ATR of this chart.

Setting (as shown in MT5)DefaultWhat it does
ATR period (scale of every threshold)14ATR period (5 to 100), smoothed the way Wilder's ATR is. The ATR at each closed bar is the unit of every threshold below at that bar.
Swing confirms after a k x ATR reversal2.0Reversal size k (0.5 to 5.0). A swing high is confirmed when a later bar has traded k x ATR below it and that bar closes; a swing low the other way round. Smaller values give more, smaller swings and more BOS and CHoCH marks.
Closed bars scanned on attach1500How many closed bars are read when the indicator starts (300 to 5000). The first 200 of them are a warm-up and get no marks.

Liquidity (equal highs / lows)

When equal highs or lows become a band, and when a band retires.

Setting (as shown in MT5)DefaultWhat it does
Swings within eps x ATR count as equal0.5A confirmed swing joins a cluster when it lies within eps x ATR of the cluster's centre (0.1 to 2.0). Highs and lows are kept apart.
Band padding beyond the swings (x ATR)0.25Padding added beyond the outermost swing when a band is drawn (x ATR, 0 to 1.0). The padded outer edge is the edge used to decide when the band retires.
Swings needed before a band is drawn2How many swings a cluster needs before its band is drawn (2 to 5).
Band retires after N bars without a touch250A band retires when no new swing has joined it for this many bars (50 to 2000). A swing joining counts as a touch; price passing through does not. A cluster of one swing that has not found a second one is dropped after the same number of bars.
Bars allowed to close back inside after a pierce3When price trades through a band's outer edge, the band retires unless a close comes back inside within this many bars (1 to 10).

Display

What is drawn, how many marks are kept, colours and the Experts log.

Setting (as shown in MT5)DefaultWhat it does
Dots on confirmed swingstrueDraw a small dot on each confirmed swing.
BOS lines and labelstrueDraw BOS lines and their word.
CHoCH lines and labelstrueDraw CHoCH lines and their word.
Equal high / low bands (liquidity)trueDraw the equal high and equal low bands. With false no band is drawn and the panel's LIQUIDITY row shows a dash, because it measures only to bands on the chart.
EQH / EQL text just right of the band's endtrueWrite EQH or EQL just right of each live band's right end.
Structure labels kept on the chart30How many BOS and CHoCH marks stay on the chart (5 to 200). The oldest drops off when a new one arrives.
Bands kept on the chart12How many bands stay on the chart, live and retired together (2 to 40).
Swing dots kept on the chart80How many swing dots stay on the chart (10 to 400).
Extend live bands to the right (bars)8How many bars past the newest bar a live band reaches to the right (0 to 50). Its EQH or EQL word sits at that end.
Up structure (BOS / CHoCH up, swing lows)C'38,166,154'Colour of upward BOS and CHoCH and of swing-low dots.
Down structure (BOS / CHoCH down, swing highs)C'239,83,80'Colour of downward BOS and CHoCH and of swing-high dots.
Liquidity marks (band text, sweep dots)C'126,138,166'Colour of the EQH and EQL words, of the band fill (mixed with the chart background) and of the small triangles in the panel's LIQUIDITY row. This edition draws no sweep dots; the words in the input's name refer to marks it does not draw.
Band fill strength (% of the liquidity colour over the chart background)12How strongly the band fill shows: the share of the liquidity colour mixed into the chart background (5 to 60 percent).
Write each mark to the Experts log (once per closed bar)trueWrite one line per mark to the Experts tab, starting with [SLG].

Identity

The name prefix of the chart objects.

Setting (as shown in MT5)DefaultWhat it does
Chart object prefixslg_Prefix of every chart object the indicator creates (2 to 12 characters, otherwise slg_ is used). Removing the indicator deletes every object whose name starts with it.

What it does not do, and where it stops

It is an information tool for the timeframe you are watching. It does not tell you when or where to trade and makes no claim about results. It reads only the symbol and timeframe of its own chart, and only bars that have closed, so a new mark appears at the earliest when the bar that confirms it closes.

Apart from drawing, it saves its panel settings to the terminal's global variables, keeps the rating card's state in a small file in the terminals' shared Common\Files folder, and turns on mouse-move events for its chart. It leaves them on when it is removed, so other programs on the same chart keep their mouse handling. When it is removed it deletes every chart object whose name starts with Chart object prefix (slg_ by default), so do not give your own objects names that start with it. It uses no DLL and no web request.

Support

Post on the Comments tab of the product page. The broker, the symbol, the timeframe, what you expected to see and the matching [SLG] lines from the Experts tab are enough to start.

This guide describes Structure Ledger 1.00.