幣安 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 套利是技術 + 資金的護城河。學好之後能讓錢睡著也幫你賺。