# Tick stream

## Stream Description

The primary price feed: one message per quote update from the trade server.

## Stream Name

`<SYMBOL>@tick`

## Update Speed

on every quote change. Bursty — an active symbol can produce many per second, a
quiet one none for minutes.

## Response Example

```json
{"e":"tick","E":1789012345678,"s":"XAUUSD","b":"2331.15","a":"2331.42","l":"2331.15","v":8,"bd":1,"ad":-1,"T":1789012345678}
```

| Field | Type | Description |
| - | - | - |
| `e` | STRING | `"tick"` |
| `E` | LONG | Event time, Unix ms. |
| `s` | STRING | Symbol, exact case. |
| `b` | DECIMAL | Bid. |
| `a` | DECIMAL | Ask. |
| `l` | DECIMAL | Last traded price. `"0"` on symbols where the trade server reports no last price. |
| `v` | LONG | Tick volume reported with the quote. |
| `bd` | INT | Bid direction versus the previous tick: `1` up, `-1` down, `0` unchanged. |
| `ad` | INT | Ask direction, same encoding. |
| `T` | LONG | Tick time, Unix ms. |

> `T` and `E` are currently produced from the same clock and will be equal. `T` exists because the
> trade server's own tick timestamp is the value that belongs there, and it will carry that value
> when the feed exposes it. Treat `T` as the price time and `E` as the delivery time; do not assume
> they stay identical.

Subscribing to a symbol that nobody is watching starts the feed for it. The first tick can take a
moment to arrive.
