3、Python环境搭建:Anaconda安装、虚拟环境配置、常用做市库介绍
做量化交易,尤其是做市商策略,说白了就是跟数据打交道。你想想看,行情数据、订单簿数据、成交数据,哪一样离得开Python?我个人习惯,第一步就是把环境搭好。这一步要是偷懒,后面全是坑。
嗯,咱们直接开始。这一章我会带你搞定三件事:装好Anaconda、配好虚拟环境、认识几个做市必备的Python库。
3.1 为什么选Anaconda?
很多新手喜欢直接装Python官方版本,然后手动装包。我刚开始也这么干,结果呢?装一个包依赖冲突,装另一个包版本不对,折腾半天还没跑通一个策略。后来我改用Anaconda,真香。
Anaconda自带Python、包管理器conda、还有一大堆科学计算库。你装好它,就等于有了一个开箱即用的量化环境。更重要的是,conda能帮你管理虚拟环境,不同项目用不同Python版本,互不干扰。
核心优势:
- 自带Python和常用库,省去手动安装的麻烦
- conda包管理器,解决依赖冲突
- 虚拟环境隔离,项目之间不打架
- 跨平台支持,Windows、macOS、Linux都能用
3.2 Anaconda安装步骤
安装其实很简单,但有几个细节要注意。我曾经因为安装路径带了中文,结果后面跑策略时各种报错,排查了半天才发现是路径问题。所以,记住:路径不要有中文和空格。
- 去Anaconda官网下载对应系统的安装包(建议选Python 3.9+版本)
- 双击安装,一路默认就行。但注意这一步:勾选「Add Anaconda to my PATH environment variable」
- 安装完成后,打开终端(Windows用Anaconda Prompt),输入
conda --version,看到版本号就说明装好了
避坑指南:我曾经在macOS上装Anaconda,忘了给安装目录写权限,结果后面装包一直失败。解决办法很简单:安装时选择「Install for me only」,别选「Install for all users」。
3.3 虚拟环境配置
做市商策略对稳定性要求极高。你想想看,一个策略跑得好好的,突然因为升级了某个库导致接口变了,订单发不出去,那损失可就大了。所以,每个项目都应该有自己的虚拟环境。
我一般这样操作:
# 创建一个名为 market_making 的虚拟环境,指定Python版本
conda create -n market_making python=3.9
# 激活环境
conda activate market_making
# 安装常用库
conda install pandas numpy ccxt -c conda-forge
# 查看已安装的包
conda list
为什么要指定Python版本?因为有些做市库对Python版本有要求。比如ccxt,我遇到过它在Python 3.11上有个小bug,降回3.9就没事了。所以,我建议统一用Python 3.9,兼容性最好。
我的习惯:每个策略项目建一个独立环境,命名规则是「项目名_日期」。比如 btc_mm_202501。这样过几个月回头看,还能知道当时用的是哪个环境。
3.4 常用做市库介绍
做市商策略离不开三个核心库:ccxt、pandas、numpy。我分别说说它们的作用,以及我在项目中是怎么用的。
3.4.1 ccxt:交易所接口统一封装
ccxt是一个加密货币交易所的统一API库。它支持100多家交易所,接口风格一致。你写一套代码,就能对接币安、OKX、火币等主流交易所。
我最早做做市时,每个交易所写一套API调用代码,累得半死。后来发现ccxt,简直像发现了宝藏。你想想看,只需要改一个参数,就能切换交易所,多爽。
import ccxt
# 初始化币安交易所
exchange = ccxt.binance({
'apiKey': '你的API_KEY',
'secret': '你的SECRET_KEY',
'enableRateLimit': True, # 开启限速,防止被交易所封
})
# 获取BTC/USDT的订单簿
orderbook = exchange.fetch_order_book('BTC/USDT')
print(f"买一价: {orderbook['bids'][0][0]}")
print(f"卖一价: {orderbook['asks'][0][0]}")
# 获取账户余额
balance = exchange.fetch_balance()
print(f"USDT余额: {balance['USDT']['free']}")
注意:ccxt的限速机制很重要。我曾经没开 enableRateLimit,结果请求太频繁,被交易所封了IP。嗯,从那以后我再也不敢忘了这个参数。
3.4.2 pandas:数据处理利器
做市商策略的核心是数据分析。订单簿数据、历史行情、交易记录,这些都需要pandas来处理。pandas的DataFrame结构,说白了就是一张表格,你可以对它做各种筛选、聚合、计算。
我一般用它来做回测和实时监控。比如,计算订单簿的买卖价差、深度分布、成交量加权价格等。
import pandas as pd
# 假设我们有一份历史行情数据
data = {
'timestamp': ['2025-01-01 10:00:00', '2025-01-01 10:01:00'],
'bid_price': [50000, 50010],
'ask_price': [50005, 50015],
'bid_volume': [1.5, 2.0],
'ask_volume': [1.2, 1.8],
}
df = pd.DataFrame(data)
# 计算买卖价差
df['spread'] = df['ask_price'] - df['bid_price']
# 计算中间价
df['mid_price'] = (df['bid_price'] + df['ask_price']) / 2
print(df)
3.4.3 numpy:高性能数值计算
numpy是pandas的底层引擎。它用C语言实现,计算速度比纯Python快几十倍。做市商策略中,很多计算需要毫秒级响应,比如计算订单簿的加权平均价格、波动率等。
我习惯用numpy的数组操作,避免用Python的for循环。你想想看,一个订单簿有几千档价格,用for循环算一遍,黄花菜都凉了。
import numpy as np
# 假设订单簿的卖盘价格和数量
ask_prices = np.array([50005, 50010, 50015, 50020])
ask_volumes = np.array([1.2, 0.8, 0.5, 0.3])
# 计算加权平均卖价
weighted_ask_price = np.average(ask_prices, weights=ask_volumes)
print(f"加权平均卖价: {weighted_ask_price:.2f}")
# 计算价格标准差(衡量波动性)
price_std = np.std(ask_prices)
print(f"价格标准差: {price_std:.2f}")
3.5 知识体系总览
为了让你更直观地理解这一章的内容,我画了一张图。它展示了Python环境搭建的完整流程,以及各个组件之间的关系。
3.6 环境验证
装好之后,怎么确认环境没问题?我一般写一个简单的测试脚本,跑一遍看看。
# test_env.py
import ccxt
import pandas as pd
import numpy as np
print("ccxt版本:", ccxt.__version__)
print("pandas版本:", pd.__version__)
print("numpy版本:", np.__version__)
# 测试ccxt连接
exchange = ccxt.binance()
ticker = exchange.fetch_ticker('BTC/USDT')
print(f"BTC当前价格: {ticker['last']}")
# 测试pandas和numpy
data = np.array([1, 2, 3, 4, 5])
df = pd.DataFrame(data, columns=['value'])
print(f"数据均值: {df['value'].mean()}")
print("环境搭建成功!")
如果所有输出都正常,恭喜你,环境搭好了。接下来就可以开始写做市策略了。
我的建议:把这个测试脚本保存下来,每次换新机器或者新环境,先跑一遍。省得后面写策略时才发现环境有问题,浪费时间排查。