3. 开发环境搭建:Python虚拟环境配置,常用库安装

做市策略要跑起来,第一步就是搭环境。这事儿看着简单,但我在项目里见过太多人在这上面栽跟头——库版本冲突、Python环境乱成一锅粥,最后策略跑出来的结果对不上,排查半天发现是依赖的问题。所以咱们今天把这步走扎实了。

3.1 为什么非要用虚拟环境?

说白了,虚拟环境就是给你的每个项目一个独立的“小房间”。你想想看,你手上可能同时维护着好几个策略:一个做市策略用ccxt 2.0,另一个套利策略用ccxt 3.0。要是装在一个全局环境里,那不得打架?

我刚开始做量化那会儿,就吃过这个亏。有一次升级了某个库,结果另一个跑得好好的策略突然报错,查了一下午才发现是依赖版本被覆盖了。嗯,从那以后,我每个项目都老老实实开虚拟环境。

核心原则: 一个项目,一个虚拟环境,互不干扰。

3.2 创建Python虚拟环境

Python 3.3以上版本自带 venv 模块,不用额外装东西。我个人习惯用这个,轻量、干净。

# 打开终端,进入你的项目目录
cd market_making_strategy

# 创建虚拟环境,名字叫 venv
python -m venv venv

# 激活虚拟环境
# Windows:
venv\Scripts\activate

# macOS / Linux:
source venv/bin/activate

激活成功后,终端前面会出现 (venv) 的标识。看到这个,就说明你已经在虚拟环境里了。

小技巧: 我习惯把虚拟环境文件夹命名为 venv.venv,这样在 .gitignore 里直接写一行就能忽略掉,不会把环境文件传到Git仓库里。

3.3 常用库安装

做市策略需要跟交易所打交道、处理实时数据、做计算分析。下面这几个库,基本是标配。

3.3.1 ccxt —— 交易所接口统一封装

ccxt 是我用得最多的库。它把几十家交易所的API封装成统一的接口,你写一套代码,就能对接币安、OKX、Bybit等等。省心。

pip install ccxt

安装完后,简单测试一下能不能连上交易所:

import ccxt

exchange = ccxt.binance()
markets = exchange.load_markets()
print(f"成功加载 {len(markets)} 个交易对")
# 输出: 成功加载 1200+ 个交易对
注意: 有些交易所(比如币安)对API请求频率有限制。我在做回测时遇到过因为请求太频繁被临时封IP的情况。建议加上限速参数:exchange = ccxt.binance({'rateLimit': 1200})

3.3.2 websocket —— 实时行情推送

做市策略对时效性要求极高。用REST API轮询?延迟太高,而且容易被交易所限流。WebSocket是长连接,交易所主动推送数据给你,延迟低、效率高。

pip install websocket-client

我曾经踩过一个坑:WebSocket连接断了,策略还在按旧数据下单,结果亏了一笔。所以后来我都在代码里加了心跳检测和自动重连机制。这个后面讲策略实现时会细说。

3.3.3 pandas —— 数据处理与分析

pandas 做数据处理,就像厨师手里的菜刀。行情数据进来,你要算移动平均、波动率、订单簿深度……这些操作pandas一行代码搞定。

pip install pandas

举个例子,计算最近20笔成交的均价:

import pandas as pd

# 假设 trades 是最近100笔成交数据
trades = pd.DataFrame({
    'price': [100.1, 100.2, 100.0, 100.3, 100.1],
    'volume': [0.5, 1.2, 0.8, 2.0, 0.3]
})

# 计算最近20笔的成交量加权均价
vwap = (trades['price'] * trades['volume']).sum() / trades['volume'].sum()
print(f"VWAP: {vwap:.2f}")

3.3.4 numpy —— 高性能数值计算

numpy 是pandas的底层引擎,做矩阵运算、数学函数时特别快。做市策略里算方差、协方差、线性回归这些,numpy是主力。

pip install numpy

比如计算价格序列的标准差(衡量波动性):

import numpy as np

prices = np.array([100.1, 100.2, 100.0, 100.3, 100.1])
std = np.std(prices)
print(f"价格标准差: {std:.4f}")

3.4 依赖管理:requirements.txt

环境搭好了,怎么分享给团队或者部署到服务器?我习惯用 requirements.txt 把依赖固定下来。

# 导出当前环境的所有依赖
pip freeze > requirements.txt

别人拿到你的项目后,一条命令就能复现环境:

pip install -r requirements.txt
建议: 不要用 pip freeze > requirements.txt 直接导出全部依赖,那样会把很多间接依赖也列出来。我一般手动整理,只写直接依赖的库和版本号,比如:
ccxt==4.0.0
websocket-client==1.6.0
pandas==2.0.0
numpy==1.24.0

3.5 验证环境是否正常

装完库,跑个简单的脚本验证一下,确保所有组件都能正常工作。

import ccxt
import websocket
import pandas as pd
import numpy as np

print("ccxt 版本:", ccxt.__version__)
print("pandas 版本:", pd.__version__)
print("numpy 版本:", np.__version__)
print("所有库加载成功!")

看到版本号正常输出,说明环境搭建完成。接下来就可以开始写策略逻辑了。

总结一下: 虚拟环境隔离项目依赖,ccxt对接交易所,websocket拿实时数据,pandas和numpy做计算分析。这四样东西,是做市策略的“四件套”。
做市策略开发环境架构 Python 虚拟环境 (venv) 依赖管理 requirements.txt 固定版本 核心依赖库 ccxt 交易所接口 websocket 实时行情 pandas 数据处理 numpy 数值计算

环境搭好了,后面的事情就顺了。记住:磨刀不误砍柴工,环境搞扎实了,策略调试才能少踩坑。


公众号:蓝海资料掘金营,微信deep3321