Binance
平台概览
Binance 是全球用户量最大的加密资产交易所之一,涵盖现货、杠杆、合约等多种业务形态,支持主流币种与法币入金渠道。其撮合效率高、深度充足,适合执行高频与中低频量化策略。团队需关注手续费等级(VIP 等级、BNB 折扣)以及合规公告,避免在策略上线后触碰交易限制。
API 接入流程
- 创建企业或个人账号,开启身份验证与资金密码,确保账户安全。
- 在「API Management」中新建 API Key,勾选所需的现货、合约读写权限,并设定 IP 白名单。
- 将
API Key、Secret Key存入安全配置文件或密钥管控服务,勿写入仓库。 - 使用官方
binance-connector、ccxt库或内部封装的 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)} 条数据")