💡 國內提示:Binance 官網在中國大陸無法直連,訪問需自備網路工具;法幣入金不支援銀行卡,主要走 C2C(USDT↔CNY)通道完成。

Binance API 是量化交易的起點。如果你想讓策略自動執行——自動買入、自動止損、自動監控倉位——都需要透過 API 實現。
這篇文章從零開始,覆蓋申請 API Key、安全配置、Python 環境搭建,到發出第一個查詢和第一筆(測試)訂單。不假設你有量化經驗,跟著做能跑通。
準備工作
- 已完成 Binance 賬號 KYC 實名認證
- Python 3.8+(
python --version確認) - 已完成雙重驗證(2FA),建議用 Google Authenticator
Binance 註冊:→ 註冊 Binance(透過推薦連結註冊可享手續費返傭)
申請 API Key
步驟
- 登入 Binance,點選右上角頭像 → API 管理
- 點選"建立 API"
- 選擇"系統生成(推薦)"
- 輸入 API 標籤(名稱),點選下一步
- 完成 2FA 驗證
- 儲存 API Key 和 Secret Key
重要:Secret Key 只顯示一次,頁面關閉後無法再次檢視。必須立即儲存到安全位置(密碼管理器)。
許可權配置
建立完 API 後,在 API 管理頁設定許可權:
| 許可權 | 是否需要開啟 | 說明 |
|---|---|---|
| 讀取 | ✓(預設開啟) | 查詢賬戶資訊、K 線資料 |
| 現貨交易 | 按需 | 下現貨訂單 |
| 合約交易 | 按需 | 下期貨訂單 |
| 提現 | 絕對不開 | 量化策略不需要,開了有安全風險 |
IP 白名單(強烈建議):在 API 設定裡繫結你的伺服器 IP,只有這個 IP 才能用這個 API Key。即使 Key 洩露,其他 IP 也無法使用。
安全原則
- 每個策略用單獨的 API Key,不要多個策略共用一個
- 量化策略伺服器和個人電腦用不同的 Key
- 定期輪換 Key(建議每 3-6 個月換一次)
- 永遠不要把 Key 提交到 GitHub 或發給別人
Python 環境搭建
安裝官方 SDK:
pip install python-binance
第一個 API 呼叫:查詢賬戶餘額
from binance.client import Client
# API Key 建議從環境變數讀取,不要硬編碼
import os
api_key = os.environ["BINANCE_API_KEY"]
api_secret = os.environ["BINANCE_API_SECRET"]
client = Client(api_key, api_secret)
# 查詢賬戶資訊
account = client.get_account()
# 顯示非零餘額
print("當前餘額:")
for asset in account["balances"]:
free = float(asset["free"])
locked = float(asset["locked"])
if free > 0 or locked > 0:
print(f" {asset['asset']}: 可用 {free}, 鎖定 {locked}")
執行後如果能看到你的餘額,說明 API 配置成功了。
查詢市場資料
# 查詢 BTC/USDT 當前價格
ticker = client.get_symbol_ticker(symbol="BTCUSDT")
print(f"BTC 當前價:{ticker['price']}")
# 查詢 24 小時行情
stats = client.get_ticker(symbol="BTCUSDT")
print(f"24h 最高:{stats['highPrice']}")
print(f"24h 最低:{stats['lowPrice']}")
print(f"24h 成交量:{stats['volume']} BTC")
# 查詢 K 線資料(最近 10 根 1小時 K 線)
klines = client.get_klines(
symbol="BTCUSDT",
interval=Client.KLINE_INTERVAL_1HOUR,
limit=10
)
for k in klines:
timestamp = k[0]
open_price = float(k[1])
close_price = float(k[4])
volume = float(k[5])
print(f"開盤:{open_price:.2f},收盤:{close_price:.2f},成交量:{volume:.2f}")
在測試網下單
強烈建議先在測試網練手,不會消耗真實資金。
申請測試網 API Key:
- 進入 testnet.binance.vision
- 用 GitHub 賬號登入
- 建立測試網 API Key
from binance.client import Client
# 測試網 API Key
client = Client(
api_key="你的測試網API_KEY",
api_secret="你的測試網SECRET",
testnet=True # 關鍵引數,指向測試環境
)
# 下限價買單(BTC/USDT,買 0.001 BTC,價格 20000 USDT)
order = client.create_order(
symbol="BTCUSDT",
side=Client.SIDE_BUY,
type=Client.ORDER_TYPE_LIMIT,
timeInForce=Client.TIME_IN_FORCE_GTC,
quantity=0.001,
price="20000"
)
print(f"訂單 ID:{order['orderId']}")
print(f"狀態:{order['status']}")
# 查詢訂單狀態
status = client.get_order(
symbol="BTCUSDT",
orderId=order['orderId']
)
print(f"當前狀態:{status['status']}")
# 取消訂單
client.cancel_order(
symbol="BTCUSDT",
orderId=order['orderId']
)
print("訂單已取消")
WebSocket 實時資料流
API 的 REST 介面用於下單和查詢,實時資料用 WebSocket 更高效:
from binance import ThreadedWebsocketManager
def handle_ticker(msg):
"""處理實時價格推送"""
if msg['e'] == 'error':
print(f"錯誤:{msg['m']}")
return
price = float(msg['c']) # 最新成交價
volume = float(msg['v']) # 24h 成交量
print(f"BTC 價格:{price:.2f},24h 成交量:{volume:.2f}")
# 啟動 WebSocket 管理器
twm = ThreadedWebsocketManager(api_key=api_key, api_secret=api_secret)
twm.start()
# 訂閱 BTC/USDT 實時 ticker
twm.start_symbol_ticker_socket(callback=handle_ticker, symbol="BTCUSDT")
# 執行 30 秒後停止
import time
time.sleep(30)
twm.stop()
頻率限制(Rate Limit)
Binance API 有頻率限制,超限會被臨時封禁:
| 型別 | 限制 |
|---|---|
| 請求權重 | 1200 權重/分鐘 |
| 下單次數 | 10 次/秒,100000 次/24h |
| WebSocket 連線 | 最多 1024 個 |
常用介面的權重:
GET /api/v3/ticker/price:2 權重GET /api/v3/klines:2 權重POST /api/v3/order(下單):1 權重
查詢最新價格每 5 秒一次,一分鐘 12 次,權重 24,遠低於限制。
實時資料儘量用 WebSocket,不要用輪詢 REST 介面。
下一步
跑通了基礎之後:
- 瞭解 K 線資料結構,開始構建你的第一個策略邏輯
- 學習資金管理:每筆下單金額怎麼控制
- 配置 Prometheus 監控策略執行狀態
→ 檢視 Binance 手續費省錢方法 → 檢視 Binance API 安全配置 → 檢視 量化工具棧:從策略到監控
📷 封面圖 · Flux Schnell AI 生成 · panshi.io 品牌風格