4、Python环境搭建:Anaconda安装、Python版本选择、虚拟环境创建、常用库安装
做量化做市,第一件事不是写策略,而是搭环境。
我见过太多人,代码写了一半,发现库版本冲突,或者Python版本不对,整个项目跑不起来。说实话,这种问题最让人头疼。所以这一章,咱们把环境彻底搞定。
4.1 为什么选Anaconda?
Python的发行版很多,但做量化交易,我强烈推荐Anaconda。原因很简单——它把Python、包管理器、常用科学计算库打包在一起了。你装一个,基本就齐活了。
我自己最早用的是原生Python,后来发现装个pandas要手动解决依赖,装个numpy还得编译C扩展……折腾几次后,果断换Anaconda。嗯,省心太多了。
Anaconda的核心优势:
- 自带conda包管理器,比pip更擅长处理依赖冲突
- 预装200+常用数据科学库
- 支持创建隔离的虚拟环境
- 跨平台(Windows/Mac/Linux)体验一致
4.2 Python版本选择
做量化做市,Python版本不是越新越好。你想想看,很多交易库(比如ccxt、websocket-client)对新版Python的支持往往滞后。我建议选稳定版。
| Python版本 | 推荐度 | 说明 |
|---|---|---|
| 3.8.x | ⭐⭐⭐⭐ | 最稳定,几乎所有库都支持 |
| 3.9.x | ⭐⭐⭐⭐⭐ | 我个人推荐,性能有提升,兼容性好 |
| 3.10.x | ⭐⭐⭐ | 部分旧库可能不兼容,需测试 |
| 3.11+ | ⭐⭐ | 新特性多,但生态还不够成熟 |
我个人习惯用Python 3.9。为什么?因为我在项目中踩过坑——有一次用3.11跑一个老版本的websocket库,直接报错。后来查了半天,发现是asyncio的接口变了。所以,别追新,稳最重要。
4.3 虚拟环境创建
做量化做市,你可能会同时维护多个策略。每个策略依赖的库版本可能不同。这时候,虚拟环境就是你的救命稻草。
说白了,虚拟环境就是给每个项目一个独立的Python“小房间”。里面的库互不干扰。
我的习惯:每个做市策略项目,都单独建一个虚拟环境。命名规则是 mm_策略名,比如 mm_btc_hedge。这样一眼就知道哪个环境对应哪个策略。
创建虚拟环境的命令很简单:
# 创建名为 mm_env 的虚拟环境,指定Python版本为3.9
conda create -n mm_env python=3.9
# 激活环境
conda activate mm_env
# 退出环境
conda deactivate
# 查看所有环境
conda env list
这里要注意一点:激活环境后,你的终端前面会出现 (mm_env) 字样。如果没看到,说明没激活成功。我曾经因为这个疏忽,把库装到了base环境里,结果项目跑起来各种报错……
4.4 常用库安装
做市机器人需要跟交易所打交道、处理数据、做计算。下面这几个库,是标配。
4.4.1 pandas & numpy
这两个是数据处理的基石。pandas处理表格数据,numpy做数值计算。安装很简单:
conda install pandas numpy
用conda装的好处是,它会自动帮你解决依赖。比如pandas依赖numpy,conda会一起装好。如果用pip,有时候会遇到版本不匹配的问题。
4.4.2 ccxt
ccxt是连接交易所的瑞士军刀。它统一了上百家交易所的API接口。你写一套代码,就能对接币安、OKX、Bybit等主流交易所。
pip install ccxt
注意,ccxt更新很频繁。我建议固定版本号,比如:
pip install ccxt==4.0.7
为什么?因为有一次ccxt大版本升级,把某个函数的参数名改了。我的策略代码直接崩了。从那以后,我学乖了——生产环境锁版本。
4.4.3 websocket
做市对实时性要求极高。你不能用HTTP轮询去拿行情,那太慢了。必须用WebSocket,建立长连接,数据实时推送。
pip install websocket-client
这里有个坑:Python有两个常用的WebSocket库——websocket-client 和 websockets。前者是同步的,后者是异步的。做市机器人一般用同步的 websocket-client,因为它更容易控制连接状态。
避坑指南:安装完记得测试一下连接。我曾经遇到过——库装好了,但死活连不上交易所。后来发现是系统缺少openssl的依赖。解决办法:conda install openssl。
4.5 环境验证
装完库,别急着写代码。先验证一下环境是否正常。我一般写个简单的测试脚本:
import pandas as pd
import numpy as np
import ccxt
import websocket
print("pandas version:", pd.__version__)
print("numpy version:", np.__version__)
print("ccxt version:", ccxt.__version__)
print("websocket version:", websocket.__version__)
# 测试ccxt连接
exchange = ccxt.binance()
markets = exchange.load_markets()
print(f"成功加载 {len(markets)} 个交易对")
如果所有库都能正常导入,且ccxt能成功加载币安的交易对,那环境就搭好了。
4.6 本章知识体系
下面这张图,帮你理清整个环境搭建的逻辑:
这张图把环境搭建的四个核心环节串起来了。从Anaconda安装开始,到Python版本选择,再到虚拟环境创建,最后安装常用库。每一步都环环相扣。
好了,环境搭好了。下一章,咱们开始写真正的做市策略代码。
公众号:蓝海资料掘金营,微信deep3321