開源

histdata:歷史資料下載工具

從 histdata.com 下載歷史市場資料,將 M1 資料轉換為壓縮 Apache Parquet 檔案。從 34 個交易標的中選擇所需資料,用於本機研究。

Python 3.10+Apache ParquetzstdMIT 授權條款34 個交易標的
在 GitHub 上檢視
命令列範例
$ pip install git+https://github.com/StratCraftsAI/histdata.git
$ histdata --pairs EURUSD GBPUSD --year-start 2020 --year-end 2025
輸出範例:每個交易標的產生一個 Parquet 檔案
output/EURUSD_M1.parquet
output/GBPUSD_M1.parquet

功能

建立本機市場資料集,並在量化分析前檢查其涵蓋範圍。

34 個交易標的

23 個外匯貨幣對、2 個商品(WTI 與布蘭特原油)及 9 個指數,包括標普 500、日經指數與 DAX。

Apache Parquet 輸出

採用 zstd 壓縮的 Parquet 檔案,可用 pandas、Polars、DuckDB 及其他相容 Arrow 的工具讀取。

命令列工具

使用 pip 安裝,透過 histdata 命令選擇交易標的與年份。

歷史資料封存檔選擇

M1 下載會依據要求的日期範圍選擇可用的年度或月度封存檔,並重複使用已驗證的本機封存檔。

明確的資料型別

OHLCV 欄位使用 timestamp[ms] 與 float64 型別。分析前請檢查來源資料時區與所選的命令列工作流程。

Python 相依套件

使用 requests、beautifulsoup4、pyarrow 與 filelock。需要 Python 3.10 或更新版本。

處理流程

下載封存檔、解析 M1 資料,並寫入具有明確資料型別的 Parquet 檔案。

1
擷取權杖
→
2
下載 ZIP
→
3
解析 M1 CSV
→
4
寫入 Parquet
histdata.com → ZIP (CSV) → list[OHLCVRow] → Parquet (zstd)

支援的交易標的

涵蓋外匯、商品與全球指數,共 34 個交易標的。可用歷史資料範圍依標的而異。

外匯 23

主要貨幣對

EURUSDGBPUSDUSDJPYUSDCHFUSDCADAUDUSDNZDUSD

交叉貨幣對

EURAUDEURCADEURCHFEURGBPEURNZDGBPAUDGBPCADGBPCHFGBPNZDAUDNZD

日圓交叉貨幣對

AUDJPYCADJPYCHFJPYEURJPYGBPJPYNZDJPY

商品 2

BCOUSDBrent Crude Oil
WTIUSDWTI Crude Oil

指數 9

AUXAUDASX 200
FRXEURCAC 40
GRXEURDAX 30
HKXHKDHang Seng
JPXJPYNikkei 225
NSXUSDNASDAQ 100
SPXUSDS&P 500
UDXUSDUS Dollar Index
UKXGBPFTSE 100

輸出資料結構

Parquet 欄位具有明確的資料型別。合併資料集前,請驗證時間戳記與資料品質。

欄位型別說明
timestamptimestamp[ms]K 線時間;一般 M1 下載使用 UTC,--skip-download 保留來源資料的 EST 時間
openfloat64開盤價
highfloat64最高價
lowfloat64最低價
closefloat64收盤價
volumefloat64來源資料成交量欄位
資料來源histdata.com — 通用 ASCII CSV,以分號分隔;無需 API 金鑰
來源資料時區EST (UTC-5, 不進行日光節約時間調整)
格式Apache Parquet + zstd

快速開始

從 GitHub 安裝,並選擇所需的交易標的與日期範圍。

安裝
pip install git+https://github.com/StratCraftsAI/histdata.git
命令列用法
# Download EURUSD 2020-2025 and convert to Parquet
histdata --pairs EURUSD --year-start 2020 --year-end 2025

# Multiple pairs
histdata --pairs EURUSD GBPUSD USDJPY --year-start 2015 --year-end 2025

# All 34 instruments
histdata --pairs all --year-start 2020 --year-end 2025
使用 pandas 讀取
import pandas as pd

df = pd.read_parquet("output/EURUSD_M1.parquet")
print(df.head())
#              timestamp     open     high      low    close  volume
# 0 2023-01-02 17:00:00  1.07045  1.07048  1.07045  1.07048     0.0

命令列選項

選項預設值說明
--pairs外匯 (23)要下載的交易標的。使用 "all" 選擇全部 34 個標的。
--year-start2020下載的起始年份。
--year-end2025下載的結束年份。
--timeframeM1M1 轉換一分鐘 K 線。tick 選項可以下載封存檔,但沒有 tick 解析器,也不輸出 Parquet。
--output-dir./outputParquet 輸出檔案目錄。
--zip-dir./downloads下載的 ZIP 封存檔目錄。
--skip-downloadoff僅轉換現有的 M1 ZIP 檔案;保留來源資料的 EST 時間戳記。
-v, --verboseoff啟用偵錯日誌。

常見問題

需要 API 金鑰嗎?

無需 API 金鑰。下載工具會在下載前從 histdata.com 取得封存檔權杖。

下載需要多長時間?

所需時間取決於可用封存檔的數量與大小、網路狀況及本機處理速度。下載工具會限制請求頻率,不保證完成時間。

可以將輸出用於量化研究嗎?

M1 Parquet 檔案可透過 pandas 或其他相容 Parquet 的工具讀取。匯入研究平台前,請檢查資料涵蓋範圍、品質、欄位對應與時區要求。

時間戳記使用哪個時區?

來源 CSV 使用固定 EST(UTC-5),不進行日光節約時間調整。一般 M1 下載會轉換為 UTC。--skip-download 流程保留解析後的來源資料 EST 值。Parquet 的 timestamp[ms] 不含時區中繼資料。

支援 tick 資料嗎?

--timeframe tick 選項可以下載 tick 封存檔,但尚未實作 tick 解析與 Parquet 轉換。若要取得文件所述的 OHLCV 輸出,請使用 M1。

開始使用

採用 MIT 授權條款的開源軟體。擴大使用範圍前,請閱讀原始碼並驗證一個小型資料集。