Live board
Tick tail
| symbol | time (UTC) | bid | ask | spread |
|---|
Closed candles
| symbol | tf / open (UTC) | open | high | low | close |
|---|
Use the data
Everything on this page comes from a PostgreSQL database fed by an MT4 terminal (broker: Trade Nation). New rows trigger PostgreSQL
NOTIFY; this server LISTENs and forwards every message to WebSocket clients immediately. Prices are Bid/Ask, times are UTC.
The market is closed at weekends (Friday 17:00 – Sunday 17:00 New York time); nothing streams then.
WebSocket
URL: ws://…/ws (optional: ?topics=ticks:EURJPY,candles:*:M1)
| Topic | Meaning |
|---|---|
ticks | every tick of every symbol (default) |
ticks:EURJPY | ticks of one symbol |
candles | every closed candle, all symbols and timeframes (default) |
candles:EURJPY / candles:EURJPY:M1 / candles:*:H1 | filter by symbol and/or timeframe (M1 M5 M15 M30 H1 H4 D1); * = any |
Server → client (JSON text frames):
{"type":"hello","server_time":"…","topics":["ticks","candles"],"help":"…"}
{"type":"snapshot","ticks":[{"symbol":"EURJPY","ts":"…","bid":177.231,"ask":177.245,"spread_pips":1.4,"received_at":"…"}, …]}
{"type":"tick","symbol":"EURJPY","ts":"2026-10-12T21:05:13+00:00","bid":177.231,"ask":177.245,"spread_pips":1.4,"received_at":"…"}
{"type":"candle","symbol":"EURJPY","timeframe":"M1","ts":"2026-10-12T21:05:00+00:00","open":177.22,"high":177.25,"low":177.21,"close":177.23,"tick_volume":42,"source":"tradenation"}
{"type":"subscribed","topics":[…]} {"type":"pong","server_time":"…"} {"type":"error","error":"…"}
Client → server:
{"op":"subscribe","topics":["ticks:EURJPY","candles:*:M1"]}
{"op":"unsubscribe","topics":["candles"]}
{"op":"snapshot"} // latest tick of every subscribed symbol
{"op":"ping"}
Notes: ts is the broker's tick time (second resolution), received_at when it reached the database (milliseconds).
Candle ts is the candle's open time; a candle message is sent when the candle has closed. Clients that cannot keep up get messages dropped
(no unbounded buffering); the server pings every 30 s.
Examples
Browser / JavaScript
Python (pip install websockets)
Node.js (npm install ws)
Command line (websocat)
REST (history, JSON)
| Endpoint | Description |
|---|---|
/api/symbols | symbols with digits, point, pip |
/api/latest | latest tick per symbol |
/api/ticks?symbol=EURJPY&limit=500&since=2026-10-12T00:00:00Z | ticks, newest first (max 5000) |
/api/candles?symbol=EURJPY&timeframe=H1&source=tradenation&limit=500&from=…&to=… | candles, newest first (max 5000). source=histdata: H1 history Jan 2021 – Sep 2026 |
/api/stats | server statistics |