期货量化策略从 Windows 迁到 Linux 服务器:环境注意点

张开发
2026/6/8 21:46:47 15 分钟阅读

分享文章

期货量化策略从 Windows 迁到 Linux 服务器:环境注意点
前言国内期货量化很多是在 Windows 笔记本上写出来的装 Anaconda、pip install tqsdk、在 IDE 里跑通TqSim。上线时希望放到 Linux 云服务器上 7×24 跑夜盘路径、换行符、进程守护和时区都会和本机不同。天勤 TqSdk 本身跨平台策略里wait_update、get_kline_serial等调用一般不用改变的是运行环境和运维方式。下面按 Python 环境、文件路径、进程守护、网络时区、直连 CTP 等块说明迁移时要注意什么并解释文中出现的 systemd、venv、TqCtp 等名词指什么。一、Python 环境与 tqsdk 版本venv 是 Python 自带的虚拟环境目录用来隔离项目依赖避免和系统里别的项目抢包版本。Linux 上建议python3-mvenv venvsourcevenv/bin/activate pipinstall-rrequirements.txtrequirements.txt 应锁定 tqsdk 版本号与 Windows 开发机一致。Python 大版本如 3.10 与 3.11不一致时个别依赖可能装不上迁移后第一件事用TqSim跑通最小脚本打印quote.datetime是否推进。二、路径不要写死 C 盘Windows 用反斜杠C:\Users\...Linux 用正斜杠/home/...。状态 JSON、日志、配置应使用 Python 的pathlib.Path或相对项目根目录的路径不要硬编码盘符。否则策略在 Linux 上找不到data\state.json这类文件重启后以为空仓又开仓。.env文件放项目根用os.environ读TQ_USER、TQ_MODE等不要把实盘密码写进代码再传到服务器。三、时区与 K 线 datetimeK 线表和 quote 上的datetime是行情业务时间一般由北京时间规则写入。服务器系统时区建议设为Asia/Shanghai或在文档里约定日志时间戳用北京时间避免排查夜盘问题时与交易员本地时间差八小时对不上。四、systemd 与 supervisor让进程在崩溃后拉起systemd 是多数 Linux 发行版自带的初始化与服务管理框架可写一个 unit 文件例如/etc/systemd/system/futures-strategy.service指定工作目录、虚拟环境 Python 路径、环境变量文件并设置Restarton-failure表示异常退出后自动重启。supervisor 是另一款进程管理工具配置写在supervisord.conf里适合一台机跑多个策略进程、每个进程独立日志。共同原则同一期货资金账户同一时刻只应有一个策略进程在跑守护进程配置成单实例避免手误启动两次。五、网络与期货公司限制云服务器出网 IP 可能与家里不同。部分期货公司对程序化交易有 IP 报备要求迁移后要确认柜台是否允许新 IP 登录。防火墙只需放行策略访问行情与交易网关所需端口不要无故关断出站连接。若用TqCtp直连期货公司前置需额外安装tqsdk_zq_otg包并确认该包在 Linux 上受支持见官方说明与 Windows 下 CTP 动态库路径问题不是同一类但都要在目标系统实测登录。六、无图形界面时的注意点服务器通常没有桌面天勤若开了 web 绘图确认不会阻塞主循环。生产环境多数只保留文件日志图形在开发机回放。七、迁移验证步骤建议按顺序Linux 上TqSim或TqKq跑最小循环确认wait_update与datetime正常。跑一夜模拟检查日志轮转与磁盘空间。人为kill进程看 systemd 是否拉起且不会叠两个TqApi。再切TqAccount小仓位实盘。总结从 Windows 迁到 Linux难点通常不在策略公式而在运行环境是否被完整复制依赖版本、路径规则、守护方式、时区和网络边界缺一不可。策略能否稳定跑 7×24关键在于把 venv/requirements 锁死、把状态文件路径和日志落地规范化、用 systemd/supervisor 做单实例保活和失败重启并在切换到目标时区后重新核对 datetime 相关逻辑。很多时候你以为“代码一样就行”但环境差异会让等待与过滤条件表现不同。把这些基础设施提前标准化并在最小可行脚本上完成验证迁移就会从‘能跑’升级为‘能长期稳定跑’从而与后续实盘风控衔接得更紧。FAQ1WSL 算生产环境吗适合开发联调7×24 夜盘建议用独立 Linux 服务器或云主机。2Docker 部署可以吗可以注意一容器一策略、环境变量注入密码、日志挂载到宿主机。3多策略多服务每个策略独立 systemd unit勿同账户双进程。4编码问题源码与日志统一 UTF-8避免 Windows 记事本另存为 GBK 后上传乱码。风险提示以上内容用于部署参考不构成投资建议。

更多文章