Tool
Point
calc.point
Inputs
The Point's price, as a per-bar series — read at the Point's own bar. Wire a close, a moving average, a band edge. A single SCALAR level (a Gann ring, a Fibonacci level, another Point's price) reaches this pin through math.broadcast; Fixed mode types a literal price.
Where the Point sits, as an absolute bar index. Unwired — the default — puts it on the bar being evaluated. Wire another construct's position to reuse it. A bar after the evaluating bar, or before the loaded window, makes the Point invalid instead of reading ahead.
Where the Point sits, as a TIME (UTC epoch seconds). Wire Market Quote's out.time for the bar's own open time, or broadcast one moment — another Point's time_epoch, info.time, a Gann box time line. A time before the loaded window, or one resolving past the evaluating bar, makes the Point invalid instead of reading ahead.
Outputs
One Point bundle: valid, bar_index, price, time_epoch, and type (always 0 — a constructed Point is not a market pivot). It wires whole into anything that takes a Point — a two-point Fibonacci, a Gann anchor — or through the Point Interpretor, whose SCALAR out.price feeds an ORDER_EXIT take-profit or stop and whose out.time feeds duration maths.
Point builds one of the Points the rest of the canvas already speaks — the same bundle a zigzag pivot, a Michael corner or a Fibonacci anchor carries. Give it a price and a position — a bar to sit on, or since v2 a time to snap to — and it hands back a Point holding that price, that bar, and that bar's real time.
How it works
A Point is four things travelling together: a price, a bar index, a UTC time, and a marker saying whether it came from a high or a low. This tool assembles one, and the `position` knob picks how you say WHERE. In `bar` mode (the default) leave the `bar` pin unwired and the Point sits on the bar being evaluated — the common case; wire it (another Point's bar_index, a Michael corner's) and the Point moves to that bar. In `time` mode you wire a time instead — Market Quote's `time` leaf, another Point's time_epoch, info.time — and the Point snaps to the last bar that opened at or before that moment: an in-between time lands on the older bar, never forward. Either way the price is read at the resolved bar and the Point's time is that bar's real open time rather than an invented one. A fractional bar position rounds to the nearest whole bar. The marker is always 0 — a Point you built is not a market pivot, the same call the Michael square makes for its projected corners. Three things make a Point invalid, with sentinel fields instead of a guess: a price that is not a finite number, a position landing after the bar being evaluated or before the loaded window, and a time the window cannot resolve. It never reads ahead to satisfy a request.
Modes
Place the Point by absolute bar index — unwired, it rides the bar being evaluated; wired, it reuses another construct's position.
Place the Point by a moment in time: wire Market Quote's time leaf or any Point's time tap, and it snaps to the last bar opened at or before that moment.
Configuration
How the Point's position arrives. 'bar' reads the optional bar pin as an absolute bar index — unwired means the bar being evaluated. 'time' reads the time pin as a UTC moment (epoch seconds) and snaps to the last bar opened at or before it.
Connects to
Examples
- Anchor a Fibonacci by hand: build one Point on a support level and another on the current bar, then wire the pair into a two-point Fibonacci retracement — no zigzag needed.
- Borrow a time, keep your price: wire a Michael corner's bar_index into the bar pin and your own level into price, and the new Point keeps the corner's timing at the price you chose.
- Take a price to an exit: send the Point through the Point Interpretor and wire its out.price (a SCALAR num.price) into an ORDER_EXIT take-profit slot.
Common mistakes
- Wiring the Point straight into a TP/SL slot — a Point is a bundle; destructure it with the Point Interpretor and wire out.price.
- Reading bar as 'bars ago' — it is an absolute index into the loaded window, which is what lets another Point's bar_index drop straight in. Leave it unwired for 'here'.
- Expecting a bar after the evaluating bar to work — a Point cannot sit in the future, so the request is rejected (valid stays false) rather than pulled back to the last bar.
- Wiring a SCALAR level into price — that pin takes a per-bar series; bridge it with math.broadcast.