Getting your tick data
Exactick runs entirely on your machine and never downloads market data itself. You bring the files; the app reads them from your browser's local storage. That is a deliberate design choice, and it means there is one step to do before your first backtest. This page is that step.
Exactick hasn’t launched yet. Join the waitlist and we’ll email you the day it opens — waitlist members also lock in the founding price of $59. This guide is here so your data is already in place when that day comes.
1. The fastest start: the built-in sample
Open Exactick, go to Data, and click Try the sample. It loads in a few seconds and you can start replaying immediately.
Be clear about what it is: the sample is synthetic data — three days of generated ticks, not a recording of the market. It exists so you can learn the controls and see how fills are decided without waiting on a download. Every claim Exactick makes about your strategy is meant to be tested on real data, which is what the rest of this page is about.
2. What Exactick can read
Exactick imports a folder, not individual files. Two formats are accepted:
- Tick CSV from HistData or TrueFX — a folder of CSV files, one per month. Exactick works out which of the two formats it is by reading the first lines. This is the route we recommend, and section 3 walks through it.
-
Dukascopy bi5 — one compressed file per hour, in folders that
mirror Dukascopy's own structure:
EURUSD/2024/02/06/13h_ticks.bi5. Note that the month in that path is zero-based:02is March. Section 4 covers it, including why it takes far longer to collect.
Drag the folder onto the Data screen, or use Choose folder. You will see a summary — instrument, period, file count, size — before anything is converted.
3. HistData CSV, step by step (recommended)
HistData.com publishes tick data with bid and ask, free, one zip file per month, with no account and no registration. Three months of data is three downloads that take a few minutes — which is why this is the route we suggest first.
Download
- Go to Download Free Forex Data and choose Generic ASCII → Tick Data. This part matters: the M1 and NinjaTrader options are bar data, and only the Generic ASCII tick files carry the ask price. Without the ask there is no spread, and without a spread Exactick cannot fill an order honestly.
- Pick your pair, then a year, then a month, and press the download button.
-
You get
HISTDATA_COM_ASCII_EURUSD_T202407.zip. Unzip it. Inside areDAT_ASCII_EURUSD_T_202407.csv— the data — and a small.txtstatus report, which Exactick ignores. - Repeat for each month you want, unzip them all into one folder, and drop that folder onto the Data screen.
Keep the file names HistData gives you. There is no instrument column in
this format, so Exactick reads the pair out of the file name — the
EURUSD in DAT_ASCII_EURUSD_T_202407.csv. Rename the file to
something without the pair in it and the import will land under the wrong name.
Sizes, so nothing surprises you: a month of EUR/USD is roughly 8 MB zipped and about 55 MB as CSV (measured on 2018-01 and 2024-07). Three months is around 170 MB of CSV on disk before Exactick converts it into its own compact store.
Use 2010 or later
HistData's tick files carry the two prices as DateTime,Bid,Ask, and that is
what Exactick reads. In files from before 2010 the two prices are the other
way round: we downloaded a dozen months across three pairs on 2026-09-07, and every
row of EUR/USD 2000–2009, GBP/USD 2005 and USD/JPY 2006 has the ask below the bid,
while everything from 2010 onwards is correct.
A backtest run on those files would be given a negative spread — it would buy below the bid and sell above the ask, and every result would flatter you. So: take your three months from 2010 or later. If you specifically need an older period, use Dukascopy bi5 for it instead. Exactick checks for this when you drop the folder and stops before converting anything, rather than quietly building you a dataset that pays out on a spread that never existed.
About the clock in these files
HistData stamps its rows in New York local time, and Exactick converts them to UTC on import, following US daylight saving. Their own FAQ says the times are a fixed Eastern offset with no daylight-saving adjustment; the files say otherwise, and we went with the files. We checked two independent markers — the Friday close and Sunday open of every weekend in the file, and the tick burst at the US payrolls release — on data from 2010 and from 2024, and both land where New York local time puts them. If an import still looks shifted in time to you, that is worth telling us about: email [email protected] with one line of the file.
4. Dukascopy bi5, when you want Dukascopy's data specifically
Dukascopy publishes historical tick data free of charge and permits downloading it for personal use. There is no public API and no way for a web page to fetch it directly, so you run a small script on your own machine. Choose this route when you want that particular feed, or a period HistData does not serve well — not because it is faster, because it is not.
What you need
- Node.js version 18 or newer.
- Our downloader: exactick-fetch-bi5.mjs. It is a single file with no dependencies, and you can read all of it before running it.
Run it
Open a terminal in the folder where you saved the script, and ask for a few days to start with:
node exactick-fetch-bi5.mjs --pair EURUSD --from 2024-03-04 --to 2024-03-08
That writes into ./exactick-data/EURUSD/. When it finishes, drop the
EURUSD folder onto the Data screen. Other options are
--out (where to save) and --interval (milliseconds between
requests); --pair takes any Dukascopy instrument, such as
GBPJPY or XAUUSD.
Expect this to be slow, and plan for it
Dukascopy rate-limits repeated downloads from the same IP address, and the limit is real. How real varies a great deal between sessions. Our best measurement got six consecutive hourly files before a refusal. Our worst, on the same day and from the same machine, completed two requests out of twenty in five minutes — the rest were refused, timed out, or had the connection dropped outright. No setting in the script removes this — it is on their side. Plan for the worst case, not the best one.
So the honest advice is:
- Start with days, not years. A week is 168 files; a year is more than 8,700. Test your idea on a small period first — if it does not survive a week of ticks, a year will not save it.
- Stopping is safe. The script never re-downloads a file you already have. Press Ctrl+C whenever you like and run the same command again later to continue where it stopped.
-
Do not fight the limit. After a failure the script waits several minutes
on purpose; retrying hard during a block appears to make it last longer. If you see
repeated retries, stop, raise
--interval, and come back later.
5. TrueFX
TrueFX also publishes historical tick CSV, and Exactick recognises its layout. Two things to know before you go there: their historical downloads require you to register an account, and unlike HistData we have not yet been able to verify our reader against a real TrueFX file — the format we implemented is the publicly known one, not one we have confirmed byte for byte. It should work. If you use TrueFX, we would genuinely like to hear how it went: [email protected].
6. How much data do you actually need?
More than you think for a conclusion, and less than you think to start. A week is enough to see whether your exits behave the way your backtester claimed. A few months is enough to see whether an edge survives a change of regime. The Free tier covers any single dataset up to three months long — and you choose which three months, so you can test 2015 as easily as last quarter.
Getting three months is a few minutes of clicking on the CSV route in section 3, and days of elapsed time on the bi5 route in section 4 — three months of hourly bi5 files is about 2,160 downloads, and at the rates we measured that is something you start and leave running, not an afternoon's work. Whichever route you take, import a short range first and confirm it looks right before committing to the rest.
7. Troubleshooting
-
The instrument shows up with the wrong name (CSV). HistData files carry
no instrument column, so the pair is read from the file name. Restore the original name,
such as
DAT_ASCII_EURUSD_T_202407.csv. - “The ask price is below the bid” on import (CSV). Check the year of the files. In HistData files from before 2010 the bid and ask columns are the other way round, and Exactick refuses them rather than give your backtest a negative spread. Use 2010 onwards, as in section 3.
- Some files are zero bytes (bi5). That is correct. The market is closed at weekends and Dukascopy answers with an empty file rather than an error. Exactick skips them.
-
“No bi5 or CSV files matched a known format” on import.
The folder structure
matters. Exactick reads the instrument and the timestamp out of the path, so
EURUSD/2024/02/06/13h_ticks.bi5works and a flat folder of renamed files does not. -
The dates look one month off (bi5). Dukascopy's month is zero-based in
the path.
2024/02is March 2024, not February. - The download keeps retrying (bi5). You are rate-limited. Stop, wait, and re-run the same command — only the missing files will be fetched.
- Still stuck? Email [email protected]. Questions are answered asynchronously, usually within two business days.
8. A note on data licensing
The data belongs to whoever published it, not to us and not to you. Dukascopy permits downloads for personal use but does not permit redistributing the data or building a competing database from it. HistData gives the data away without publishing licence terms beyond “use it at your own risk”, and TrueFX has terms of its own. Read the terms of whichever source you use, and keep what you download to yourself.
This is also why the built-in sample is synthetic. We cannot legally ship you somebody else's market data, so we generate our own for the demo and leave the real thing to you.