币安 API 套利策略框架 现货 + 永续怎么写
API 套利的最简框架代码本文给出现货 + 永续 Delta 中性策略的伪代码与关键风控。
API 套利不复杂,但要写好。先在 币安官网 创建 API Key,APP 监控用 币安官方APP(iOS 见 iOS安装教程)。
最简策略:现货 + 永续
思路
资金费率高时:
- 现货买入 1 BTC
- 永续做空 1 BTC
- 等收资金费
- 费率降到合理时平掉两边
Delta 中性,不赌价格。
伪代码
from binance.client import Client
client = Client(api_key, secret)
target_funding = 0.0003 # 万 8 / 8h
# 1. 检查当前资金费率
fr = client.futures_funding_rate(symbol='BTCUSDT', limit=1)[0]
current_rate = float(fr['fundingRate'])
if current_rate > target_funding:
# 2. 现货买入 1 BTC
client.order_market_buy(symbol='BTCUSDT', quantity=1)
# 3. 永续做空 1 BTC
client.futures_create_order(
symbol='BTCUSDT',
side='SELL',
type='MARKET',
quantity=1
)
print("仓位已开")
短短几十行已经是雏形。
加风控
1. 资金检查
下单前确认现货账户和合约账户余额够用。
2. 滑点保护
用限价 IOC(Immediate or Cancel):能成则成,不成立刻取消。
3. 数量精度
币安每个交易对的数量精度不同。BTC 精确到 0.00001。处理:
quantity = round(quantity, 5)
4. 异常重试
网络抖动会让 API 调用失败。加 try / except + 重试。
监控循环
import time
while True:
fr = client.futures_funding_rate(symbol='BTCUSDT', limit=1)[0]
rate = float(fr['fundingRate'])
print(f"当前费率: {rate}")
if rate > 0.0005:
open_positions(1) # 开仓
elif rate < 0.0001 and have_position():
close_positions() # 平仓
time.sleep(60) # 每分钟检查
平仓
def close_positions():
# 现货卖出
client.order_market_sell(symbol='BTCUSDT', quantity=1)
# 永续平空(买回)
client.futures_create_order(
symbol='BTCUSDT', side='BUY', type='MARKET', quantity=1, reduceOnly=True
)
关键参数
| 参数 | 含义 |
|---|---|
| target_funding | 目标资金费率阈值 |
| close_funding | 平仓阈值 |
| size | 单次仓位 |
| max_position | 最大持仓 |
| leverage | 合约杠杆 |
每个参数都需要测试调整。
杠杆设置
合约保证金不需要 1:1:
- 1 BTC 现货 = 60000 USDT
- 1 BTC 合约空 + 5x 杠杆 = 12000 USDT 保证金
总占用:72000 USDT。
降低杠杆增加保证金 → 更安全但资金效率低。
平衡点 5-10x。
计算每次套利收益
收益 = 资金费 × 仓位价值 - 4 笔交易手续费
例:
- 1 BTC 仓位 = 60000 USDT
- 8 小时资金费 0.05% = 30 USDT
- 4 笔手续费(现货开 + 现货平 + 合约开 + 合约平)= ≈ 60 USDT
净收益:30 - 60 = -30。
只持仓 1 次费率结算 = 亏。
持仓时间
至少持仓收 3-5 次资金费才能覆盖手续费。即 24-40 小时。
策略:
- 进场后至少持 36 小时
- 资金费率仍然 > target 才继续
- 跌到 target 一半时平仓
资金费率历史
策略测试:
hist = client.futures_funding_rate(symbol='BTCUSDT', limit=1000)
# 1000 条历史费率(最近 333 天)
回测你的策略在历史数据上是否盈利。
实盘前必做
- [ ] testnet 跑 1 周
- [ ] 实盘小额(1000 USDT)跑 1 月
- [ ] 验证:每月收益 > 0
- [ ] 检查日志没有异常
- [ ] 确认风控真的能 trigger
- [ ] 加大资金
持仓监控
def health_check():
spot = client.get_asset_balance('BTC')
fut = client.futures_position_information(symbol='BTCUSDT')
if abs(float(spot['free']) - abs(float(fut[0]['positionAmt']))) > 0.001:
alert("Delta 偏离!")
定期检查现货和合约持仓是否一致。
异常处理
| 情况 | 处理 |
|---|---|
| API 超时 | 重试 3 次 |
| 余额不足 | 等下次循环 |
| 仓位偏差 | 立刻调整 |
| 大额波动 | 报警 |
| 系统宕机 | 自动关机 + 短信 |
部署
跑在自己电脑会因为:
- 关机断电
- 重启更新
最好放 VPS:
- DigitalOcean / Vultr / AWS
- Linux + Python
- pm2 / systemd 守护进程
- 监控 + 报警
进阶
1. 多交易对
同时跑 BTC、ETH、SOL 资金费。分散收益。
2. 智能进出
不仅看费率,看 OI、funding/spot 比、市场情绪。
3. 跨所对冲
币安 + Bybit 等多所联动。
4. 期权对冲
加期权降低波动率风险。
常见问题
问:API 套利合法吗? 答:合法。币安鼓励算法交易。
问:策略能赚多少? 答:正常市场 5-15% 年化。极端时段更高。
问:要懂多少代码? 答:能写 200 行 Python 即可起步。
问:能不写代码用现成机器人吗? 答:可以。但你不掌握逻辑就不知道何时停。
问:会不会爆仓? 答:风控做得好不会。但极端行情仍要关注。
延伸阅读
API 套利是技术 + 资金的护城河。学好之后能让钱睡着也帮你赚。