快速入门
一、综述
闪策回测系统 提供了两种主要的回测方式,帮助用户在不同场景下高效验证策略的有效性与稳健性:文件单回测 与 策略回测。两种方式各有优势,用户可根据策略开发阶段与资源条件灵活选择。
文件单回测 是通过将策略生成的订单流数据导入回测系统,由系统根据历史行情数据模拟订单的成交过程,并计算策略的回测绩效。此方式既可在本地环境中运行,也支持远程回测模式。
策略回测 通过回测API接口将策略与回测系统深度联动,使策略能在回测过程中动态响应行情与成交事件。系统提供行情回放、下单接口、成交回调等核心功能,策略可完全复现实盘逻辑,实现精细化、交互式的历史回测。
总体而言,闪策回测系统为不同需求场景提供了灵活的解决方案:
文件单回测 轻量、快速,适合远程验证与快速评估
策略回测 灵活、精确,适合深度策略开发与仿真验证
用户可根据自身的策略复杂度、开发需求及计算环境选择最合适的回测模式,从而高效评估策略表现并持续优化交易逻辑。
二、文件单回测
互联网回测环境地址:http://202.101.23.226:19001/ 用户名和密码请联系闪策相关人员 使用详细说明书见 文件单回测章节
三、策略回测
策略回测环境支持两种部署方式:Linux 部署 和 Windows-WSL2 部署。
提示:如果在执行文档中的命令时出现 “未找到该命令” 的错误,请根据您的操作系统尝试以下解决方案:
Ubuntu/Debian 系统:使用
apt update && apt install <package-name>安装缺失的包
例如:
apt install docker.io docker-compose-v2 wget tarWindows 系统:
使用 winget 安装:
winget install <package-name>Python 包:使用
pip install <package-name>安装 Python 依赖WSL2:确认 WSL 已正确安装,可使用
wsl --list --verbose验证
3.1 Linux 部署
3.1.1 环境要求
需要两台机器(资源紧张可使用一台Ubuntu机器)
机器A: 基础设施环境,回测基础设施的运行机器,包括数据库、前端服务等的部署。操作系统不做要求,需要有docker,docker-compose
机器B: 策略开发环境,策略开发/运行机器,调试运行策略。要求操作系统:Ubuntu18.04 / Ubuntu20.04
3.1.2 基础设施环境搭建
要求安装基本命令,需要当前机器有docker, docker-compose 2.0以上版本,需要当前用户有sudo权限。
3.1.2.1 组件安装
【下载链接】
回测系统中使用了 MongoDB(静态数据存储), MySQL(回测结果存储), Superset(回测绩效展示)组件,闪策提供了一键安装脚本,首先根据拿到的压缩包,解压缩,安装相关组件
tar -zxvf backtest_project.tar.gz
cd backtest_project/
./install.sh
./start.sh
确保所有组件安装完成并启动成功
服务器上的3306端口(MySQL)、27017端口(MongoDB)、8088(Superset)端口均处于监听状态
验证Superset是否正常可登录 其他机器访问
http://<your-server-ip>:8088,用户名密码为 admin/admin运行完成后存在
/split_datas/SCSymbol.table文件,之后/split_datas/目录下存放回测所需的历史行情数据文件,如果开发环境和基础设施部署了两套系统,需要确保开发环境机器可以共享访问/split_datas/目录。如果上述
start.sh在执行过程中出现错误,后续可以执行stop.sh之后在执行start.sh
3.1.2.2 数据准备
闪策回测系统试用,准备了2025.4.1-2025.4.30一个月的期货L1数据和证券L2数据,由于数据量比较大,需要从闪策sftp服务器下载,操作步骤:
进入数据目录下:
cd /split_datas/
下载一天的期货L1数据的命令(密码请联系闪策相关人员):
wget -r -nH --cut-dirs=1 --ftp-user=scclient1 --ftp-password=<password> ftp://202.101.23.226:2001/download/futures_L1_datas/2025/04/01 .
下载一天的证券L2数据命令如下:
wget -r -nH --cut-dirs=1 --ftp-user=scclient1 --ftp-password=<password> ftp://202.101.23.226:2001/download/stock_L2_datas/2025/04/01 .
注: 在 Windows PowerShell 中需使用 wget.exe
3.1.3 策略开发/运行环境搭建
包含两种语言的开发包,C++开发包 和Python开发包
环境准备(绩效指标分析所需要)
# 安装Python环境,3.8 ~ 3.13 均支持
# 安装Python依赖包
pip install DBUtils mysql-connector-python pandas pymongo PyMySQL
C++开发包
【下载链接】
解开压缩包
tar -zxvf backtestapi.tar.gz cd backtestapi/
修改基础设施环境连接信息
// backtest_runtime/conf/db_connection.json { "host": "127.0.0.1", // MySQL的host地址 "port": 3306, // MySQL的端口信息 "user": "sc", // MySQL用户名 "password": "shance123!", // MySQL密码 "database": "scbacktest", // MySQL回测数据库 "mongodb": { "uri": "mongodb://sc_reader:shance123%21@127.0.0.1:27017/" // MongoDB连接信息 } }
修改
conf/initConfig.json回测配置参数,主要是要回测的品种、开始/结束时间等内容,具体参数配置说明见 initConfig 配置说明根据策略逻辑需要修改
src/Strategy.cc,目前内部是简单的策略逻辑(只交易 au2505.SHFE 合约)。编译并运行策略
./run.sh详见 C++ API 回测
Python开发包
【下载链接】
解开压缩包
tar -zxvf backtestapi-python.tar.gz cd backtestapi-python/
配置参数,同上述C++配置参数。
backtest_runtime/conf/db_connection.json conf/initConfig.json
根据策略逻辑需要修改
src/Strategy.py,目前内部是简单的策略逻辑(只交易 au2505.SHFE 合约)。运行Python策略
./run.sh
查看绩效指标
上述
run.sh运行结束之后,通过脚本输出的task-id,可以在网页查看绩效指标登录 Supperset 网页
http://<your-server-ip>:8088

