当前位置:首页资讯软件教程 → Binance.com API接口教程:如何调用币安API获取行情数据

Binance.com API接口教程:如何调用币安API获取行情数据

发布时间:2026/8/21 9:51:02来源:币圈资讯君

最近在做量化交易的小项目,需要拉取币安的实时行情数据,网上搜了一圈教程,要么太老,要么直接甩一堆官方文档链接,对新手特别不友好。我自己踩了不少坑,总算把Binance.com API接口调通了。今天就用大白话把整个过程捋一遍,从注册到拿数据,保证你看完能直接跑起来。

Binance全球顶级交易所
类型:金融理财大小:293.4M语言:多国语言[中文]时间:8-14评分:10.0

币安API接口调用示例代码截图

调用币安API前需要准备什么?

首先你得有一个币安账号,这个不用多说吧。然后登录官网,在个人中心找到「API管理」入口。创建API Key的时候,系统会让你设置权限,比如只读、现货交易、合约交易这些。如果你只是拉行情数据,强烈建议只勾选「读取」权限,安全第一。

创建完成后,你会得到一串API Key和Secret Key。Secret Key只显示一次,一定要复制保存好,丢了就只能重新生成。这里有个坑:很多人把Key直接硬编码在代码里,然后不小心传到GitHub上,结果被黑客盗刷。建议用环境变量或者配置文件来存,而且定期更换。

另外,币安API的访问地址分两种:一种是全球站api.binance.com,另一种是带地区限制的。国内用户有时候访问全球站会超时,可以试试用api1.binance.com或者api2.binance.com,或者用代理。不过如果做本地测试,用测试网(testnet.binance.vision)更稳,不会把真钱搞没。

币安API签名认证怎么搞?新手最容易出错的地方

调用币安的行情接口(比如获取K线、最新价格)是不需要签名的,直接GET请求就行。但如果你想查账户余额、下单这些涉及隐私的操作,就必须签名了。签名流程是这样的:把参数按字典序排序,拼成query string,然后用HMAC SHA256算法,用Secret Key做密钥,对query string加密,得到一串十六进制字符串,最后把这串字符串作为signature参数附在请求里。

我一开始就是卡在这里,总是报-1022错误,提示签名无效。后来发现是时间戳的问题。币安要求请求里的timestamp参数必须和服务器时间误差在1000毫秒以内,不然就拒绝。所以每次请求前,最好先调用/api/v3/time接口校准一下本地时间,或者直接用服务器返回的时间戳。

另外,有些接口还需要recvWindow参数,表示请求的有效期,默认5000毫秒。如果你网络延迟大,可以适当调大,比如10000,但别太大,不然容易被重放攻击。

欧易okx交易所
类型:金融理财大小:379.8M语言:中文时间:7-16评分:10.0

币安API签名认证代码示意图

怎么用币安API获取实时行情和K线数据?

最常用的行情接口就是GET /api/v3/ticker/price,可以获取单个或多个交易对的实时价格。比如你想看BTCUSDT的价格,直接请求https://api.binance.com/api/v3/ticker/price?symbol=BTCUSDT,返回的JSON里就有price字段。

如果你想批量获取所有交易对的价格,不用带symbol参数,它会返回一个很大的数组。但注意,这个接口有权重限制,每个请求权重是2,每分钟最多6000权重,所以别频繁刷。

K线数据用GET /api/v3/klines,参数包括symbol、interval(比如1m、5m、1h、1d),还有limit(默认500,最大1000)。返回的数组里每个元素是一个K线对象,依次是开盘时间、开盘价、最高价、最低价、收盘价、成交量、收盘时间、成交额……字段有点多,建议对照官方文档来解析。

我之前写了一个Python小脚本,用requests库拉取K线数据,然后存到CSV里,跑回测用。核心代码就几行:

import requests
url = 'https://api.binance.com/api/v3/klines'
params = {'symbol': 'BTCUSDT', 'interval': '1h', 'limit': 100}
resp = requests.get(url, params=params)
data = resp.json()
for k in data:
    print(k[0], k[1], k[4])  # 时间、开盘、收盘

注意,返回的时间戳是毫秒级的,要转成正常时间格式的话,可以用datetime.fromtimestamp(ts/1000)。

币安API获取交易深度和账户信息,这些细节别忽略

交易深度用GET /api/v3/depth,参数是symbol和limit(可选5、10、20、50、100、500、1000)。返回的bids和asks是列表的列表,每个子列表包含价格和数量。做交易机器人的人经常拉这个数据来判断买卖盘压力。

账户信息用GET /api/v3/account,需要签名。返回的balances数组里有每个资产的可用余额和锁定余额。这个接口权重较高(10),所以别频繁调用,最好缓存一下。

另外,如果你想监听账户变动,可以用WebSocket流,比如wss://stream.binance.com:9443/ws/btcusdt@trade,实时推送交易数据。WebSocket不需要签名,但要注意连接心跳,每20秒发送一个ping帧,不然会被断开。

很多新手容易忽略的还有请求头设置。币安要求必须带上User-Agent,不然会报403错误。用requests库的话,设置headers={'User-Agent': 'Mozilla/5.0'}就能解决。

币安API交易深度数据可视化图

币安API常见报错码及解决办法,实测有效

我用了这么久,遇到过不少报错,这里列几个最常见的:

-1021:时间戳超时,刚才说过了,校准时间就行。 -1022:签名无效,检查Secret Key是否正确,还有参数排序是否按字典序。 -2015:API Key无效或权限不足,看看是不是Key被删了,或者权限没勾选。 -1121:参数格式错误,比如symbol写错了,或者interval不合法。 -1003:请求频率超限,减少请求次数,或者用批量接口。

还有一个坑是,如果你用测试网,API Key和主网是分开的,域名也不一样,别搞混了。测试网的Key直接在testnet.binance.vision上申请。

总之,币安API的文档其实写得很详细,但有些细节官方没明说,只能靠实操摸索。希望这篇教程能帮你少走弯路。如果还有问题,欢迎在评论区交流,我看到会回复的。

COMMENTS 网友评论

评分
力荐
选择头像:
10
999+人评分
查看更多 >