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

支持下载从 2023 年 1 月起的成交数据
下载
支持下载从 2023 年 1 月起的 K 线行情数据
下载
支持下载从 2021 年 8 月起的市场深度
下载
支持下载从 2021 年 8 月起的深度快照
下载
请求路径构建方式:
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