聚宽策略常见报错与排查:数据不足、无成交、下单失败怎么处理
摘要:聚宽写策略时最常见的几类报错与“看起来没报错但就是不对”的情况,按类型给出定位思路与改法。
前置条件
在聚宽写过至少一个能跑回测的策略,遇到过报错或结果明显不对的情况。
手把手操作
1
先把报错分成三类
环境/语法类(缺库、缩进、变量未定义):报错信息里通常带文件与行号,直接定位。
数据类(取不到数据、数据为空):回测日志里会出现空值或异常,常见于停牌、次新股、指数权重成分外标的。
逻辑类(不报错但没交易):条件永远不成立、下单函数用错、资金不足被拒。
小贴士:遇到报错先看“第一个”报错,后面的多半是连带错误。
2
“数据不足/取不到数据”怎么办
核对标的代码格式与后缀,确认历史区间足够长(策略预热期要留够)。
停牌、退市、次新股在部分时间段没有行情,取不到属正常,需要做空值保护。
用到财务或因子数据时,注意财报披露延迟,避免用到未来数据。
小贴士:做防御性写法:取不到数据就跳过当天,而不是让整个策略崩掉。
3
为什么回测没有任何成交
检查交易条件是否真的会触发(把条件打印出来看几次)。
检查资金:账户资金不足、单笔金额过大、手续费扣完后不足都会导致下单失败。
检查下单函数:数量单位(股/手)、是否用了目标持仓类函数、是否下成了“不可交易”的标的。
小贴士:回测里看到“已下单但未成交”,通常是没有对手盘或价格越界(涨跌停)。
4
下单失败与成交假设
回测的成交是模拟的,遇到涨跌停、停牌、成交量不足,模拟成交可能比现实乐观。
把滑点与手续费设成接近真实的值,回测结果才有参考意义。
小贴士:实盘前一定用模拟盘或小额资金验证一遍,别直接拿回测结果上大资金。
新手容易踩的坑
- 使用未来函数:回测里用了当时拿不到的数据,结果虚高。
- 混用不同运行频率:同时用按天与按分钟的处理函数,容易重复触发。
- 忽略复权:用不复权价格算信号,除权日会凭空出现“暴跌”。
- 条件里写死日期:换时间段回测就失效。
相关问答
报“数据不足”优先检查什么?
先看标的在该区间是否有行情(停牌、次新股)、代码后缀是否正确、策略预热期是否够长。
为什么回测显示下单了却没成交?
多半是价格越界(涨/跌停)、标的停牌,或模拟成交量不足;回测的成交假设比实盘乐观是常态。
聚宽能用第三方库吗?
支持常用的 Python 库,但环境有限制;不确定的库先在策略里试探性导入,别等回测跑到一半才发现。
本文用到的链接
- 灵犀Quant 网站:首页 · www.lingxw.com · 登录 / 个人中心
- 一点通(QMT 自动下单脚本)下载:下载中心(登录后免费下载)
- 使用手册:manual.html · 产品定价:pricing.html · 帮助中心:help-center.html