点击
dashboard可查看当前/历史回测信息
点击对应的
task-id可查看对应的回测信息

3.2 Windows-WSL2 部署
本节介绍在 Windows 系统中通过 WSL2 部署回测环境的方法,适用于无法使用 Linux 机器但需要在 Windows 上进行策略回测的用户。
3.2.1 前置检查
在开始部署之前,需要完成以下检查项目。
3.2.1.1 端口检查
确认 Windows 本机以下端口未被占用:
3306 端口(MySQL)
27017 端口(MongoDB)
8088 端口(Superset)
可以通过以下命令检查端口占用情况:
netstat -ano | findstr "3306 27017 8088"
如果上述端口被占用,需要关闭对应进程或选择其他端口进行配置。
3.2.1.2 CPU 虚拟化检查
WSL2 需要在 BIOS/UEFI 中开启 CPU 虚拟化功能才能正常运行。在开始部署之前,请务必检查并确保该功能已启用。
检查虚拟化是否已开启:
在 Windows 命令行或 PowerShell 中执行以下命令:
systeminfo
在输出信息中查找以下字段:
Hyper-V 要求: 是 (= 已启用 Hyper-V)
virtualization extensions in firmware: Yes (= 已启用虚拟化)
如果显示 “Hyper-V 要求: 否” 或 “virtualization extensions in firmware: No”,则需要按照下方步骤开启虚拟化。
开启 CPU 虚拟化:
进入 BIOS/UEFI 设置:
重启计算机
在开机画面出现时按下对应按键(通常是
Del、F2、F10、Esc或F12,具体取决于主板厂商)进入
Advanced或Configuration选项卡
启用虚拟化技术:
找到
Intel Virtualization Technology(Intel CPU) 或AMD-V/SVM Mode(AMD CPU) 选项将其设置为
Enabled保存设置并退出(通常按
F10)
开启 Windows Hyper-V 功能(可选,但推荐):
以管理员身份运行 PowerShell,执行:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All
重启计算机使配置生效。
参考链接:更多关于 Windows 虚拟化设置的信息,请参考微软官方文档:https://support.microsoft.com/zh-cn/windows/c5578302-6e43-4b4b-a449-8ced115f58e1
3.2.1.3 WSL 版本检查
本系统仅支持 WSL2,不支持 WSL1。这是因为回测服务在 Linux 环境中使用 systemctl 命令管理进程,而 WSL1 不支持 systemd。
检查当前 WSL 版本:
在 Windows 命令行或 PowerShell 中执行以下命令:
wsl --list --verbose
输出示例:
NAME STATE VERSION
* Ubuntu-22.04-Backtest Running 2
VERSION 列显示
2表示使用的是 WSL2VERSION 列显示
1表示使用的是 WSL1
将 WSL1 转换为 WSL2:
如果发现当前使用的是 WSL1,可以通过以下命令将其转换为 WSL2:
wsl --set-version Ubuntu-22-04-Backtest 2
转换过程可能需要几分钟时间,等待完成即可。
设置默认 WSL 版本:
如果希望此后安装的任何新 WSL 发行版默认使用 WSL2,可以执行:
wsl --set-default-version 2
3.2.2 数据准备
在 Windows D 盘根目录下创建以下数据目录:
D:\split_datas\futures_L1_datas D:\split_datas\stock_L2_datas
数据下载方式请参考 3.1.2.2 数据准备 节内容,将下载的数据文件放置到对应目录中。
3.2.3 WSL 系统导入
从以下地址下载 WSL 系统包:
【下载链接】
在 Windows 命令行或 PowerShell 中执行以下命令导入 WSL 系统:
wsl --import Ubuntu-22.04-Backtest D:\WSL-Ubuntu-22-04-Backtest D:\path\to\WSL-Ubuntu-22-04-Backtest.tar
说明:
D:\WSL-Ubuntu-22-04-Backtest为 WSL 系统导入的目标目录D:\path\to\WSL-Ubuntu-22-04-Backtest.tar为下载的 WSL 系统包路径可以使用
wsl --list --verbose查看已导入的系统, 存在名为Ubuntu-22.04-Backtest的系统即导入成功
如果 Windows 中没有 wsl 命令,需要先启用 WSL 功能。请参考微软官方文档:https://learn.microsoft.com/zh-cn/windows/wsl/install
3.2.4 启动 WSL
使用以下命令启动 WSL 并进入系统:
wsl -d Ubuntu-22.04-Backtest -u sc
默认用户为 sc,密码为 sc654321
回测 SDK 安装和运行路径为
/home/sc/backtest/run/,该路径下已包含 CPP 和 Python SDK:/home/sc/backtest/run/ ├── backtestapi/ # C++ SDK └── backtestapi-python/ # Python SDK
3.2.5 验证部署
WSL 系统启动后,回测服务(Superset)会自动运行
在 Windows 本机浏览器中打开以下地址访问 Superset:
http://127.0.0.1:8088
登录账号:
用户名:admin
密码:admin
登录成功后即可查看回测绩效指标
如需运行回测策略,请参考 3.1.3 策略开发/运行环境搭建 节中的 C++ 或 Python 开发包使用方法
注意:由于 WSL2 与 Windows 共享网络端口,在 WSL 中运行的服务可直接通过 Windows 本机的 localhost 或 127.0.0.1 访问。
3.2.6 网络访问限制说明
WSL2 启动的服务默认只能在本机通过本地回环地址(localhost/127.0.0.1)访问,局域网内的其他机器无法直接访问。这是 WSL2 的网络架构特性决定的。
如果需要在其他机器上访问 WSL2 中运行的服务,有以下几种解决方案:
端口转发(推荐):在 Windows 侧配置端口转发,将外部请求转发到 WSL2
# 以管理员身份运行 PowerShell netsh interface portproxy add v4tov4 listenport=8088 connectport=8088 connectaddress=127.0.0.1
修改防火墙规则:在 Windows 防火墙中添加例外,允许指定端口的入站连接
直接使用 Linux 部署:使用 3.1 节的 Linux 部署方案
3.2.7 WSL2 自动休眠问题解决
当使用 exit 命令退出 WSL2 终端且长时间未重新进入时,WSL2 虚拟机会进入休眠状态 (通过 wsl --list --verbose 可见 Stopped 标志),这会导致其中运行的服务 (如 Superset) 中断。为避免此问题,可以通过配置 WSL 的自动休眠设置来保持 WSL2 虚拟机持续运行。
3.2.7.1 配置 .wslconfig 文件
在 Windows 用户目录下创建或编辑 .wslconfig 文件(路径:C:\Users\<用户名>\.wslconfig):
[general]
# 每个 WSL 实例在空闲后保持运行
# 默认值:8000(8秒)
# - -1:永远不要自动关闭实例
# - 0:在所有进程退出后立即关闭
# - 正整数:在指定的空闲时间(毫秒)后关闭
instanceIdleTimeout=-1
[wsl2]
# 在空闲时关闭 WSL2 虚拟机的持续时间。
# 默认值:60000(60秒)
# - -1:永远不要自动关机
# - 0:在所有WSL实例退出后立即关闭
# - 正整数:在指定的空闲时间(毫秒)后关闭
vmIdleTimeout=-1
保存文件后,需要重启 WSL 使配置生效:
# 重启所有 WSL 实例
wsl --shutdown