Skip to content

Binance

平台概览

Binance 是全球用户量最大的加密资产交易所之一,涵盖现货、杠杆、合约等多种业务形态,支持主流币种与法币入金渠道。其撮合效率高、深度充足,适合执行高频与中低频量化策略。团队需关注手续费等级(VIP 等级、BNB 折扣)以及合规公告,避免在策略上线后触碰交易限制。

API 接入流程

  1. 创建企业或个人账号,开启身份验证与资金密码,确保账户安全。
  2. 在「API Management」中新建 API Key,勾选所需的现货、合约读写权限,并设定 IP 白名单。
  3. API KeySecret Key 存入安全配置文件或密钥管控服务,勿写入仓库。
  4. 使用官方 binance-connectorccxt 库或内部封装的 REST/WebSocket 客户端,统一处理签名、限频与时间同步。

获取K线数据

下载过去30天

from binance.client import Client
import pandas as pd
from datetime import datetime, timezone, timedelta

client = Client()

symbol = "BTCUSDT"       # 交易对
interval = Client.KLINE_INTERVAL_1HOUR   # 每小时K线,可改为 _1DAY
start_time = int((datetime.now(timezone.utc) - timedelta(days=30)).timestamp() * 1000)
klines = client.get_historical_klines(symbol, interval, start_time)
df = pd.DataFrame(klines, columns=[
    "OpenTime","Open","High","Low","Close","Volume",
    "CloseTime","QuoteAssetVolume","Trades","TB_Base_Volume","TB_Quote_Volume","Ignore"
])


print(df.head())

指定时间

def download_save_csv(start_str="2025-04-25 00:00:00", end_str="2025-04-30 00:00:00", path="dataset"):
    client = Client()

    symbol = "BTCUSDT"                # 交易对
    interval = Client.KLINE_INTERVAL_1HOUR   # 每小时 K 线

    # 获取历史K线
    klines = client.get_historical_klines(symbol, interval, start_str, end_str)

    # 转换为 DataFrame
    df = pd.DataFrame(klines, columns=[
        "OpenTime","Open","High","Low","Close","Volume",
        "CloseTime","QuoteAssetVolume","Trades",
        "TB_Base_Volume","TB_Quote_Volume","Ignore"
    ])

    # 转换时间
    df["Date"] = pd.to_datetime(df["OpenTime"], unit="ms", utc=True)
    df = df.set_index("Date")

    df.to_csv(f"{path}.csv")
    print(f"\n已保存: {path}.csv, 共 {len(df)} 条数据")