API and dataset download for histdata.com. Tick data is also available with the API.
For a broader support, consider checking out this project [https://github.com/dmidlo/histdata.com-tools].
-
Click Here to download it: All instruments - 1Minute - 2000 / 2024 - Google Drive link (3GB).
-
You can also re-download the whole dataset (up to date) by yourself:
pip install -r requirements.txt
python download_all_fx_data.pyExpect it to take around 10 minutes if you have a fast internet connection.
Below are end-to-end steps to set up a virtual environment, install dependencies, and run the downloader. Commands are for macOS with zsh.
- Create and activate a virtual environment
python3 -m venv .venv
source .venv/bin/activate- Install dependencies
pip install -r requirements.txt- Choose an output directory (optional)
The downloader writes data to ./output by default. To customize:
export FX_DATA_OUTPUT="$PWD/data"
mkdir -p "$FX_DATA_OUTPUT"- Run the full download
python download_all_fx_data.pyNotes:
- The script reads pairs from
pairs.csvand fetches data year-by-year (falls back to month-by-month when needed). - You can edit
pairs.csvto add/remove instruments before running. - Re-running is idempotent for already-downloaded files.
CSV files from HistData are in EST (no DST). To shift timestamps, use:
python convert_est_to_target_time.py path/to/DAT_ASCII_EURJPY_M1_201705.csv +13This creates OUT_DAT_ASCII_EURJPY_M1_201705.csv with the DateTime column shifted by +13 hours. Use negative values (e.g., -2) to shift backward.
If you want to re-zip output folders with maximum compression using 7-zip:
# Install 7-zip once
brew install p7zip
# Re-compress all per-pair folders inside your output directory
bash recompress-zip.sh "$FX_DATA_OUTPUT" # or ./output if you didn’t set FX_DATA_OUTPUTThe script unzips, then re-zips matching CSVs and their status TXT files using high compression.
pip install histdatafrom histdata import download_hist_data as dl
from histdata.api import Platform as P, TimeFrame as TF- Download tick data for 2019/06:
dl(year='2019', month='6', pair='eurusd', platform=P.GENERIC_ASCII, time_frame=TF.TICK_DATA)- Other possible calls:
dl(year='2019', month='6', pair='eurusd', platform=P.NINJA_TRADER, time_frame=TF.TICK_DATA_LAST)
dl(year='2019', month='6', pair='eurusd', platform=P.NINJA_TRADER, time_frame=TF.TICK_DATA_ASK)
dl(year='2019', month='6', pair='eurusd', platform=P.NINJA_TRADER, time_frame=TF.TICK_DATA_BID)
dl(year='2019', month='6', pair='eurusd', platform=P.NINJA_TRADER, time_frame=TF.ONE_MINUTE)
dl(year='2019', month='6', pair='eurusd', platform=P.GENERIC_ASCII, time_frame=TF.TICK_DATA)
dl(year='2019', month='6', pair='eurusd', platform=P.EXCEL, time_frame=TF.ONE_MINUTE)
dl(year='2019', month='6', pair='eurusd', platform=P.META_TRADER, time_frame=TF.ONE_MINUTE)
dl(year='2019', month='6', pair='eurusd', platform=P.META_STOCK, time_frame=TF.ONE_MINUTE)
dl(year='2018', month='6', pair='eurusd', platform=P.NINJA_TRADER, time_frame=TF.TICK_DATA_LAST)
dl(year='2018', month='6', pair='eurusd', platform=P.NINJA_TRADER, time_frame=TF.TICK_DATA_ASK)
dl(year='2018', month='6', pair='eurusd', platform=P.NINJA_TRADER, time_frame=TF.TICK_DATA_BID)This repository contains:
- A dataset of all the FX prices (1-minute data) from 2000, in Generic ASCII.
- More than 66 FX pairs
- Contains some commodities:
- WTI/USD = WEST TEXAS INTERMEDIATE in USD
- BCO/USD = BRENT CRUDE OIL in USD
- Contains some indexes:
- SPX/USD = S&P 500 in USD
- JPX/JPY = NIKKEI 225 in JPY
- NSX/USD = NASDAQ 100 in USD
- FRX/EUR = FRENCH CAC 40 in EUR
- UDX/USD = US DOLLAR INDEX in USD
- UKX/GBP = FTSE 100 in GBP
- GRX/EUR = DAX 30 in EUR
- AUX/AUD = ASX 200 in AUD
- HKX/HKD = HAN SENG in HKD
- TX/EUR = EUROSTOXX 50 in EUR
- A set of functions to download the historical prices yourself.
All the data is retrieved from: histdata.com
Any file in a dataset is zipped and contains:
- a CSV (semicolon separated file).
- a status report (containing some meta data such as gaps).
Any CSV file looks like this:
20120201 000000;1.306600;1.306600;1.306560;1.306560;0
20120201 000100;1.306570;1.306570;1.306470;1.306560;0
20120201 000200;1.306520;1.306560;1.306520;1.306560;0
20120201 000300;1.306610;1.306610;1.306450;1.306450;0
20120201 000400;1.306470;1.306540;1.306470;1.306520;0
[...]Headers are not included in the CSV files. They are:
DateTime Stamp;Bar OPEN Bid Quote;Bar HIGH Bid Quote;Bar LOW Bid Quote;Bar CLOSE Bid Quote;Volume
Format:
YYYYMMDD HHMMSS
Legend:
- YYYY – Year
- MM – Month (01 to 12)
- DD – Day of the Month
- HH – Hour of the day (in 24h format)
- MM – Minute
- SS – Second, in this case it will be always 00
TimeZone: Eastern Standard Time (EST) time-zone WITHOUT Day Light Savings adjustments
The open (first) bid quote of the 1M bin.
The highest bid quote of the 1M bin.
The lowest bid quote of the 1M bin.
The close (last) bid quote of the 1M bin.
Number of lots. Looks like it's always 0.