Market Profile (TPO)
The Market Profile overlay counts, for each price, how many time brackets traded there and renders the result as bars, TPO letters or blocks over a free period: 15 minutes to 1 day, 90/180 rolling days, the CME day, named sessions or RTH. It adds Steidlmayer structure — initial balance, single prints and tails, poor highs and lows — and optional automatic levels merged from the last profiles.
Senzoukria · Documentation · Updated September 2026
Where to find it
- Where
- Chart → Indicators → Overlays → Market Profile (TPO)
- Default
- Off; Period = 1 hour; Display = Bars; Bracket = 30 min; Value area 70 %
- Templates
- Indicators → Templates: TPO — Steidlmayer, TPO — Dalton split, TPO — auto levels, TPO — compact blocks
What it does
A TPO profile asks how long price stayed at a level, not how much traded there. Each chart bar is one time bracket and every price it spans receives one TPO. When a bracket duration is set, letters are assigned per bracket (A–Z then a–z), which is what makes the letter and block displays possible and shows the order in which the distribution was built. Executed bid and ask volume per level is kept alongside the count to power the Ask / Bid, Delta and Delta % types.
The POC is the level with most TPOs; ties go to the level closest to the profile mid, then the lower price. The value area expands from the POC two levels at a time on each side, taking the fatter pair, with ties going up — the ATAS and Sierra rule. Anchors are generalised: epoch minutes, the CME day from 17:00 CT to the next open (DST-safe), or named sessions from the template, where a bar outside any session belongs to no profile.
Structure is derived per profile: the initial balance is the range touched by the first N brackets, tails are runs of at least two single-TPO rows at an extreme, single prints are one-TPO rows strictly inside, and a poor high or low is an extreme held by two or more brackets. Auto levels merge the last profiles, score every candidate (naked POC 4.8, composite POC 4.0, POC 3.0, composite VA edges and poor extremes 2.5, tails 2.2, VAH/VAL 2.0, single prints 1.8, HVN 1.5, LVN 1.0), reduce older profiles by 15 % per step and fuse candidates within 2 ticks.
Settings
| Setting | Default | What it changes |
|---|---|---|
| Period | 1 hour | 15 minutes, 1 hour, 4 hours, 1 day, 3 months (90 days rolling), 6 months (180 days rolling), CME day (17:00 CT), Sessions NY / London / Asia, RTH indices (8:30–15:00 CT), Custom |
| Custom | 30 min (1–10080) | Minutes for the Custom period |
| Display | Bars | Bars, TPO letters, TPO blocks; letters fall back to blocks then bars when there is no room |
| Bracket | 30 min (1–240) | One letter per bracket; choose a multiple of the chart timeframe |
| Row height | 0 ticks = auto (0–512) | Ticks per row; auto follows the zoom so letters stay readable |
| Split columns | off | Each bracket keeps its own column |
| Letter colors | Inside / outside value area | Or one color per bracket, initial balance vs rest, fade with time |
| Auto row height (smart) | off | Keeps about 48 rows whatever the zoom |
| Value area band / Mid-point line / Profile statistics | on / off / off | VA band behind letters; half-range line; TPO total, range, VA width, counts above and below the POC |
| Naked POC / Extend POC / VA to next profile | off / off | Carry a closed profile's POC (and VAH/VAL) forward until traded through |
| Initial balance / IB brackets / IB color | off / 2 / #38bdf8 | Range of the first brackets |
| Single prints & tails / color / Extend single prints | off / #f59e0b / off | One-bracket rows inside and at the extremes; dotted extension to the next profile |
| Poor high / low / color | off / #ef4444 | Extreme held by two or more brackets |
| Auto levels / Profiles merged / Levels shown / Merged profile | off / 5 / 6 / off | Best levels of the last profiles; composite drawn at the right edge |
| Profile type / Draw style | Volume (TPO count) / Solid | Ask / Bid volume, Delta, Delta %, Delta + Volume; seven draw styles |
| Value area / Highlight VAH/VAL / Show POC | 70 % (50–95) / on / on | Value area size and level lines |
| Width / Opacity / Bar height | 70 % / 45 % / 0 px | Appearance; bar height 0 fills the row |
| Colors | VA #a78bfa, outside #8b5cf6, POC #fbbf24, delta up #7ed321, delta down #ffffff | Heatmap shading and HVN/LVN zones (#38bdf8 / #f59e0b) are off by default |
How to use it
Turn the overlay on in Indicators → Overlays, or apply a built-in template from Indicators → Templates. TPO — Steidlmayer sets daily letters, 30-minute brackets, value area band, IB, single prints and tails, poor high/low and statistics. TPO — Dalton split adds split columns, time-faded letters, naked POCs, mid-point and extended levels. TPO — auto levels keeps only the letters plus the auto levels over five profiles with the merged profile. TPO — compact blocks uses 4-hour profiles in blocks with per-row counts.
Letters are the canonical display: A is the first bracket of the period, so the anchor decides where A falls. Choose Sessions or CME day on futures for letters that mean something relative to the open.
Limits and pitfalls
- A 4-hour bar cannot reconstruct 30-minute visits; the bracket must be a multiple of the chart timeframe.
- TPO counts use loaded OHLC ranges at the chart resolution; the Ask / Bid and Delta types need real price-level data.
- Selecting a period does not load history; rolling windows roll back from the latest loaded candle.
- The letter renderer has a budget of 6 000 cells and a cell width between 1.5 and 9 px; beyond it, the profile falls back to blocks, then bars.
- A POC is only called naked when the renderer can check that price never traded through it after the period.
Related pages
- Volume Profile
- Initial Balance indicator
- Single Prints indicator
- Volume profile explained
- Footprint chart
This page in other languages
Frequently asked questions
- Why do my letters show as blocks or bars?
- There was no room: cells narrower than 1.5 px or more than 6 000 cells trigger the fallback. Zoom in, raise Row height, or enable Auto row height.
- How is the value area computed?
- From the POC outward, comparing the two levels above with the two below and adding the larger pair until the chosen percentage (70 % by default) of TPOs is captured. Ties go up.
- What does the RTH period cover?
- Named sessions from the template; RTH indices runs 8:30–15:00 CT. Bars outside any session of the template are ignored rather than glued to a neighbouring profile.