如何下载B行情?
摘要:
使用官方API(推荐,免费且高效):这是最直接、最权威、最稳定的方式,适合开发者、量化交易者和需要自动化处理数据的人,使用第三方工具(适合非程序员):有一些图形化工具可以帮助你下载... - 使用官方API(推荐,免费且高效):这是最直接、最权威、最稳定的方式,适合开发者、量化交易者和需要自动化处理数据的人。
- 使用第三方工具(适合非程序员):有一些图形化工具可以帮助你下载历史K线数据,无需编写代码。
使用官方API(Binance API)
币安提供了强大的WebSocket和REST API接口来获取实时和历史数据,这里我们主要介绍获取历史K线数据的REST API,因为它最适合“下载”这个需求。
API概览
币安的K线数据API端点是:GET /api/v3/klines
(图片来源网络,侵删)
这个接口可以让你获取指定交易对、时间间隔和范围的K线数据。
请求参数
你需要通过URL参数来指定你想要的数据:
| 参数 | 类型 | 是否必需 | 描述 |
|---|---|---|---|
| symbol | STRING | 是 | 交易对,"BTCUSDT" (注意:必须是全大写) |
| interval | STRING | 是 | K线时间间隔,"1m", "5m", "1h", "1d" 等 |
| startTime | LONG | 否 | 起始时间,UTC时间戳(毫秒) |
| endTime | LONG | 否 | 结束时间,UTC时间戳(毫秒) |
| limit | INT | 否 | 返回的K线数量,默认500,最大1000 |
常用时间间隔:
1m: 1分钟3m: 3分钟5m: 5分钟15m: 15分钟30m: 30分钟1h: 1小时2h: 2小时4h: 4小时6h: 6小时8h: 8小时12h: 12小时1d: 1天3d: 3天1w: 1周1M: 1月
如何获取时间戳?
你需要将日期时间转换为UTC时间戳(毫秒),你可以使用在线工具或编程语言转换。
(图片来源网络,侵删)
将 "2025-01-01 00:00:00" 转换为时间戳:
- 在线搜索 "UTC timestamp converter"
- 在Python中:
int(pd.Timestamp("2025-01-01 00:00:00").timestamp() * 1000)
API调用示例
示例1:获取最近1000条BTC/USDT的1小时K线数据
https://api.binance.com/api/v3/klines?symbol=BTCUSDT&interval=1h&limit=1000
示例2:获取2025年全年BTC/USDT的1天K线数据
- 开始时间:
2025-01-01 00:00:00->1672531200000 - 结束时间:
2025-12-31 23:59:59->1704067199000
https://api.binance.com/api/v3/klines?symbol=BTCUSDT&interval=1d&startTime=1672531200000&endTime=1704067199000
数据格式
API返回的是一个JSON数组,数组的每一个元素代表一根K线,每根K线也是一个包含12个元素的数组:
(图片来源网络,侵删)
[
[
1499040000000, // Open time (K线开盘时间)
"0.01634790", // Open (开盘价)
"0.80000000", // High (最高价)
"0.01575800", // Low (最低价)
"0.01577100", // Close (收盘价)
"148976.11427815", // Volume (交易量)
1499644799999, // Close time (K线收盘时间)
"2434.19055334", // Quote asset volume (报价资产成交量)
308, // Number of trades (成交笔数)
"1756.87402397", // Taker buy base asset volume (主动买入成交量)
"28.46694368", // Taker buy quote asset volume (主动买入成交额)
"17928899.62484339" // Ignore (忽略)
],
// ... more klines
]
编程实现(以Python为例)
这是最常用的方式,你需要安装 requests 库。
import requests
import pandas as pd
from datetime import datetime
def get_binance_klines(symbol, interval, start_date, end_date):
"""
从币安下载历史K线数据
:param symbol: 交易对, e.g., "BTCUSDT"
:param interval: K线间隔, e.g., "1d", "1h"
:param start_date: 开始日期, e.g., "2025-01-01"
:param end_date: 结束日期, e.g., "2025-12-31"
:return: Pandas DataFrame
"""
# 转换日期为时间戳
start_ts = int(datetime.strptime(start_date, "%Y-%m-%d").timestamp() * 1000)
end_ts = int(datetime.strptime(end_date, "%Y-%m-%d").timestamp() * 1000)
# API URL
url = "https://api.binance.com/api/v3/klines"
# 请求参数
params = {
'symbol': symbol,
'interval': interval,
'startTime': start_ts,
'endTime': end_ts,
'limit': 1000 # 每次最多请求1000条
}
# 发送请求
response = requests.get(url, params=params)
response.raise_for_status() # 如果请求失败则抛出异常
data = response.json()
# 将数据转换为Pandas DataFrame
df = pd.DataFrame(data, columns=[
'Open time', 'Open', 'High', 'Low', 'Close', 'Volume',
'Close time', 'Quote asset volume', 'Number of trades',
'Taker buy base asset volume', 'Taker buy quote asset volume', 'Ignore'
])
# 数据类型转换
numeric_cols = ['Open', 'High', 'Low', 'Close', 'Volume']
df[numeric_cols] = df[numeric_cols].astype(float)
# 转换时间戳为可读日期
df['Open time'] = pd.to_datetime(df['Open time'], unit='ms')
df['Close time'] = pd.to_datetime(df['Close time'], unit='ms')
# 设置索引
df.set_index('Open time', inplace=True)
return df
# --- 使用示例 ---
if __name__ == "__main__":
# 获取2025年全年的BTC日K线数据
btc_daily_data = get_binance_klines("BTCUSDT", "1d", "2025-01-01", "2025-12-31")
# 打印前5行数据
print(btc_daily_data.head())
# 保存到CSV文件
btc_daily_data.to_csv("BTCUSDT_2025_daily.csv")
print("数据已保存到 BTCUSDT_2025_daily.csv")
使用第三方工具(适合非程序员)
如果你不想写代码,可以使用一些现成的工具来下载数据。
TradingView
TradingView本身不直接提供“导出大量历史数据”的功能,但可以借助浏览器插件。
-
方法:
- 打开 TradingView 并选择你想看的币种和K线图(BTC/USDT 的日线图)。
- 在图表的右上角,找到“设置”图标(齿轮状)。
- 在“设置”中,找到“数据”选项卡。
- 你会看到“下载数据”的选项,通常可以导出当前图表显示范围的数据(最多几年)。
- 导出格式通常是CSV。
-
优点:图形化界面,非常直观。
-
缺点:一次能下载的数据量有限,不适合下载非常长周期的数据。
Binance Data Downloader (第三方脚本/工具)
在GitHub上可以找到一些专门为币安设计的下载数据的Python脚本或工具,它们通常已经封装好了所有逻辑,你只需要修改几个参数即可。
- 如何找到:在GitHub搜索 "binance data downloader" 或 "币安 行情数据下载"。
- 优点:通常比手动写代码更简单,功能可能更完善(例如支持断点续传)。
- 缺点:需要一定的技术基础来运行脚本,并且需要信任第三方代码。
重要注意事项
- API频率限制:官方API有请求频率限制,对于历史数据接口,限制相对宽松,但如果你以极高的频率请求,仍有可能被临时限制,下载大量数据时,最好在请求之间加入短暂的延时(
time.sleep(0.1))。 - 数据完整性:币安API返回的数据是原始数据,可能包含异常值(某些交易量极小的K线),在使用前,你可能需要进行数据清洗。
- 服务器时间:如果你的策略对时间要求极高,可以使用
/api/v3/time接口获取币安服务器的精确时间,以确保你的请求时间戳是准确的。 - 官方文档:所有API的细节和最新变化,请务必参考币安官方API文档,这是最权威的信息来源。
| 方法 | 优点 | 缺点 | 适合人群 |
|---|---|---|---|
| 官方API | 免费、稳定、高效、数据权威、可定制性强 | 需要编程知识 | 开发者、量化交易者、数据分析师 |
| 第三方工具 | 图形化、简单易用、无需编程 | 功能受限、数据量有限、可能不可靠 | 普通用户、只想获取少量数据进行手动分析的人 |
对于绝大多数需要下载Binance行情数据的场景,使用官方API是最佳选择,上面的Python代码示例已经为你提供了一个非常好的起点。
文章版权及转载声明
作者:咔咔本文地址:https://jits.cn/content/20077.html发布于 2025-12-04
文章转载或复制请以超链接形式并注明出处杰思科技・AI 股讯



还没有评论,来说两句吧...