banner-left

历史行情数据

提供近年来多种数据类型,助您精准回测策略,洞察微观市场。

banner-left

方式一:点击下载

deals

成交数据

支持下载从 2023 年 1 月起的成交数据

下载

candlesticks

K 线行情数据

支持下载从 2023 年 1 月起的 K 线行情数据

下载

orderbooks

市场深度

支持下载从 2021 年 8 月起的市场深度

下载

orderbooks_slice

深度快照

支持下载从 2021 年 8 月起的深度快照

下载

方式二:API 请求下载

请求路径构建方式:

https://download.gatedata.org/(biz)/(type)/(year)(month)/(market)-(year)(month).csv.gz

例如:

BTC本位合约-深度快照 BTC_USD 2023-04-25 13:00~14:00 的数据 (北京时间需要减8个小时):

curl -O https://download.gatedata.org/futures_btc/orderbooks_slice/202304/BTC_USD-2023042505.gz

代码示例:

1import os
2import shutil
3import urllib.request
4from datetime import datetime, timedelta
5
6BASE_URL = "https://download.gatedata.org"
7HOURLY_TYPES = {"orderbooks", "orderbooks_slice"}
8
9
10def build_url(biz: str, type_: str, market: str, dt_utc: datetime) -> str:
11    ym   = dt_utc.strftime("%Y%m")      # folder:  202304
12    ymdh = dt_utc.strftime("%Y%m%d%H")  # hourly:  2023042505
13
14    if type_ == "orderbooks_slice":
15        fname = f"{market}-{ymdh}.gz"
16    elif type_ == "orderbooks":
17        fname = f"{market}-{ymdh}.csv.gz"
18    else:
19        fname = f"{market}-{ym}.csv.gz"
20
21    return f"{BASE_URL}/{biz}/{type_}/{ym}/{fname}"
22
23
24def download_and_extract(url: str, save_dir: str) -> str:
25    # build sub-folder from URL: {save_dir}/{biz}/{type}
26    parts = url.split("/")
27    save_dir = os.path.join(save_dir, parts[3], parts[4])
28    os.makedirs(save_dir, exist_ok=True)
29    gz_name = parts[-1]
30    gz_path = os.path.join(save_dir, gz_name)
31
32    print(f"↓ {url}")
33    urllib.request.urlretrieve(url, gz_path)
34
35    # orderbooks_slice → .txt, others (.csv.gz) → .csv
36    if gz_name.endswith(".csv.gz"):
37        out_path = gz_path[: -len(".csv.gz")] + ".csv"
38    else:
39        out_path = gz_path[: -len(".gz")] + ".txt"
40
41    with gzip.open(gz_path, "rb") as f_in, open(out_path, "wb") as f_out:
42        shutil.copyfileobj(f_in, f_out)
43
44    os.remove(gz_path)
45    print(f"  saved → {out_path}")
46    return out_path
47
48
49def batch_download(biz: str, type_: str, market: str,
50                   save_dir: str,
51                   start_dt: datetime,
52                   end_dt: datetime = None):
53    """
54    If end_dt is omitted, downloads only the single file for start_dt.
55
56    Monthly granularity types: iterates month by month.
57      e.g. start_dt=datetime(2026,1,1), end_dt=datetime(2026,3,1)
58           → downloads 202601 / 202602 / 202603
59
60    Hourly granularity types (orderbooks / orderbooks_slice): iterates hour by hour.
61      e.g. start_dt=datetime(2026,1,1,0), end_dt=datetime(2026,1,2,23)
62           → downloads 2026010100 ~ 2026010223, 48 files in total
63    """
64    if end_dt is None:
65        end_dt = start_dt
66
67    if type_ in HOURLY_TYPES:
68        dt = start_dt
69        while dt <= end_dt:
70            download_and_extract(build_url(biz, type_, market, dt), save_dir)
71            dt += timedelta(hours=1)
72    else:
73        dt = start_dt.replace(day=1, hour=0, minute=0, second=0)
74        end = end_dt.replace(day=1, hour=0, minute=0, second=0)
75        while dt <= end:
76            download_and_extract(build_url(biz, type_, market, dt), save_dir)
77            dt = (dt.replace(day=1) + timedelta(days=32)).replace(day=1)
78
79
80if __name__ == "__main__":
81    # ── Spot ──────────────────────────────────────────────────────────────
82    # Single download
83    batch_download("spot", "deals",            "BTC_USDT", "./data", datetime(2023, 4, 25))
84    # batch_download("spot", "candlesticks_1m",  "BTC_USDT", "./data", datetime(2023, 4, 25))
85    # batch_download("spot", "candlesticks_5m",  "BTC_USDT", "./data", datetime(2023, 4, 25))
86    # batch_download("spot", "candlesticks_1h",  "BTC_USDT", "./data", datetime(2023, 4, 25))
87    # batch_download("spot", "candlesticks_4h",  "BTC_USDT", "./data", datetime(2023, 4, 25))
88    # batch_download("spot", "candlesticks_1d",  "BTC_USDT", "./data", datetime(2023, 4, 25))
89    # batch_download("spot", "candlesticks_7d",  "BTC_USDT", "./data", datetime(2023, 4, 25))
90    # batch_download("spot", "orderbooks",       "BTC_USDT", "./data", datetime(2023, 4, 25, 5))
91    # batch_download("spot", "orderbooks_slice", "BTC_USDT", "./data", datetime(2023, 4, 25, 5))
92    # Batch download
93    batch_download("spot", "deals",            "BTC_USDT", "./data", datetime(2023, 1, 1), datetime(2023, 4, 1))
94    # batch_download("spot", "candlesticks_1m",  "BTC_USDT", "./data", datetime(2023, 1, 1), datetime(2023, 4, 1))
95    # batch_download("spot", "candlesticks_5m",  "BTC_USDT", "./data", datetime(2023, 1, 1), datetime(2023, 4, 1))
96    # batch_download("spot", "candlesticks_1h",  "BTC_USDT", "./data", datetime(2023, 1, 1), datetime(2023, 4, 1))
97    # batch_download("spot", "candlesticks_4h",  "BTC_USDT", "./data", datetime(2023, 1, 1), datetime(2023, 4, 1))
98    # batch_download("spot", "candlesticks_1d",  "BTC_USDT", "./data", datetime(2023, 1, 1), datetime(2023, 4, 1))
99    # batch_download("spot", "candlesticks_7d",  "BTC_USDT", "./data", datetime(2023, 1, 1), datetime(2023, 4, 1))
100    # batch_download("spot", "orderbooks",       "BTC_USDT", "./data", datetime(2023, 4, 25, 0), datetime(2023, 4, 25, 23))
101    # batch_download("spot", "orderbooks_slice", "BTC_USDT", "./data", datetime(2023, 4, 25, 0), datetime(2023, 4, 25, 23))
102
103    # ── futures_usdt ──────────────────────────────────────────────────────────
104    # Single download
105    # batch_download("futures_usdt", "trades",            "BTC_USDT", "./data", datetime(2023, 4, 25))
106    # batch_download("futures_usdt", "candlesticks_10s",  "BTC_USDT", "./data", datetime(2023, 4, 25))
107    # batch_download("futures_usdt", "candlesticks_1m",   "BTC_USDT", "./data", datetime(2023, 4, 25))
108    # batch_download("futures_usdt", "candlesticks_1h",   "BTC_USDT", "./data", datetime(2023, 4, 25))
109    # batch_download("futures_usdt", "candlesticks_4h",   "BTC_USDT", "./data", datetime(2023, 4, 25))
110    # batch_download("futures_usdt", "candlesticks_1d",   "BTC_USDT", "./data", datetime(2023, 4, 25))
111    # batch_download("futures_usdt", "candlesticks_7d",   "BTC_USDT", "./data", datetime(2023, 4, 25))
112    # batch_download("futures_usdt", "orderbooks",        "BTC_USDT", "./data", datetime(2023, 4, 25, 5))
113    # batch_download("futures_usdt", "orderbooks_slice",  "BTC_USDT", "./data", datetime(2023, 4, 25, 5))
114    # batch_download("futures_usdt", "mark_prices",       "BTC_USDT", "./data", datetime(2023, 4, 25))
115    # batch_download("futures_usdt", "funding_applies",   "BTC_USDT", "./data", datetime(2023, 4, 25))
116    # batch_download("futures_usdt", "funding_updates",   "BTC_USDT", "./data", datetime(2023, 4, 25))
117    # Batch download
118    # batch_download("futures_usdt", "trades",            "BTC_USDT", "./data", datetime(2023, 1, 1), datetime(2023, 4, 1))
119    # batch_download("futures_usdt", "candlesticks_10s",  "BTC_USDT", "./data", datetime(2023, 1, 1), datetime(2023, 4, 1))
120    # batch_download("futures_usdt", "candlesticks_1m",   "BTC_USDT", "./data", datetime(2023, 1, 1), datetime(2023, 4, 1))
121    # batch_download("futures_usdt", "candlesticks_1h",   "BTC_USDT", "./data", datetime(2023, 1, 1), datetime(2023, 4, 1))
122    # batch_download("futures_usdt", "candlesticks_4h",   "BTC_USDT", "./data", datetime(2023, 1, 1), datetime(2023, 4, 1))
123    # batch_download("futures_usdt", "candlesticks_1d",   "BTC_USDT", "./data", datetime(2023, 1, 1), datetime(2023, 4, 1))
124    # batch_download("futures_usdt", "candlesticks_7d",   "BTC_USDT", "./data", datetime(2023, 1, 1), datetime(2023, 4, 1))
125    # batch_download("futures_usdt", "orderbooks",        "BTC_USDT", "./data", datetime(2023, 4, 25, 0), datetime(2023, 4, 25, 23))
126    # batch_download("futures_usdt", "orderbooks_slice",  "BTC_USDT", "./data", datetime(2023, 4, 25, 0), datetime(2023, 4, 25, 23))
127    # batch_download("futures_usdt", "mark_prices",       "BTC_USDT", "./data", datetime(2023, 1, 1), datetime(2023, 4, 1))
128    # batch_download("futures_usdt", "funding_applies",   "BTC_USDT", "./data", datetime(2023, 1, 1), datetime(2023, 4, 1))
129    # batch_download("futures_usdt", "funding_updates",   "BTC_USDT", "./data", datetime(2023, 1, 1), datetime(2023, 4, 1))
130
131    # ── futures_btc ────────────────────────────────────────────────────────
132    # Single download
133    # batch_download("futures_btc", "trades",            "BTC_USD", "./data", datetime(2023, 4, 25))
134    # batch_download("futures_btc", "candlesticks_10s",  "BTC_USD", "./data", datetime(2023, 4, 25))
135    # batch_download("futures_btc", "candlesticks_1m",   "BTC_USD", "./data", datetime(2023, 4, 25))
136    # batch_download("futures_btc", "candlesticks_1h",   "BTC_USD", "./data", datetime(2023, 4, 25))
137    # batch_download("futures_btc", "candlesticks_4h",   "BTC_USD", "./data", datetime(2023, 4, 25))
138    # batch_download("futures_btc", "candlesticks_1d",   "BTC_USD", "./data", datetime(2023, 4, 25))
139    # batch_download("futures_btc", "candlesticks_7d",   "BTC_USD", "./data", datetime(2023, 4, 25))
140    # batch_download("futures_btc", "orderbooks",        "BTC_USD", "./data", datetime(2023, 4, 25, 5))
141    # batch_download("futures_btc", "orderbooks_slice",  "BTC_USD", "./data", datetime(2023, 4, 25, 5))
142    # batch_download("futures_btc", "mark_prices",       "BTC_USD", "./data", datetime(2023, 4, 25))
143    # batch_download("futures_btc", "funding_applies",   "BTC_USD", "./data", datetime(2023, 4, 25))
144    # batch_download("futures_btc", "funding_updates",   "BTC_USD", "./data", datetime(2023, 4, 25))
145    # Batch download
146    # batch_download("futures_btc", "trades",            "BTC_USD", "./data", datetime(2023, 1, 1), datetime(2023, 4, 1))
147    # batch_download("futures_btc", "candlesticks_10s",  "BTC_USD", "./data", datetime(2023, 1, 1), datetime(2023, 4, 1))
148    # batch_download("futures_btc", "candlesticks_1m",   "BTC_USD", "./data", datetime(2023, 1, 1), datetime(2023, 4, 1))
149    # batch_download("futures_btc", "candlesticks_1h",   "BTC_USD", "./data", datetime(2023, 1, 1), datetime(2023, 4, 1))
150    # batch_download("futures_btc", "candlesticks_4h",   "BTC_USD", "./data", datetime(2023, 1, 1), datetime(2023, 4, 1))
151    # batch_download("futures_btc", "candlesticks_1d",   "BTC_USD", "./data", datetime(2023, 1, 1), datetime(2023, 4, 1))
152    # batch_download("futures_btc", "candlesticks_7d",   "BTC_USD", "./data", datetime(2023, 1, 1), datetime(2023, 4, 1))
153    # batch_download("futures_btc", "orderbooks",        "BTC_USD", "./data", datetime(2023, 4, 25, 0), datetime(2023, 4, 25, 23))
154    # batch_download("futures_btc", "orderbooks_slice",  "BTC_USD", "./data", datetime(2023, 4, 25, 0), datetime(2023, 4, 25, 23))
155    # batch_download("futures_btc", "mark_prices",       "BTC_USD", "./data", datetime(2023, 1, 1), datetime(2023, 4, 1))
156    # batch_download("futures_btc", "funding_applies",   "BTC_USD", "./data", datetime(2023, 1, 1), datetime(2023, 4, 1))
157    # batch_download("futures_btc", "funding_updates",   "BTC_USD", "./data", datetime(2023, 1, 1), datetime(2023, 4, 1))

开发者提示:

时区转换:路径使用 UTC 时间

深度快照:orderbooks_slice 仅提供 .gz 格式的文本快照。

K线粒度:candlesticks_ 后接粒度,如 candlesticks_1m。

变量说明:

参数名

业务含义

参数值

biz

现货 & 杠杆

spot

U本位合约

futures_usdt

BTC本位合约

futures_btc

type

现货&杠杆 (spot)

交易历史

deals

k线行情数据

candlesticks_* (*表示k线粒度: 1m,5m,1h,4h,1d,7d)

市场深度数据

orderbooks

市场快照数据

orderbooks_slice

USDT/BTC合约 (futures_usdt / futures_btc)

交易历史

trades

k线行情数据

candlesticks_* (*表示k线粒度: 1m,5m,1h,4h,1d,7d)

市场深度数据

orderbooks

市场快照数据

orderbooks_slice

标记价格

mark_prices

执行资金费率

funding_applies

更新下一周期预测的资金费率

funding_updates

time

year

2023

month

01-12

day

01-31

hour

00-23

注: 小时是按照UTC时间,如果是中国地区UTC-8,下载时需要当前小时减去8小时: 例如:

For 2023-04-25 13:00~14:00 data, its download time is 2023042505