Skip to content

Repository files navigation

BinanceQuantClient

币安量化交易客户端,支持同步和异步两种模式。

特性

  • 统一使用 python-binance SDK,支持同步和异步
  • 支持 Spot 现货交易
  • 支持 U本位合约 (UM Futures)
  • 支持币本位合约 (CM Futures)
  • 支持 REST API 和 WebSocket
  • 支持代理配置

安装

使用 pip (推荐)

pip install -r requirements.txt

使用 pipenv

pipenv install

注意: 项目已迁移到统一使用 python-binance SDK,不再依赖 binance-connectorbinance-futures-connector

配置

创建 .env 文件:

API_KEY=<binance api key>
API_SECRET=<binance api secret>
CLIENT_TIMEOUT=3
CLIENT_SHOW_LIMIT=false
CLIENT_SHOW_HEADER=false
CLIENT_PROXY={"https":"http://127.0.0.1:1080"}
WS_CLIENT_TIMEOUT=5
WS_CLIENT_PROXY={"https":"http://127.0.0.1:1080"}
WS_SPOT_PAIRS=["BTCUSDT"]
WS_CM_FUTURES_PAIRS=[]
WS_UM_FUTURES_PAIRS=["BTCUSDT"]
REDIS_URL="redis://127.0.0.1:6379/20"

使用

同步模式

fromspotimportSpotClientfromfuturesimportUmFuturesClient, CmFuturesClientfromutilsimportRedisClient# 现货client=SpotClient()
ticker=client.get_spot_ticker_price("BTCUSDT")
print(ticker)
# U本位期货um_client=UmFuturesClient()
ticker=um_client.get_um_futures_ticker_price("BTCUSDT")
print(ticker)
# 币本位期货cm_client=CmFuturesClient()
ticker=cm_client.get_cm_futures_ticker_price("BTCUSD_PERP")
print(ticker)

异步模式

importasynciofromspotimportAsyncSpotClientfromfuturesimportAsyncUmFuturesClient, AsyncCmFuturesClientfromutilsimportAsyncTaskManager, AsyncRedisClientfromspot.ws_asyncimportAsyncSpotWebSocketasyncdefmain():
# 异步 REST APIclient=AsyncSpotClient()
ticker=awaitclient.get_spot_ticker_price("BTCUSDT")
print(ticker)
awaitclient.close()
# 异步 WebSocketmanager=AsyncTaskManager()
awaitmanager.start()
ws=AsyncSpotWebSocket(manager)
awaitws.subscribe_partial_book_depth("BTCUSDT")
awaitasyncio.sleep(30)
awaitmanager.stop()
asyncio.run(main())

并发请求示例

importasynciofromspotimportAsyncSpotClientasyncdefget_multiple_prices():
client=AsyncSpotClient()
symbols= ["BTCUSDT", "ETHUSDT", "BNBUSDT"]
tasks= [client.get_spot_ticker_price(s) forsinsymbols]
results=awaitasyncio.gather(*tasks)
forsymbol, tickerinzip(symbols, results):
print(f"{symbol}: {ticker}")
awaitclient.close()
asyncio.run(get_multiple_prices())

项目结构

BinanceQuantClient/
├── requirements.txt # 项目依赖
├── envs.py # 环境配置
├── gvars.py # 全局变量
├── utils/
│ ├── redis_client.py # 同步 Redis 客户端
│ ├── redis_client_async.py # 异步 Redis 客户端
│ └── async_task_manager.py # 异步任务管理器
├── spot/
│ ├── api.py # 同步现货 REST API (基于 python-binance Client)
│ ├── api_async.py # 异步现货 REST API (基于 python-binance AsyncClient)
│ ├── ws.py # 同步现货 WebSocket
│ └── ws_async.py # 异步现货 WebSocket
├── futures/
│ ├── um_api.py # 同步 U本位 REST API (基于 python-binance Client)
│ ├── um_api_async.py # 异步 U本位 REST API (基于 python-binance AsyncClient)
│ ├── um_ws.py # 同步 U本位 WebSocket
│ ├── um_ws_async.py # 异步 U本位 WebSocket
│ ├── cm_api.py # 同步币本位 REST API (基于 python-binance Client)
│ ├── cm_api_async.py # 异步币本位 REST API (基于 python-binance AsyncClient)
│ ├── cm_ws.py # 同步币本位 WebSocket
│ └── cm_ws_async.py # 异步币本位 WebSocket
└── examples_async.py # 异步使用示例

SDK 依赖

本项目统一使用 python-binance SDK:

功能同步客户端异步客户端
Spot 现货ClientAsyncClient
UM U本位合约Client.futures_*AsyncClient.futures_*
CM 币本位合约Client.futures_coin_*AsyncClient.futures_coin_*

为什么选择 python-binance?

  • 社区维护活跃,功能完善
  • 同时支持同步和异步操作
  • 统一的 API 设计,易于使用
  • 支持 Spot、UM Futures、CM Futures 全部交易类型

运行示例

python examples_async.py

注意事项

  1. 代理配置: 同步客户端和异步客户端的代理配置方式不同

    • 同步: requests_params={"proxies": {...}}
    • 异步: session_params={"proxy": "..."}
  2. 超时配置: 超时时间在 requests_params 中设置,单位为秒

  3. 环境变量: 确保 .env 文件正确配置,特别是 API_KEY 和 API_SECRET

About

Binance平台量化工具

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages