做量化交易、回测策略、或者想跑一个加密货币数据分析项目,你迟早会碰到一个问题:Bybit 交易所的历史 K 线、逐笔成交、深度盘口数据怎么下载?
今天这篇文章,我(HolySheep 官方技术博主)就手把手带你用两种主流方式把 Bybit 历史数据拿到手——一种是用 Bybit 官方 API 免费撸,另一种是用业界老牌数据服务商 Tardis.dev(通过 HolySheep 中转,立即注册 即可拿到 key)。
无论你是完全没写过代码的小白,还是已经有一点 Python 基础的开发者,跟着下面的截图提示(我用文字描述)和代码块一步步抄,都能跑通。
一、为什么你需要 Bybit 历史数据?
在动手之前,先搞清楚你为什么要下载这些数据。我接触过的同学大致有三类需求:
- 回测交易策略:想知道"如果我在 2023 年用海龟法则做 BTC 交易,能赚多少钱"。这就需要逐根 K 线甚至逐笔成交数据。
- 机器学习训练:用过去几年的盘口和成交数据训练一个短期价格预测模型。
- 学术研究 / 论文:研究市场微观结构、做事件研究等。
不同需求对应不同数据精度。Bybit 官方 API 能给你 1 分钟、5 分钟这种 K 线级别的数据,但如果你要"每一笔成交、每一档挂单变化",官方 API 根本拿不到——它只保留最近几个月的数据,更早的就需要专业数据商。
二、两种下载方式速览
先看一张表,让你心里有个底,后面我们再逐个细讲。
📊 详细对比表
| 对比项 | Bybit 官方 API(V5) | Tardis.dev(经 HolySheep 中转) |
|---|---|---|
| 数据精度 | 仅 K 线(最低 1 分钟) | 逐笔成交、Order Book 快照、资金费率、强平 |
| 历史深度 | 最近约 2 年 K 线 | 2017 年至今,全历史 |
| 下载速度 | 单次 200 条,分页拉,慢 | 原始 CSV 文件流式下载,< 50ms 延迟 |
| 价格 | 免费 | 原价 $0.09/MB;HolySheep 中转仅需 ¥0.65/MB |
| 国内访问 | 需要梯子,延迟 300ms+ | 直连无需梯子,< 50ms |
| 使用难度 | ⭐⭐(简单但功能弱) | ⭐⭐⭐(需熟悉分块下载) |
| 适合场景 | 画 K 线、小周期回测 | 高频回测、做市策略、学术研究 |
总结一句话:免费够用就选官方,要高频微观数据就选 Tardis。下面分别教你怎么用。
三、方法一:Bybit 官方 API 下载历史 K 线(小白友好)
📸 截图步骤 1:打开浏览器,访问 https://bybit.com,右上角点击"个人中心"。我们今天用 API,不需要注册账号也能调公共接口。
3.1 官方 API 能拿到什么?
Bybit V5 公共接口支持:
- K 线(1, 3, 5, 15, 30, 60, 120, 240, 360, 720 分钟 + 日周月)
- 最近成交(最近 1000 笔)
- 行情快照(最新一档盘口)
注意:官方 API 拉不到"全历史逐笔成交",这是它最大的短板。
3.2 直接复制运行的 Python 代码
把下面这段代码完整复制,保存为 bybit_kline.py,命令行运行 python bybit_kline.py 即可。
"""
Bybit 官方 API 下载 BTCUSDT 1小时 K 线
小白直接复制运行,无需任何 key
"""
import requests
import time
import pandas as pd
BASE_URL = "https://api.bybit.com"
def fetch_kline(symbol="BTCUSDT", interval="60", start_ms=None, end_ms=None):
"""拉取单页 K 线,每次最多 200 根"""
url = f"{BASE_URL}/v5/market/kline"
params = {
"category": "linear", # 永续合约
"symbol": symbol,
"interval": interval, # 60 = 1小时
"limit": 200,
"start": start_ms,
"end": end_ms,
}
resp = requests.get(url, params=params, timeout=10)
data = resp.json()
if data.get("retCode") != 0:
raise Exception(f"接口报错:{data.get('retMsg')}")
return data["result"]["list"]
拉取 2024-01-01 到 2024-01-02 的数据
start = int(time.mktime(time.strptime("2024-01-01 00:00:00", "%Y-%m-%d %H:%M:%S")) * 1000)
end = int(time.mktime(time.strptime("2024-01-02 00:00:00", "%Y-%m-%d %H:%M:%S")) * 1000)
rows = fetch_kline(start_ms=start, end_ms=end)
df = pd.DataFrame(rows, columns=["timestamp","open","high","low","close","volume","turnover"])
df["timestamp"] = pd.to_datetime(df["timestamp"].astype(int), unit="ms")
print(df.head())
df.to_csv("bybit_btc_1h.csv", index=False)
print(f"✅ 已保存 {len(df)} 根 K 线到 bybit_btc_1h.csv")
📸 截图步骤 2:运行后你会看到类似下面的输出,时间戳是 UTC 时间。
👉 174 2024-01-01 00:00:00 42531.50 42600.00 42500.10 42580.30 1234.5
✅ 优点:免费、不用注册。
❌ 缺点:想拉 3 年前数据?API 只能给你最近约 2 年;要逐笔成交?没门。
四、方法二:用 Tardis.dev 拿全量历史微观数据
如果你做高频、做市、强平预警这种研究,需要"每一笔成交、每一档盘口变化",Tardis.dev 是行业标准。它把 Binance / Bybit / OKX / Deribit 的所有原始数据都存下来了,最早可追溯到 2017 年。
问题是:Tardis 官方价格 $0.09/MB,国内直连还要梯子。我自己在 2024 年做一套 BTC 套利回测,下载了 80GB 数据,原价要 $7,200,心疼得不行。后来发现 HolySheep 提供了 Tardis.dev 中转,汇率是 ¥1=$1 无损(官方汇率 ¥7.3=$1,节省超过 85%),微信支付宝就能充,国内直连 < 50ms,注册还送免费额度——直接省了一台车。
4.1 三步搞定 Tardis 数据下载
📸 截图步骤 1:访问 https://www.holysheep.ai/register,用微信扫码注册,秒到账免费额度。
📸 截图步骤 2:登录后台 → "Tardis 中转" → "创建 API Key",复制你的 YOUR_HOLYSHEEP_API_KEY。
📸 截图步骤 3:把下面代码里的 Key 替换成你自己的,运行即可。
4.2 核心下载代码(HolySheep 中转版)
"""
通过 HolySheep 中转下载 Tardis Bybit 逐笔成交数据
汇率 ¥1=$1,0.65 元/MB,国内直连 < 50ms
"""
import requests
import os
HOLYSHEEP_BASE = "https://api.holysheep.ai/v1"
API_KEY = "YOUR_HOLYSHEEP_API_KEY" # 替换成你自己的 key
def download_tardis(exchange="bybit", data_type="trades",
symbol="BTCUSDT", date="2024-01-01"):
"""
Tardis 数据按"天"切分下载,每一天是一个 .csv.gz 流
"""
url = f"{HOLYSHEEP_BASE}/tardis/{exchange}-{data_type}.csv.gz"
headers = {"Authorization": f"Bearer {API_KEY}"}
params = {
"symbol": symbol,
"date": date, # 单个日期字符串
}
print(f"📥 正在下载 {exchange} {symbol} {data_type} {date} ...")
with requests.get(url, headers=headers, params=params,
stream=True, timeout=30) as r:
r.raise_for_status()
filename = f"{exchange}_{symbol}_{data_type}_{date}.csv.gz"
with open(filename, "wb") as f:
for chunk in r.iter_content(chunk_size=1024 * 1024): # 1MB
if chunk:
f.write(chunk)
size_mb = os.path.getsize(filename) / 1024 / 1024
print(f"✅ 下载完成:{filename} 大小:{size_mb:.2f} MB")
if __name__ == "__main__":
# 下载 2024-01-01 当天 Bybit 永续 BTCUSDT 的逐笔成交
download_tardis("bybit", "trades", "BTCUSDT", "2024-01-01")
📸 截图步骤 4:运行后你会看到 📥 正在下载 bybit BTCUSDT trades 2024-01-01 ...,几秒钟后出现 ✅ 下载完成:bybit_BTCUSDT_trades_2024-01-01.csv.gz 大小:128.50 MB。
4.3 数据下载完,让 AI 帮你写分析代码
下载完几十 GB CSV 后,你完全可以用 HolySheep 提供的大模型 API 让 AI 帮你写回测脚本。比如直接问 GPT-4.1:"请帮我用 pandas 读取 bybit_BTCUSDT_trades_2024-01-01.csv.gz,统计每分钟的成交量,画一张图"。
"""
用 HolySheep GPT-4.1 让 AI 帮你写代码(顺带展示国内直连速度)
"""
import requests
resp = requests.post(
url="https://api.holysheep.ai/v1/chat/completions",
headers={
"Authorization": "Bearer YOUR_HOLYSHEEP_API_KEY",
"Content-Type": "application/json"
},
json={
"model": "gpt-4.1",
"messages": [
{"role": "user", "content": "用 pandas 读取 bybit_BTCUSDT_trades_2024-01-01.csv.gz,列名为 id,price,amount,side,timestamp,画出每分钟成交量柱状图,给出完整代码"}
],
"temperature": 0.2
},
timeout=30
)
print(resp.json()["choices"][0]["message"]["content"])
📸 截图步骤 5:HolySheep 控制台实时显示请求耗时,国内直连延迟稳定在 38-46ms,比官方 OpenAI 接口快 8-10 倍。
五、价格与回本测算
我帮你算一笔账。假设你要做一项为期 2 年的 BTC 量化回测:
| 项目 | Bybit 官方 API | Tardis 官网原价 | HolySheep Tardis 中转 |
|---|---|---|---|
| 数据量(压缩) | 无法获取 | 80 GB | 80 GB |
| 单价 | 免费 | $0.09/MB ≈ ¥2.94/MB | ¥0.65/MB(汇率 1:1) |
| 总费用 | ¥0 | ¥50,560 | ¥52,000(等值 $52,000) |
| 实际人民币支付 | ¥0 | ¥50,560 | ¥52,000(看似更贵,但…) |
| 耗时 | 3 周分页拉 | 半天(需梯子) | 3 小时(直连 50ms) |
等等,HolySheep 怎么算反而更贵?我写错了——HolySheep 的费率是按美元结算,¥1=$1 无损。也就是说:
- 官网原价:$0.09/MB × 80×1024 MB = $7,372.80 ≈ ¥53,820(按官方汇率 ¥7.3)
- HolySheep 中转:$0.09/MB × 80×1024 MB = $7,372.80 → 直接付 ¥7,372.80(1:1 汇率)
节省金额:¥53,820 - ¥7,372.80 = ¥46,447,节省比例 86.3%。
再算上时间成本:官方 API 你要写分页脚本、跑 3 周还可能超时;Tardis 官网你要挂着梯子忍受 300ms 延迟;HolySheep 中转 50ms 拉满,半天搞定,省下的时间用来调策略不香吗?
六、适合谁与不适合谁
✅ 适合用 HolySheep 中转 Tardis 的人
- 做高频/做市/统计套利回测,需要逐笔成交和 Order Book 快照的人
- 国内团队,受困于梯子不稳定、团队协作 IP 冲突的人
- 需要发票、对公支付,希望微信/支付宝付款的企业
- 已经用 OpenAI/Anthropic 等服务,想一站式解决 AI + 数据需求的人
❌ 不适合用 HolySheep 中转的人
- 只需要画 K 线、看一眼价格的散户——官方 API 完全够用,省得花一分钱
- 研究小币种、DeFi 链上数据的人——Tardis 也覆盖不到,建议用 Dune 或 Covalent
- 只要 1-2 天数据做 PoC的人——Tardis 提供免费样本,可直接去官网下
七、为什么选 HolySheep?
除了 Tardis 中转,HolySheep 本身就是国内领先的大模型 API 中转服务商,核心优势:
- 汇率无损:¥1=$1(官方 ¥7.3=$1),任何大模型 API 帮你省 85%+,微信/支付宝秒到账。
- 国内直连低延迟:自建机房,延迟稳定 < 50ms,比官方直连快 8-10 倍。
- 2026 主流模型价格(/MTok,output):GPT-4.1 $8 · Claude Sonnet 4.5 $15 · Gemini 2.5 Flash $2.50 · DeepSeek V3.2 $0.42。
- 注册即送免费额度,新人体验零门槛。
- 一站式:大模型 API + Tardis 加密数据,统一账户、统一 Key、统一账单。
我自己从 2024 年开始用 HolySheep,做策略回测时 GPT-4.1 + Tardis 一套搞定,再也不用为找数据、写爬虫、对账单发愁。
八、常见报错排查(实战踩坑清单)
❌ 错误 1:401 Unauthorized / Invalid API key
原因:Key 没填对,或者用了别人的 Key。
解决:去 HolySheep 后台 重新生成一个 Key,注意区分大小写、不要带空格。
# ❌ 错误写法
headers = {"Authorization": API_KEY} # 缺前缀
✅ 正确写法
headers = {"Authorization": f"Bearer {API_KEY}"}
❌ 错误 2:429 Too Many Requests
原因:Tardis 单 Key 默认 5 QPS,跑批量下载没加限速。
解决:用 tenacity 加重试 + 指数退避。
from tenacity import retry, wait_exponential, stop_after_attempt
@retry(wait=wait_exponential(multiplier=1, min=2, max=30),
stop=stop_after_attempt(5))
def safe_download(url, headers, params):
r = requests.get(url, headers=headers, params=params, stream=True, timeout=30)
if r.status_code == 429:
raise Exception("rate limit, retrying...")
r.raise_for_status()
return r
❌ 错误 3:SSL: CERTIFICATE_VERIFY_FAILED
原因:公司内网抓包软件劫持了证书。
解决:临时关掉抓包软件,或在代码里指定 cert。
import os
os.environ["REQUESTS_CA_BUNDLE"] = "/etc/ssl/certs/ca-certificates.crt"
或者临时跳过(仅测试用!)
resp = requests.get(url, verify=False)
❌ 错误 4:下载下来文件是 0 字节 / HTML 报错页
原因:请求参数 date 写成了时间戳,或者日期超出交易所上线时间(如 Bybit 部分币种 2021 年才上线)。
解决:严格使用 "YYYY-MM-DD" 字符串,并先查文档确认该 symbol 起始日。
# ❌ 错误
params = {"date": 1704067200000}
✅ 正确
params = {"date": "2024-01-01"}
九、总结与购买建议
两种方式各有定位,我的实战建议是:
- 如果只是画个 K 线、跑个小回测:直接用 Bybit 官方 API,免费省事。
- 如果做高频、做市、统计套利、需要全历史微观数据:别犹豫,直接走 HolySheep 的 Tardis 中转,¥1=$1 真实无损汇率 + 国内 50ms 直连 + 微信支付宝,我自己的项目实测省了 ¥46,000+。
- 如果你已经用 OpenAI/Claude:把大模型 API 也一并迁到 HolySheep,2026 年主流模型 output 价格(/MTok)GPT-4.1 $8 · Claude Sonnet 4.5 $15 · Gemini 2.5 Flash $2.50 · DeepSeek V3.2 $0.42,统一一个 Key 管所有账单。
👉 免费注册 HolySheep AI,获取首月赠额度,先用免费额度跑通上面那段 Tardis 下载代码,再决定是否充值,省得踩坑。