TickWise Market Data

Your broker's minute bars, in a database you control.

Connects to your MetaTrader 5 Manager account, backfills as far as the server will serve, and keeps it current. M1 OHLC with tick volume and spread, written to your own Postgres.

M1 availability, measured on one live account Days back →
EURUSD
M1 to ~150 days H1 only
BTCUSD
M1 to 365 days and beyond
090180270365

How far back you can go is your broker's decision, per symbol. Past the cliff the access server does not fail — it quietly returns hourly bars stamped five past the hour. TickWise detects that and refuses them, recording where the boundary actually fell, rather than writing hourly data into a table labelled M1.

How it works

Four steps, in this order.

Each one depends on the last: you cannot backfill a symbol you have not discovered, on an account you have not connected.

STEP 1

Connect an account

Add a label, server, login and manager password. It connects immediately and tells you if the account lacks chart or symbol rights.

STEP 2

Choose symbols

Discover everything the broker lists, then pick what to collect — or switch on collect-everything and let each pass re-sync the list.

STEP 3

Backfill history

Runs newest month backwards in seven-day chunks. Resumes month by month after an interruption, and one bad month does not stop the run.

STEP 4

Stay current

Every five minutes each symbol walks forward from its newest stored bar, overlapping three minutes so a still-forming bar gets revised.

Stored
M1 bars: open, high, low, close, tick volume, real volume and spread, keyed by account, symbol and bar-open time in UTC
Timeframes
M5, M15, H1, H4 and D1 are aggregated from M1 when you ask for them, so there is one source of truth on disk
Accounts
Several MT5 accounts at once. Two brokers quoting the same symbol stay separate series, and a compare view puts them on one axis
Live quote
The freshest bid, ask and last per symbol, cached in Redis. Entries expire, so a stopped collector reads as no quote rather than a stale price
Storage
Your Postgres. Writes are idempotent upserts, so re-collecting a window revises bars instead of duplicating them
Credentials
Manager passwords are encrypted with Fernet before they reach the database, and the key lives only in the environment — a database dump alone does not disclose them
Interfaces
A web console for operators, and a read API for other services

Limits

What it will not do.

These are the things worth knowing before you buy, not after. Every one is a property of MetaTrader or of your broker, and we would rather you test them than discover them.

History is bounded by your broker

M1 retention is set per symbol by the access server. On one measured live account EURUSD ran out around 150 days while BTCUSD still had a full year. No software can manufacture history the server no longer serves.

No tick history

Ticks are fetched live on request and the newest one is cached, but they are never stored. If you need a persisted tick archive, this is not that product.

No market depth

Depth is reported as unavailable. On the account we measured, every one of the 479 symbols had book depth switched off at the server.

Broker symbol names, verbatim

Nothing is renamed or mapped. On one broker GOLD returns data and XAUUSD returns nothing, and two accounts may not offer the same universe.

One backfill at a time

Backfill runs singly and its progress log is held in memory, so a restart mid-run loses the log. The per-month record on disk survives, and a re-run resumes from it.

Collection is sequential

Each pass walks symbols one at a time. Collect enough of them and a pass takes longer than its interval; the console says so plainly and tells you to widen the interval or collect fewer.