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

An unlocked padlock rests on a computer keyboard.

Binance API 是量化交易的起點。如果你想讓策略自動執行——自動買入、自動止損、自動監控倉位——都需要透過 API 實現。

這篇文章從零開始,覆蓋申請 API Key、安全配置、Python 環境搭建,到發出第一個查詢和第一筆(測試)訂單。不假設你有量化經驗,跟著做能跑通。

準備工作

  1. 已完成 Binance 賬號 KYC 實名認證
  2. Python 3.8+(python --version 確認)
  3. 已完成雙重驗證(2FA),建議用 Google Authenticator

Binance 註冊:→ 註冊 Binance(透過推薦連結註冊可享手續費返傭)

申請 API Key

步驟

  1. 登入 Binance,點選右上角頭像 → API 管理
  2. 點選"建立 API"
  3. 選擇"系統生成(推薦)"
  4. 輸入 API 標籤(名稱),點選下一步
  5. 完成 2FA 驗證
  6. 儲存 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:

  1. 進入 testnet.binance.vision
  2. 用 GitHub 賬號登入
  3. 建立測試網 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 品牌風格