做量化交易、回测策略、或者想跑一个加密货币数据分析项目,你迟早会碰到一个问题:Bybit 交易所的历史 K 线、逐笔成交、深度盘口数据怎么下载?

今天这篇文章,我(HolySheep 官方技术博主)就手把手带你用两种主流方式把 Bybit 历史数据拿到手——一种是用 Bybit 官方 API 免费撸,另一种是用业界老牌数据服务商 Tardis.dev(通过 HolySheep 中转,立即注册 即可拿到 key)。

无论你是完全没写过代码的小白,还是已经有一点 Python 基础的开发者,跟着下面的截图提示(我用文字描述)和代码块一步步抄,都能跑通。

一、为什么你需要 Bybit 历史数据?

在动手之前,先搞清楚你为什么要下载这些数据。我接触过的同学大致有三类需求:

不同需求对应不同数据精度。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 公共接口支持:

注意:官方 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 无损。也就是说:

节省金额:¥53,820 - ¥7,372.80 = ¥46,447,节省比例 86.3%。

再算上时间成本:官方 API 你要写分页脚本、跑 3 周还可能超时;Tardis 官网你要挂着梯子忍受 300ms 延迟;HolySheep 中转 50ms 拉满,半天搞定,省下的时间用来调策略不香吗?

六、适合谁与不适合谁

✅ 适合用 HolySheep 中转 Tardis 的人

❌ 不适合用 HolySheep 中转的人

七、为什么选 HolySheep?

除了 Tardis 中转,HolySheep 本身就是国内领先的大模型 API 中转服务商,核心优势:

我自己从 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"}

九、总结与购买建议

两种方式各有定位,我的实战建议是:

  1. 如果只是画个 K 线、跑个小回测:直接用 Bybit 官方 API,免费省事。
  2. 如果做高频、做市、统计套利、需要全历史微观数据:别犹豫,直接走 HolySheep 的 Tardis 中转,¥1=$1 真实无损汇率 + 国内 50ms 直连 + 微信支付宝,我自己的项目实测省了 ¥46,000+。
  3. 如果你已经用 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 下载代码,再决定是否充值,省得踩坑。