3、开发环境搭建:操作系统选择(Linux/Windows)

做高频量化交易,第一件事不是写代码,而是选操作系统。我见过不少新手上来就在Windows上开干,结果跑回测时发现延迟高得离谱,数据吞吐量上不去——嗯,这就是踩坑的开始。

说白了,高频交易对操作系统的要求就三个字:低延迟、高稳定、强并发。我个人习惯用Linux,尤其是Ubuntu Server LTS版本。为什么?

  • 内核可调优:Linux允许你调整CPU调度策略、中断亲和性、内存大页等参数。Windows虽然也能调,但限制太多。
  • ZeroMQ性能更优:我在项目中实测过,同样的ZeroMQ代码,Linux下的吞吐量比Windows高出15%-20%。
  • 无GUI干扰:服务器版Linux没有桌面环境,省下的CPU周期全给交易策略。

当然,Windows也不是不能用。如果你只是做策略研究、数据可视化,或者你的交易接口只支持Windows,那也没问题。但记住一点:生产环境必须上Linux

我的建议:开发机用Windows + WSL2,生产机用Ubuntu 22.04 LTS。这样两边环境一致,部署时少踩坑。

Python环境配置

Python版本选哪个?我直接说结论:Python 3.10+。3.11虽然更快,但有些量化库还没完全适配。3.9以下就别用了,asyncio的语法糖不够甜。

安装Python其实很简单,但有个坑——千万别直接从官网下载安装包然后一路点「下一步」。你想想看,系统自带的Python和手动安装的Python混在一起,以后pip install时版本冲突能让你崩溃。

Anaconda与虚拟环境

我个人强烈推荐用Anaconda来管理Python环境。为什么?

  • 环境隔离:每个项目一个虚拟环境,互不干扰。我曾经因为在一个环境里同时装了tensorflow和pytorch,结果两个都跑不起来——血的教训。
  • 包管理方便:conda install比pip install更智能,会自动处理依赖冲突。
  • 切换版本简单:想用Python 3.9?conda create -n py39 python=3.9,搞定。

安装步骤:

  1. 去Anaconda官网下载Linux版安装包(或者用Miniconda,更轻量)
  2. 运行 bash Anaconda3-xxx-Linux-x86_64.sh
  3. 一路默认安装,最后选择是否初始化conda
  4. 创建虚拟环境:conda create -n hft python=3.10
  5. 激活环境:conda activate hft

小技巧:在.condarc文件中配置国内镜像源,下载速度能快10倍。我曾经等一个包下载等了半小时,后来换了清华源,30秒搞定。

必备库安装

环境搭好了,接下来装库。高频量化交易的核心库就四个:NumPy、Pandas、Asyncio、ZeroMQ。别贪多,先把这些吃透。

NumPy

NumPy是Python科学计算的基石。做量化交易,你每天要处理海量的价格数据、计算各种统计指标。用纯Python写循环?那速度慢得你想哭。

安装:conda install numpy

为什么用conda而不是pip?因为conda会自动安装MKL优化版本,矩阵运算能快30%-50%。我在项目中对比过,同样的回测代码,用conda装的NumPy比pip装的快了将近一倍。

Pandas

Pandas是处理时间序列数据的神器。K线数据、订单簿数据、交易记录——这些在Pandas里就是DataFrame和Series的事。

安装:conda install pandas

注意版本:建议用1.5.x或2.0.x。太老的版本不支持一些新特性,太新的版本可能有兼容问题。我一般锁定版本:conda install pandas=1.5.3

Asyncio

Asyncio是Python标准库,不需要额外安装。但很多人用不好它,觉得异步编程很难。其实说白了,asyncio就是让你在等待I/O时去做别的事,别傻等着。

在高频交易中,网络延迟是最大的敌人。你用同步方式去请求交易所的API,每次都要等几百毫秒。用asyncio,你可以同时发送多个请求,然后等所有结果回来再处理——效率翻倍。

核心概念async/await事件循环协程。这三个搞懂了,asyncio就入门了。

ZeroMQ

ZeroMQ(简称ZMQ)是高性能消息队列库。在高频交易系统里,各个模块之间需要通信——行情模块把数据发给策略模块,策略模块把信号发给交易模块。用ZMQ,延迟可以控制在微秒级。

安装:conda install pyzmq

ZMQ有三种常用模式:

模式 适用场景 特点
PUB/SUB 行情广播 一对多,发布者只管发,订阅者只管收
REQ/REP 请求-响应 一问一答,适合查询类操作
PUSH/PULL 任务分发 负载均衡,适合多worker处理

我在项目中用PUB/SUB模式做行情分发,一台机器接收交易所数据,然后广播给多个策略进程。延迟不到10微秒,稳得很。

知识体系总览

下面这张图把本章的核心逻辑串起来了。你跟着这个流程走,环境搭建就不会乱。

高频量化交易系统开发环境搭建 操作系统选择 Linux (Ubuntu 22.04 LTS) Windows + WSL2 生产环境 → Linux Python环境配置 Python 3.10+ | Anaconda | 虚拟环境 (conda create -n hft python=3.10) NumPy 科学计算 Pandas 时间序列 Asyncio 异步I/O ZeroMQ 消息队列 目标:低延迟、高稳定、强并发的交易系统

注意:安装库时一定要在虚拟环境里操作。我曾经直接在base环境里装了一堆包,结果项目之间依赖冲突,最后只能全部删掉重来。记住:conda activate hft 之后再 conda install

好了,环境搭好了,库也装齐了。接下来就可以开始写真正的交易代码了。记住,环境搭建这一步虽然枯燥,但基础打牢了,后面才能跑得快。


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