> ## Documentation Index
> Fetch the complete documentation index at: https://docs.marketlens.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Classic Order Flow

> Order book heatmaps and trades profiles on multi-exchange data.

Order book **heatmaps** and **trades / volume profiles** are proven ways to read order flow. Most of them were built years ago for **one market at a time**, so multi-venue crypto needs care: how you **group** prices, how you **sum** venues, and what you can still tell apart per exchange.

MarketLens keeps those classic tools and adapts them to **multi-market** selection.

See also: [Unified order flow](/unified-order-flow), [L2 order book](/order-book).

## Heatmap

Order book **heatmaps** were popularized by Bookmap around **2014–2016** and remain the standard way to see resting limit orders evolve through time: each column is a snapshot of the book, and color intensity marks larger size.

<Frame caption="Bookmap">
  <img src="https://mintcdn.com/msdev/YC-fCftnRvSeEF-r/images/image-2.png?fit=max&auto=format&n=YC-fCftnRvSeEF-r&q=85&s=ebc4f98e0650f4d3426cedf2c6075483" alt="Bookmap-style liquidity heatmap reference" width="2070" height="1158" data-path="images/image-2.png" />
</Frame>

MarketLens extends that idea with **native multi-market** support. Below: an aggregated heatmap for BTC/USD **spot** across Binance, Bybit, Coinbase, OKX, Kraken, and Bitfinex.

<img src="https://mintcdn.com/msdev/YC-fCftnRvSeEF-r/images/Screenshot-2026-08-02-at-19.29.22.png?fit=max&auto=format&n=YC-fCftnRvSeEF-r&q=85&s=92a8650d847013b176480981e534e72e" alt="MarketLens aggregated multi-exchange order book heatmap" width="4082" height="2698" data-path="images/Screenshot-2026-08-02-at-19.29.22.png" />

Color intensity highlights interesting sizes. Settings (thresholds, scales, themes) help you focus on the liquidity that matters for your workflow.

<img src="https://mintcdn.com/msdev/YC-fCftnRvSeEF-r/images/Screenshot-2026-08-02-at-19.45.57.png?fit=max&auto=format&n=YC-fCftnRvSeEF-r&q=85&s=3d7ec5cfdde97d7f50b871c588967ebd" alt="Heatmap intensity and display settings" className="mx-auto" style={{ width:"41%" }} width="668" height="594" data-path="images/Screenshot-2026-08-02-at-19.45.57.png" />

### Price grouping

Book data is first **bucketed** by a chosen price step into **non-overlapping** groups. Bids and asks use opposite edges so the spread stays clean:

* **Bids** group **down** (toward lower prices)
* **Asks** group **up** (toward higher prices)

**Example** with a **\$10** step: several raw asks and bids collapse into a few cells (sizes add inside each cell).

<img src="https://mintcdn.com/msdev/BWqJI2eheljhxBes/images/classic-order-flow/heatmap-grouping.svg?fit=max&auto=format&n=BWqJI2eheljhxBes&q=85&s=bbd7a55886c5c404def957be7a49bfd2" alt="Heatmap price grouping: raw ladder on the left, grouped $10 cells on the right; bids group down, asks group up" width="760" height="420" data-path="images/classic-order-flow/heatmap-grouping.svg" />

Each heatmap cell’s **vertical center** sits on the **price level** it represents (for example the 1230 and 1240 markers on the scale).

<img src="https://mintcdn.com/msdev/rC5xojaw5FGRu_UH/images/classic-order-flow/heatmap-cell-centers.svg?fit=max&auto=format&n=rC5xojaw5FGRu_UH&q=85&s=6b727a61265a59caf776908dbabb0419" alt="Heatmap cell centers aligned to their price levels" width="640" height="320" data-path="images/classic-order-flow/heatmap-cell-centers.svg" />

### Multi-exchange aggregation

After each venue is grouped the same way, the heatmap **always aggregates** across the selected exchanges. There is no per-venue layer in the heatmap: one cell, one value for the whole selection.

Sizes are **signed**: **bids positive**, **asks negative**. Cells are summed with that sign:

* Same side across venues **adds** (two bids in one cell → larger positive total)
* Mixed sides **net out** (bid on one venue, ask on another in the same cell → a **bid/ask delta**, not two stacks drawn on top of each other)

<img src="https://mintcdn.com/msdev/BWqJI2eheljhxBes/images/classic-order-flow/heatmap-multi-exchange.svg?fit=max&auto=format&n=BWqJI2eheljhxBes&q=85&s=16b8901dfb10bdc61c0904926b405aba" alt="Multi-exchange heatmap aggregation with signed bid and ask sizes" width="720" height="300" data-path="images/classic-order-flow/heatmap-multi-exchange.svg" />

## Trades profile

**Volume profile** (total volume by price, without splitting buy and sell) was already common for years. MarketDelta’s Footprint® charts (around **2003**) popularized the next step: the same price ladder **inside each bar**, with **aggressive buys and sells** shown separately. Other platforms use other names for that idea. On MarketLens it is **trades profile**.

<Frame caption="MarketDelta's Footprint charts">
  <img src="https://mintcdn.com/msdev/YC-fCftnRvSeEF-r/images/image-3.png?fit=max&auto=format&n=YC-fCftnRvSeEF-r&q=85&s=8c53114161032d8412672e7fb39a0d8e" alt="Trades profile reference chart" className="mx-auto" width="1024" height="610" data-path="images/image-3.png" />
</Frame>

A **trades profile** shows **aggressive buy and sell volume at each price level inside a bar** — who hit the book, not who was resting (that is the heatmap).

| Tool | What it shows |
| - | - |
| Heatmap | Resting limits over time |
| Trades profile | Aggression inside the bar (buys vs sells at price) |
| Volume profile | Total volume at price (buys + sells) |

A core UI goal is to **read size without staring at digits**. Each price level is a horizontal bar whose **length is proportional to size** on a shared scale across the profile.

<img src="https://mintcdn.com/msdev/YC-fCftnRvSeEF-r/images/Screenshot-2026-08-02-at-21.29.11.png?fit=max&auto=format&n=YC-fCftnRvSeEF-r&q=85&s=6961d9c3ac31a4eebc9a122b76d95dea" alt="Trades profile with bar length proportional to order size" width="2972" height="2636" data-path="images/Screenshot-2026-08-02-at-21.29.11.png" />

### Display modes

| Mode | What each level shows |
| - | - |
| **Trades profile** | Buys and sells **separately** |
| **Delta** | **Buys − sells** (imbalance) |
| **Volume profile** | **Buys + sells** (total volume) |
| **Volume profile (delta)** | Same imbalance idea on a volume-profile layout |

A **volume profile** is total size at each level (**buys + sells**), often drawn as bars from one side. **Delta** is **buys − sells** per level.

<img src="https://mintcdn.com/msdev/YC-fCftnRvSeEF-r/images/Screenshot-2026-08-02-at-21.27.51.png?fit=max&auto=format&n=YC-fCftnRvSeEF-r&q=85&s=2547a186057196ec0501cc1ec7959620" alt="Volume profile and delta modes" className="mx-auto" style={{ width:"47%" }} width="674" height="232" data-path="images/Screenshot-2026-08-02-at-21.27.51.png" />

<img src="https://mintcdn.com/msdev/BWqJI2eheljhxBes/images/classic-order-flow/trades-profile-modes.svg?fit=max&auto=format&n=BWqJI2eheljhxBes&q=85&s=9c9ad91e28a61859ebdbf0546e578056" alt="Comparison of trades profile, delta, volume profile, and volume profile delta modes" width="760" height="340" data-path="images/classic-order-flow/trades-profile-modes.svg" />

### Price grouping

Auction analysis **inside** candles needs **stable** buckets. Unlike the heatmap’s bid-down / ask-up edges, trades profile levels are **always grouped down** into **half-open** intervals so every trade lands in exactly one bucket (left edge **inclusive**, right edge **exclusive**).

**Example** with a **\$10** step: a print at **1239.9** goes to the **1230** bucket; a print at **1240.0** goes to **1240**.

<img src="https://mintcdn.com/msdev/BWqJI2eheljhxBes/images/classic-order-flow/trades-grouping.svg?fit=max&auto=format&n=BWqJI2eheljhxBes&q=85&s=9c610a3ec70cc9dd28c5c69e42dcb537" alt="Trades profile half-open price buckets grouped down" width="720" height="280" data-path="images/classic-order-flow/trades-grouping.svg" />

### Multi-exchange aggregation

Trades profiles work on **executed volume** only (no signed bid/ask book cancellation). You can either:

1. **Aggregate** — sum size at each level (and each side, when buys and sells are separate) across the selected exchanges, or
2. **Show per exchange** — draw venues as separate bars/segments at the same levels.

In the separate view, **hover** a venue to highlight only that exchange’s sizes so you can compare without leaving multi-market mode.

## References in product

* [Unified order flow](/unified-order-flow) — limits and markets in one visual space
* [L2 order book](/order-book) — live multi-market depth
* [Tape](/tape) — aggressive prints as a visual stream


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.