3、Python环境搭建:Anaconda安装、虚拟环境配置、常用做市库介绍

做量化交易,尤其是做市商策略,说白了就是跟数据打交道。你想想看,行情数据、订单簿数据、成交数据,哪一样离得开Python?我个人习惯,第一步就是把环境搭好。这一步要是偷懒,后面全是坑。

嗯,咱们直接开始。这一章我会带你搞定三件事:装好Anaconda、配好虚拟环境、认识几个做市必备的Python库。

3.1 为什么选Anaconda?

很多新手喜欢直接装Python官方版本,然后手动装包。我刚开始也这么干,结果呢?装一个包依赖冲突,装另一个包版本不对,折腾半天还没跑通一个策略。后来我改用Anaconda,真香。

Anaconda自带Python、包管理器conda、还有一大堆科学计算库。你装好它,就等于有了一个开箱即用的量化环境。更重要的是,conda能帮你管理虚拟环境,不同项目用不同Python版本,互不干扰。

核心优势:

  • 自带Python和常用库,省去手动安装的麻烦
  • conda包管理器,解决依赖冲突
  • 虚拟环境隔离,项目之间不打架
  • 跨平台支持,Windows、macOS、Linux都能用

3.2 Anaconda安装步骤

安装其实很简单,但有几个细节要注意。我曾经因为安装路径带了中文,结果后面跑策略时各种报错,排查了半天才发现是路径问题。所以,记住:路径不要有中文和空格

  1. 去Anaconda官网下载对应系统的安装包(建议选Python 3.9+版本)
  2. 双击安装,一路默认就行。但注意这一步:勾选「Add Anaconda to my PATH environment variable」
  3. 安装完成后,打开终端(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环境搭建的完整流程,以及各个组件之间的关系。

Python做市环境搭建知识体系 Anaconda 基础环境 虚拟环境 (conda create) ccxt (交易所接口) pandas (数据处理) numpy (数值计算) 做市商策略应用 从环境搭建到策略应用,层层递进

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("环境搭建成功!")

如果所有输出都正常,恭喜你,环境搭好了。接下来就可以开始写做市策略了。

我的建议:把这个测试脚本保存下来,每次换新机器或者新环境,先跑一遍。省得后面写策略时才发现环境有问题,浪费时间排查。


专注资料整理