cli.py 是给用户跑回测、扫机会用的。devcli.py 是给开发者调试、清理、打包、跑性能基准用的。入口在项目根目录:
python devcli.py -h # 查看所有命令注意:如果您是用devcli调试UI,那么需要安装nodejs并在前端文件夹下做npm install
命令速查
缩写 | 全称 | 做什么 |
uk | ui_kill | 关闭 UI 端口进程 |
ic | check_import | UI 依赖冒烟检查 |
cgc | clear_global_cache | 清理 userspace/.ntq/ |
csc | clear_strategy_cache | 清理策略 results/ |
dbc | db_checkpoint | DuckDB WAL 合并 |
ssp | sample_stock_pool | 分层抽样 N 只股票 |
pc | pool_clear | 取消样本池 |
cd | check_deps | 依赖风险检测 |
bpe | be_perf_entity | entity_based 性能基准 |
bps | be_perf_slice | slice_based 性能基准 |
bpc | be_perf_clear | 清理基准测试临时文件 |
pu | userspace_package | 打包 init userspace |
ex | data_export_init | 打包演示数据 |
p | pack | 版本发布检查流水线 |
— | ui | 启动开发模式 UI |
— | version | 显示版本号 |
全局参数:--verbose / -v 显示详细日志。
其他可用命令
样本股票池
开发时不想每次跑全市场 5000 只股票,可以用分层抽样只跑一部分:
# 抽样 200 只股票,写入 data.json 的 use_sample_stock_list
python devcli.py ssp 200
# 取消样本池,恢复全市场
python devcli.py pcssp 按"上市状态 × 板块 × 交易所"分层抽样,保证样本有代表性。配合 cli.py s --strategy xxx 就只跑这 200 只,回测速度大幅提升。
性能基准测试
测量回测引擎在不同数据规模下的性能:
# entity_based 模式基准(DuckDB)
python devcli.py bpe
# slice_based 模式基准(DuckDB)
python devcli.py bps
# 用 MySQL 跑基准
python devcli.py bpe --db mysql
# 用 PostgreSQL 跑基准
python devcli.py bps --db pgsql
# 清理基准测试产生的临时文件
python devcli.py bpc基准测试会分三档(25% / 50% / 100% 数据量)跑固定策略,比较不同规模下的性能表现。适合在改了引擎代码之后验证有没有引入性能回退。
依赖检查
检查项目依赖是否有风险——比如有没有 Windows 不兼容的包、有没有声明了但没用的依赖:
python devcli.py cd # 基本检查
python devcli.py cd -v # 详细输出
UI 依赖冒烟检查
检查 UI 启动链路的 import 是否完整,不会因为缺少依赖而崩溃:
python devcli.py ic
版本发布检查
准备发布新版本时跑完整的检查流水线:
# 检查并写入版本号
python devcli.py p -core_v0.3.2
# 只检查不写入
python devcli.py p --version 0.3.2 --check-only
# 跳过部分检查
python devcli.py p --version 0.3.2 --skip-tests --skip-fed-build检查流水线包括:CHANGELOG 同步、模块文档版本一致性、Python 3.9 兼容性、UI 依赖检查、前端构建、pytest 测试、依赖风险检测、emoji 规范检查。
打包 userspace
同步并打包初始化用 userspace:
python devcli.py pu # 同步 + 打包 zip
python devcli.py pu --no-zip # 只同步不打包
打包演示数据
python devcli.py ex把当前数据导出为演示用的 zip 包,用于新用户初始化。
一个完整的案例:开发调试时清理缓存和数据库
你在开发一个新策略,反复跑回测调试代码。跑了几十次之后,硬盘空间被缓存占了不少,DuckDB 的 WAL 文件也变大了。而且有时候跑出错了,pipeline 状态可能卡住。这时候需要一套清理操作。
第一步:清理策略缓存
把所有策略的回测结果清掉,重新开始:
python devcli.py csccsc 是 clear_strategy_cache 的缩写。这会清空每个策略目录下的 results/(包括 simulations/ 和 scan/ 子目录)。
第二步:清理全局缓存
清掉运行时的临时文件、pipeline 租约、进度记录:
python devcli.py cgccgc 是 clear_global_cache 的缩写。清理 userspace/.ntq/ 目录下的所有内容。如果 pipeline 状态异常(比如某次回测中断后一直卡着),这招能解决。
第三步:合并 DuckDB WAL
DuckDB 的写入会先写 WAL 文件,定期合并到主库。手动触发一次合并:
python devcli.py dbcdbc 是 db_checkpoint 的缩写。如果 WAL 文件损坏导致数据库打不开,加 --recover 参数:
python devcli.py dbc --recover这会删除损坏的 .wal 文件后重建连接。注意:可能丢失最后一批未合并的写入。