2. 开发环境搭建:Python安装与版本管理(pyenv),虚拟环境(venv/conda),必备库安装
说实话,很多做量化交易的朋友,最后都栽在了环境配置上。
代码写得好好的,换个机器就跑不起来了。或者某个库版本不对,回测结果天差地别。我刚开始做量化那会儿,就吃过这个亏。有一次策略回测收益曲线漂亮得不行,结果发现是numpy版本不同导致的计算精度差异……嗯,从那以后,我再也不敢轻视环境管理了。
核心要点:开发环境的核心就三件事——Python版本隔离、项目依赖隔离、必备库安装。这三件事做好了,你的交易系统才能稳定跑下去。
2.1 Python版本管理:为什么需要pyenv?
你想想看,量化交易领域,不同库对Python版本的要求经常打架。比如backtrader在Python 3.9上跑得稳,但某些ccxt的新特性又需要3.10以上。怎么办?
我个人的习惯是:用pyenv来管理多个Python版本。它就像一个版本切换器,让你可以在不同项目间自由切换Python解释器。
安装pyenv(macOS/Linux)
# macOS
brew install pyenv
# Linux
curl https://pyenv.run | bash
# 配置到shell
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc
我的小技巧:Windows用户可以用pyenv-win,或者直接用Anaconda。我个人在Windows上更推荐Anaconda,省心。
常用pyenv命令
| 命令 | 说明 |
|---|---|
| pyenv install --list | 查看可安装的Python版本 |
| pyenv install 3.10.11 | 安装指定版本 |
| pyenv versions | 查看已安装的版本 |
| pyenv global 3.10.11 | 设置全局默认版本 |
| pyenv local 3.9.18 | 为当前项目设置版本 |
我曾经踩过一个坑:在项目里用了Python 3.11的新语法,结果部署到服务器上发现服务器只有3.8。从那以后,我每个项目都会在根目录放一个.python-version文件,明确指定版本。
2.2 虚拟环境:venv vs conda
有了pyenv管理Python版本,接下来就是虚拟环境了。说白了,虚拟环境就是给每个项目一个独立的「小房间」,里面装的库互不干扰。
venv(Python自带)
轻量、简单,适合大多数场景。
# 创建虚拟环境
python -m venv trading_env
# 激活(macOS/Linux)
source trading_env/bin/activate
# 激活(Windows)
trading_env\Scripts\activate
# 退出
deactivate
Conda(Anaconda/Miniconda)
如果你做数据分析或机器学习,conda更合适。它能管理非Python的依赖,比如C++库。
# 创建环境
conda create -n trading_env python=3.10
# 激活
conda activate trading_env
# 退出
conda deactivate
# 导出环境
conda env export > environment.yml
# 从文件创建
conda env create -f environment.yml
注意:venv和conda不要混用。我见过有人先激活conda环境,又在里面用venv创建子环境,结果依赖乱成一锅粥。选一个用到底就好。
我个人习惯:纯Python项目用venv,涉及科学计算或需要GPU支持的项目用conda。你想想看,这样分工明确,管理起来也清爽。
2.3 必备库安装
好,环境搭好了,接下来就是装库了。量化交易必备的库,我按用途分了三类:
数据处理三件套
pip install pandas numpy matplotlib
- pandas:处理时间序列数据,K线、订单簿都靠它
- numpy:数值计算,回测中的矩阵运算离不开它
- matplotlib:画图,看策略表现、资金曲线
交易所接口
pip install ccxt
ccxt支持100多家交易所的统一API接口。我当年写策略时,为了对接币安和OKX,分别写了两套API调用代码。后来发现ccxt,直接一套代码搞定所有交易所。嗯,真香。
回测框架
pip install backtrader
backtrader是Python里最流行的回测框架之一。它支持多策略、多数据源、自定义指标。虽然现在有更新的框架,但backtrader的生态最成熟,文档也全。
避坑指南:安装时建议指定版本号,比如pip install backtrader==1.9.78.123。我曾经因为装了最新版,结果某个API变了,回测结果对不上。从那以后,我每个项目都会生成requirements.txt锁定版本。
2.4 完整安装脚本
为了方便,我写了一个一键安装脚本。你直接复制到终端运行就行。
# 创建虚拟环境
python -m venv quant_env
# 激活
source quant_env/bin/activate # macOS/Linux
# quant_env\Scripts\activate # Windows
# 升级pip
pip install --upgrade pip
# 安装核心库
pip install pandas==2.0.3
pip install numpy==1.24.3
pip install matplotlib==3.7.2
pip install ccxt==4.1.22
pip install backtrader==1.9.78.123
# 可选:安装Jupyter Notebook用于交互式开发
pip install jupyter
# 导出依赖
pip freeze > requirements.txt
echo "环境搭建完成!"
2.5 验证安装
装完了,怎么知道对不对?跑个简单的测试脚本看看。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import ccxt
import backtrader as bt
print(f"pandas版本: {pd.__version__}")
print(f"numpy版本: {np.__version__}")
print(f"ccxt版本: {ccxt.__version__}")
print(f"backtrader版本: {bt.__version__}")
# 生成一个简单的K线数据
dates = pd.date_range('2024-01-01', periods=100)
data = pd.DataFrame({
'open': np.random.randn(100).cumsum() + 100,
'high': np.random.randn(100).cumsum() + 102,
'low': np.random.randn(100).cumsum() + 98,
'close': np.random.randn(100).cumsum() + 100,
'volume': np.random.randint(1000, 5000, 100)
}, index=dates)
print("\n数据预览:")
print(data.head())
# 画个收盘价曲线
plt.figure(figsize=(10, 6))
plt.plot(data.index, data['close'])
plt.title('测试数据 - 收盘价曲线')
plt.xlabel('日期')
plt.ylabel('价格')
plt.show()
如果这段代码能顺利跑通,恭喜你,开发环境已经搭好了。
2.6 知识体系总览
下面这张图,是我整理的环境搭建核心逻辑。你可以把它当成一个检查清单。
这张图把环境搭建的三大模块串起来了。你从Python版本管理开始,选好虚拟环境方案,再装上必备库,一条线走到底。
总结一下:
- 用pyenv管理Python版本,避免版本冲突
- 用venv或conda做项目隔离,别混用
- 装好pandas、numpy、matplotlib、ccxt、backtrader这五件套
- 锁定依赖版本,生成requirements.txt
做到这四点,你的开发环境就稳了。接下来就可以安心写策略了。
最后说一句:环境搭建看起来繁琐,但这是值得的。我见过太多人因为环境问题浪费几天时间。花半小时把环境搭好,后面能省下几十个小时的排查时间。这笔账,划算。