TPO profile
- Price
- High
- Low
previous day
- POC
- VAH
- VAL
- High
- Low
- Singles above
- Singles below
- Poor high
- Poor low
- near
Market profile by time with single prints. A market profile by time: every candle counts once at each price level it reaches, no matter how much was traded. The POC is the price where the market spent the most time, the value area the range holding 70 % of the time. Plus two terms from market profile: a poor high was reached by at least two candles without leaving a tail above; many expect the price to come back for it. Single prints are prices only one candle reached; the move there was fast, and the price often returns. The node needs no volume. Example: “poor high” with AND and “Price crosses above prior day high” reports when BTC takes out a poor high from yesterday.
What it looks like
Section titled “What it looks like”- Price (close of each candle)
- TPO profile of the day, value area stronger
- prior day TPO POC
- prior day TPO VAH and VAL
Setting it in the chart
Section titled “Setting it in the chart”
In the properties, a chart shows the levels over the last 150 candles, with their names on the right. Click a level or its name, or pick it with the arrow keys: the band ±x % for the “near” output lies around it. Drag an edge of the band or type the number under “Band ±”; dots mark the candles that came that close to the level. Levels far from the price sit at the edge with an arrow.
More under Chart above the price.
Settings
Section titled “Settings”The settings appear on the right under “Properties” once you click the node on the board. Below each field you find the same explanation as here.
Session
Section titled “Session”Whether the profile of a completed session applies or that of the current session so far.
- previous (default): The profile of the last completed session, such as yesterday. It is fixed from the first candle of the new session and does not change until it ends.
- current: The profile of the current session up to the candle that just closed. POC and value area move along; on the last candle they are exactly the profile that counts as the previous one from the next session on.
Period
Section titled “Period”How long a session is: one day, one week from Monday or one calendar month.
- day (default): One session per calendar day. Most accurate with candles from 15 minutes to 1 hour.
- week: One session per calendar week, Monday to Sunday. Suits 1-hour and 4-hour candles.
- month: One session per calendar month. Suits 4-hour and daily candles.
Value area
Section titled “Value area”Which share of the time lies inside the value area. 70 % is usual; more makes it wider, less tighter around the POC.
Price levels
Section titled “Price levels”How many levels of equal height the session’s range is split into. With 50, one level is 0.05 % high at a 2.5 % daily range; more levels rarely add accuracy because the candles themselves are coarse.
Time zone
Section titled “Time zone”The time zone in which the day, week and month begin. The default is UTC, like the exchanges’ daily candles; in Berlin that is 1:00 AM in winter and 2:00 AM in summer. With Europe/Berlin the day begins at midnight German time.
Which level the “near” output refers to. In the chart above you can also pick it by clicking its line.
- High: The highest price of the session.
- Singles above: The lower edge of the nearest single prints above the price.
- VAH: The upper edge of the value area by time.
- POC (default): The price where the market spent the most time.
- VAL: The lower edge of the value area by time.
- Singles below: The upper edge of the nearest single prints below the price.
- Low: The lowest price of the session.
Band ±
Section titled “Band ±”How close a candle must come to the level, in percent of the level: “near” is true as soon as the candle’s high or low reaches into the band. 0.3 means 0.3 % above and below, so with a level of $80,000 that is $240. With 0 only a candle that touches the level itself counts.
Example
Section titled “Example”Notifies you when the price rises above yesterday’s high and that high was poor: at least two hours had reached it without leaving a tail above.
How to connect the nodes:
- Candle (Price) → TPO profile (Price)
- Candle (High) → TPO profile (High)
- Candle (Low) → TPO profile (Low)
- Candle (Price) → Compare A/B (A)
- TPO profile (High) → Compare A/B (B)
- Compare A/B (true/false) → AND (Signal 1)
- TPO profile (Poor high) → AND (Signal 2)
- AND (all true) → Telegram (Trigger)
On the board it reads: previous day
Chain as JSON
To try it, copy it and paste it in the editor under “Import”. Importing creates a new chain.
{ "name": "Example: TPO profile", "version": 1, "nodes": [ { "id": "c1", "type": "core.candle", "position": { "x": 40, "y": 40 }, "settings": { "pair": "BTC/USDT", "timeframe": "1h" } }, { "id": "p1", "type": "core.tpo", "position": { "x": 260, "y": 40 }, "settings": {} }, { "id": "k1", "type": "core.compare-ab", "position": { "x": 480, "y": 40 }, "settings": { "operator": "crossesAbove" } }, { "id": "a1", "type": "core.and", "position": { "x": 700, "y": 40 }, "settings": {} }, { "id": "t1", "type": "core.telegram", "position": { "x": 920, "y": 40 }, "settings": {} } ], "edges": [ { "from": "c1.close", "to": "p1.close" }, { "from": "c1.high", "to": "p1.high" }, { "from": "c1.low", "to": "p1.low" }, { "from": "c1.close", "to": "k1.a" }, { "from": "p1.high", "to": "k1.b" }, { "from": "k1.out", "to": "a1.in0" }, { "from": "p1.poorHigh", "to": "a1.in1" }, { "from": "a1.out", "to": "t1.in" } ]}Inputs and outputs
Section titled “Inputs and outputs”Only matching types connect: number series to number series (round pin), signal to signal (square), message to message (diamond).
| Direction | Pin | Type | Note |
|---|---|---|---|
| Input | Price | Number series | required |
| Input | High | Number series | required |
| Input | Low | Number series | required |
| Output | POC | Number series | appears in messages as a price, e.g. “$81,616” |
| Output | VAH | Number series | appears in messages as a price, e.g. “$81,616” |
| Output | VAL | Number series | appears in messages as a price, e.g. “$81,616” |
| Output | High | Number series | appears in messages as a price, e.g. “$81,616” |
| Output | Low | Number series | appears in messages as a price, e.g. “$81,616” |
| Output | Singles above | Number series | appears in messages as a price, e.g. “$81,616” |
| Output | Singles below | Number series | appears in messages as a price, e.g. “$81,616” |
| Output | Poor high | Signal (true/false) | – |
| Output | Poor low | Signal (true/false) | – |
| Output | near | Signal (true/false) | – |
Good to know
Section titled “Good to know”- In messages the values are called “prior day TPO POC”, “prior day TPO VAH”, “prior day TPO VAL”, “prior day high”, “prior day low”, “prior day single prints above”, “prior day single prints below”.
- Warm-up with the default settings: 48 candles (this many extra candles are loaded by the replay before the value is reliable).
- Search also finds it under: tpo, market profile, time price opportunity, single prints, poor high, poor low, excess, value area, poc, tail.
Technical details
Section titled “Technical details”Price levels of equal height across the session’s range as in the volume profile; each candle counts 1 at every level its range overlaps. POC and value area by the same rule as the volume profile, with the number of candles instead of the volume. Poor high: at least two candles reached the top level; poor low accordingly. Single prints: adjacent levels with exactly one candle, without the levels attached to the high or low (the tails). Above: lower edge of the nearest single prints whose middle is above the close; below: upper edge of the nearest whose middle is not above it.
- Type in the chain:
core.tpo· Version 1.0.0 · Category keyind - Settings in the chain:
session(Session),period(Period),valueArea(Value area),rows(Price levels),timezone(Time zone),level(Level),width(Band ±) - Pins in the chain: Input
close,high,low· Outputpoc,vah,val,high,low,singleAbove,singleBelow,poorHigh,poorLow,near - Reference tests in the manifest: 1 (with fixed price data: 500 candles of 1h)
- How a node is built
Version 2026.10.25.16 · Changelog