如何让QMT在运行Python策略时实现高效调试? | 原生python配置(xtquant)|详细教程
发布时间:25分钟前阅读:7
策略挂在客户端里跑,出错只弹一行提示,改一次代码要重启一次,一天下来改不了几个来回。调试效率低,是很多人做量化半途放弃的真实原因。我的做法是分三层来搭:第一层是日志,第二层是脱离行情的单元测试,第三层是隔离的模拟环境。三层都搭起来,改一个错误的时间能从半天压到十几分钟。
日志这层做四件事:分级,把调试、信息、警告、错误分开;带时间戳和唯一单号;按天切文件;关键路径必打。别用打印把所有变量都吐出来,日志量大了会拖慢回调,反而制造新问题。
单元测试这层最关键。把策略拆成三层:取数层、信号层、下单层。信号层写成纯函数,输入一段历史数据,输出买卖信号,完全不依赖客户端。这样绝大多数逻辑错误可以在本地几秒钟内跑出来,不用连行情、不用重启客户端。下单层单独用模拟账号验证,一次跑通就够。
需要单步调试的时候,用远程调试的方式把调试器附加到运行中的进程,断点尽量打在信号计算的位置,不要打在行情回调里,停在回调里会阻塞数据接收,容易丢包,也会让你误判成逻辑错误。调试期间把下单开关关掉,只跑信号。
还有两个习惯值得养成:一是固定版本,把接口包版本和客户端版本记在项目说明里,出问题先怀疑版本;二是给异常加兜底,网络异常、数据缺失、返回空值各写一条处理分支,别让一个空值把整个策略带崩。
调试期间还有一个做法很省事:把一次实盘的完整输入录下来,包括行情快照和委托回报,出问题后拿这段录制的数据回放,能让问题稳定复现。很多错误只在特定时序下出现,靠等下一次实盘遇到,可能一周都等不到。录制文件按日期命名,攒一批之后,调参前的回归测试也有素材了。
判断调试环境好不好,看一个指标:从发现问题到定位到具体代码行,能不能在十五分钟内完成,而且不需要重启客户端来验证修复。做不到,就先花半天把这三层搭起来。
股票/量化开户欢迎找我!满足条件股票佣金万0.854、etf 可转债佣金万0.5、国债逆回购一折(百万分之一)!期权1.8元一张全包价!量化软件QMT+ptrade免费使用!还有888、999资金靓号等你选!
温馨提示:投资有风险,选择需谨慎。



问一问
从业认证

+微信
分享该文章
