Skip to content
Terminal

The chart agrees with the tape.

Candles and the latest mark come from one feed, so the two surfaces cannot disagree.

The request

Two calls, one contract.

Bars for the chart, the latest mark for the tape, from the same schema.

Latest mark · BTC

75,929.09USD

published 08:45:51 UTC · from the tape

Last close · 1m

Unavailable

no 1m bar in this window to close

Mark − close

Unavailable

nothing to subtract until both calls land

The chart

Reading 1m bars…

Nothing drawn for this window · 1m buckets

The tape
PrintedPriceMove
08:45:5175,929.09first

One row per published mark — a read that returns the same updated_at prints nothing. The last ten stay on the tape.

GET /v1/prices/ohlcv?asset=BTC&interval=1mGET /v1/prices/latest?assets=BTC
The fields

What draws a candle.

The store has no closed bar for Apple in this window, so there is none to take apart. Nothing here is a made-up candle — this fold fills in with whatever the read returns, and says this when it returns nothing it can vouch for.

And what a bar is not.

A bar is its bucket and nothing more. There is no bid behind it, no ask, and no size at a level — LIAW publishes prices, so the book is not ours to hand you.

The build

Draw the chart, then the tape.

BUILD · CHART AND TAPE
const bars = await ohlcv('BTC', { interval: '1m', limit: 240 })
const [tick] = (await latest('BTC')).data
chart.draw(bars.data)
tape.write(tick.price)

Two polls on a timer, and the chart cannot disagree with the tape because both came out of the same schema.

  • Bars append.

    timestamp ascends on every response, so a redraw appends to the series instead of re-sorting it.

  • The mark replaces itself.

    One row per asset per read, and updated_at says whether it moved since the last one.

  • The blotter stays yours.

    Orders, positions and fills never leave your terminal — this contract ends at the price.