目录导读
- 为什么需要币安API?
- 申请币安API接口的完整步骤
- Python环境配置与库安装
- 编写第一个交易脚本:获取实时行情
- 进阶:自动化下单与风险管理
- 常见问题与避坑指南
- 用户问答环节
为什么需要币安API?
如果你是加密货币交易者,应该知道手动盯盘、下单有多累,通过币安API接口申请教程,你可以用Python编写自动化脚本,实现币安行情抓取、策略执行、自动止盈止损,API还能连接量化平台,比手动操作快0.5秒以上,这对高频交易至关重要。

新手常遇到权限申请失败、签名错误、频率限制等问题,别急,下面我把流程拆解清楚。
申请币安API接口的完整步骤
第一步:登录并创建API
- 访问 vl-binance.com.cn 并登录账户。
- 右上角头像 → API管理 → 输入名称(如“PythonScript”)→ 点击创建。
- 关键选项:
- 启用“交易”权限(需输入资金密码验证)。
- 建议绑定IP白名单,避免API泄露风险。
- 保存好 API Key 和 Secret Key。Secret Key只显示一次,丢失需重新生成。
注意:如果你是子账户,需要主账户授权开通“API交易”权限。
第二步:理解权限分类
| 权限类型 | 可执行操作 | 安全建议 |
|---|---|---|
| 只读 | 查询余额、行情 | 日常监控用 |
| 交易 | 下单、撤单 | 启用IP白名单 |
| 提现 | 转出资产 | 建议关闭 |
推荐开发阶段先用“只读”权限测试,无误后再开启“交易”。
Python环境配置与库安装
必备工具
pip install python-binance requests pandas
python-binance 是社区维护的异步封装库,比直接调用REST API更省事,如果你追求极低延迟,也可以直接用 ccxt。
连接测试脚本
from binance.client import Client api_key = "你的API_KEY" secret_key = "你的SECRET_KEY" client = Client(api_key, secret_key) # 测试连接 print(client.get_account_status())
如果输出 {"msg": "正常", "success": true},说明连接成功。
编写第一个交易脚本:获取实时行情
案例:抓取BTC/USDT最新价格
import time
from binance.client import Client
client = Client(api_key, secret_key)
def get_btc_price():
ticker = client.get_symbol_ticker(symbol="BTCUSDT")
return ticker['price']
while True:
price = get_btc_price()
print(f"当前BTC价格: {price} USDT")
time.sleep(5) # 每5秒刷新一次
进阶用法:
- 用
get_klines()获取K线数据,用于技术指标计算。 - 用
get_order_book()获取盘口深度,判断买卖压力。
错误处理关键点
try:
client.get_symbol_ticker(symbol="ETHUSDT")
except Exception as e:
print(f"API错误: {e}")
遇到 -1021 错误?说明你的服务器时间与币安时间偏差超过5秒,用以下代码同步:
from binance.client import Client
import time
client = Client(api_key, secret_key)
server_time = client.get_server_time()
sync_offset = server_time['serverTime'] - int(time.time() * 1000)
print(f"时间偏差: {sync_offset}ms")
进阶:自动化下单与风险管理
限价单示例
def place_limit_order(symbol, side, quantity, price):
try:
order = client.create_order(
symbol=symbol,
side=side, # BUY 或 SELL
type='LIMIT',
timeInForce='GTC',
quantity=quantity,
price=str(price)
)
return order
except Exception as e:
print(f"下单失败: {e}")
# 买入0.01 BTC,限价30000 USDT
place_limit_order("BTCUSDT", "BUY", 0.01, 30000)
注意:现货最小交易量因币种而异,比如BTC最小是0.0001,而某些山寨币可能是1,用 get_symbol_info() 查看规则。
自动止损脚本
def set_trailing_stop(symbol, quantity, activation_price, callback):
"""
简易追踪止损:当价格从最高点下跌callback%时卖出
"""
highest = 0
while True:
price = float(get_btc_price())
if price > highest:
highest = price
if price < highest * (1 - callback/100):
client.create_market_sell(symbol=symbol, quantity=quantity)
print("触发止损!")
break
time.sleep(3)
常见问题与避坑指南
-
API频率限制
币安对REST API限制是每分钟1200次请求,建议用WebSocket获取实时数据,HTTP只用于下单。 -
资产安全
- 不要将API Key存到公开仓库。
- 定期轮换密钥,推荐每30天更换一次。
- 如果是大额交易,启用“提现白名单”。
-
网络延迟
如果脚本部署在国内,建议使用云服务器(如香港或新加坡节点),否则延迟可能超过200ms导致交易滑点。 -
试运行必做
先使用test=True参数测试下单是否成功,再切换到真实环境。
client.create_test_order(
symbol="BTCUSDT",
side="BUY",
type="MARKET",
quantity=0.01
) # 此操作不会真实成交
用户问答环节
Q:API申请时,为什么提示“没有权限”?
A:检查是否在币安主站账号下操作?部分国家/地区用户需要完成KYC(身份认证)才能创建API,确保勾选了“交易权限”。
Q:Python报错 AttributeError: module 'binance' has no attribute 'Client'
A:你没安装对版本,卸载重装 pip uninstall binance && pip install python-binance。
Q:脚本跑一会儿就断连,怎么办?
A:加一个重连机制,或者改用WebSocket,from binance import ThreadedWebsocketManager。
Q:如何用API查询历史订单?
A:调用 client.get_all_orders(symbol="BTCUSDT", limit=10) 可查最近10笔订单,注意时间参数 startTime 和 endTime 要用毫秒时间戳。
Q:API限额到了,如何优化?
A:合并请求,比如用 get_ticker() 一次性获取所有交易对价格,而不是逐个请求。
通过这个币安API接口申请教程,你已经掌握了从零开始用Python编写交易脚本的核心方法,建议先在模拟盘中验证策略,再逐步投入真金白银。币安的API文档是最高权威参考,遇到新问题先查官网,一定要把API Key藏好!
标签: 币安API Python交易脚本