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,搞定。
安装步骤:
- 去Anaconda官网下载Linux版安装包(或者用Miniconda,更轻量)
- 运行
bash Anaconda3-xxx-Linux-x86_64.sh - 一路默认安装,最后选择是否初始化conda
- 创建虚拟环境:
conda create -n hft python=3.10 - 激活环境:
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微秒,稳得很。
知识体系总览
下面这张图把本章的核心逻辑串起来了。你跟着这个流程走,环境搭建就不会乱。
注意:安装库时一定要在虚拟环境里操作。我曾经直接在base环境里装了一堆包,结果项目之间依赖冲突,最后只能全部删掉重来。记住:conda activate hft 之后再 conda install。
好了,环境搭好了,库也装齐了。接下来就可以开始写真正的交易代码了。记住,环境搭建这一步虽然枯燥,但基础打牢了,后面才能跑得快。
公众号:蓝海资料掘金营,微信deep3321