目录导读
- 为什么需要币安API? – 自动交易的基础认知
- 申请币安API接口的完整步骤 – 从零开始配置
- Python交易脚本核心代码 – 买卖、查询与风控
- 常见错误与问答 – 解决新手90%的卡点
- 实战建议 – 让脚本稳定运行的小技巧
为什么需要币安API?
如果你手动盯盘经常错过行情,或者想实现“低买高卖”的自动化策略,币安API就是你的钥匙,通过API,你可以用Python直接连接币安服务器,实现行情抓取、订单自动下单、资产管理等功能。币安作为全球头部交易所,其API文档清晰、接口稳定,非常适合学习量化交易。

申请币安API接口的完整步骤
第一步:注册并登录币安账号
如果你还没有账号,请先去Binance官网注册,注意:建议完成高级实名认证(KYC),否则API权限会受限。
第二步:创建API密钥
- 登录后,点击右上角「用户中心」→「API管理」。
- 输入标签(Python自动交易”),点击「创建API」。
- 安全验证(邮箱或手机验证码)后,你会得到一对密钥:
- API Key(公钥,类似用户名)
- Secret Key(私钥,类似密码,必须保密)
- 关键权限设置:
- 开启「交易」权限(允许下单/撤单)
- 如果需要读取余额,开启「读取」权限
- 不要开启「提现」权限,防止被盗风险
第三步:限制IP白名单(强烈推荐)
在API编辑页面,设置仅允许你服务器的IP访问,即使密钥泄露,黑客也无法从其他IP调用API。
Python交易脚本核心代码
以下脚本实现了“查询ETH/USDT价格”和“下单买入0.01个ETH”的功能,完整代码已适配币安API文档。
import requests
import time
import hashlib
import hmac
# 你的API信息
api_key = "你的API_KEY"
secret_key = "你的SECRET_KEY"
base_url = "https://api.binance.com" # 注意:国内访问可用z0-binance.com.cn替代
# 1. 查询当前价格(无需签名)
def get_price(symbol="ETHUSDT"):
url = f"{base_url}/api/v3/ticker/price?symbol={symbol}"
resp = requests.get(url)
return resp.json()["price"]
# 2. 下单买入(需签名)
def create_order(symbol, side, quantity):
params = {
"symbol": symbol,
"side": side, # "BUY" 或 "SELL"
"type": "MARKET", # 市价单
"quantity": quantity,
"timestamp": int(time.time() * 1000)
}
# 生成签名
query_string = "&".join([f"{k}={v}" for k, v in params.items()])
signature = hmac.new(secret_key.encode(), query_string.encode(), hashlib.sha256).hexdigest()
params["signature"] = signature
headers = {"X-MBX-APIKEY": api_key}
resp = requests.post(f"{base_url}/api/v3/order", headers=headers, data=params)
return resp.json()
# 执行示例
if __name__ == "__main__":
print("当前ETH价格:", get_price("ETHUSDT"))
# 下单买入0.01个ETH(请确认你有足够USDT)
result = create_order("ETHUSDT", "BUY", 0.01)
print("订单结果:", result)
代码说明:
- 市价单立即成交,无需指定价格
timestamp参数必须与服务器时间误差<5秒(可用time.time()获取)- 建议使用
requests库(安装命令:pip install requests)
常见错误与问答
Q1:为什么运行脚本报错“-1021”?
A:时间戳不同步,请检查系统时间是否准确,或使用from binance.client import Client中的get_server_time()校准。
Q2:API密钥如何保证安全?
A:绝不要将Secret Key写在代码里!建议用环境变量读取(import os; api_key=os.getenv("BINANCE_API_KEY")),并将私钥存储在安全配置文件中。
Q3:这个脚本能直接用于实盘吗?
A:可以,但务必先用小额资金测试,建议添加「下单数量校验」和「滑点保护」(比如限价挂单而非市价单)。
Q4:币安API有速率限制吗?
A:有,每IP每分钟1200次请求,超限会被暂时封禁,请加入sleep(0.1)控制频率。
实战建议
- 先用测试网练习:币安提供
testnet.binance.vision,API key免费获取,模拟真实环境而不损失本金。 - 日志记录:把每次交易的时间、价格、数量写入本地文件,方便复盘。
- 异常处理:添加
try-except捕获网络断开、订单失败等异常,防止脚本崩溃。 - 策略回测:使用
backtrader或pandas库先验证策略历史表现,再接入实盘。 - 关注验证:某些接口(如查询资产)需要
recvWindow参数(默认5000ms),网络延迟高时建议下调。
延伸阅读:如果你想学习更复杂的策略(如网格交易、套利脚本),可参考币安官方文档的“Websocket”和“订单簿深度”部分,或搜索社区开源的Python库python-binance,它封装了大量好用方法。
最后提醒:加密货币交易高风险,脚本自动执行需设置止损(比如用STOP_LOSS_LIMIT订单)和最大回撤控制,从“模拟盘”到“实盘”之间,建议间隔至少两周实盘测试。
标签: Python交易脚本