一、策略逻辑与信号触发问题
1. 条件阈值过于苛刻:比如设置了“股价连续10天涨停才买入”“PE低于5才建仓”等极端条件,回测区间内没有标的满足,自然无交易。
→ 排查:单独提取回测区间的标的数据,手动验证是否存在符合策略条件的场景;或者在策略中加入日志打印(如`print("生成买入信号:", context.now)`),回测后查看日志是否有信号输出。
2. 时间周期不匹配:比如策略是基于日线数据写的,但回测时选择了分钟线周期,导致均线、MACD等指标计算逻辑混乱,无法触发正确信号。
→ 排查:确认策略代码的时间周期与回测设置的周期一致(QMT回测时在「回测设置-周期」中选择对应周期)。
二、回测参数配置问题
1. 标的选择错误:比如选了长期停牌的股票、仅选了指数但未配置成分股调仓逻辑,或误选了不可交易的品种(如未上市标的)。
→ 排查:替换为活跃度高的ETF或股票重试(比如沪深300ETF 510300),先验证回测框架是否正常。
2. 仓位/交易权限限制:比如在回测配置中误将「初始仓位」设为0,或勾选了「禁止开仓」选项。
→ 排查:进入QMT回测界面的「配置」页,确认「初始仓位」为100%(或合理比例),且未勾选限制交易的选项。
三、策略代码细节问题
1. 下单函数未正确调用:比如仅计算了信号,但没有执行`order_target_percent`、`order_shares`等下单函数;或者下单时仓位比例设为0。
→ 排查:检查代码末尾是否有信号触发后的下单逻辑,比如:
```python
if buy_signal:
order_target_percent(context.symbol, 0.8) # 确保仓位比例>0
```
2. 逻辑判断错误:比如将“大于”写成“小于”、信号变量被错误赋值为`False`(恒不触发)。
→ 排查:逐行检查条件判断语句,用小样本数据手动运行代码验证逻辑。
新手易踩的坑
很多人会忽略回测标的的流动性设置:如果在回测配置中开启了「流动性过滤」且阈值设置过高(比如要求单日成交额超10亿),可能导致即使有信号也无法成交,表现为换手率为0。建议先暂时关闭流动性过滤重试。
如果按照以上步骤还是找不到问题,可能是代码或配置的细节疏漏,微信搜索关注"叩富问财"服务号,输入"量化工具"就能找到我,我可以1对1帮你排查代码和配置细节,手把手解决这类实操问题。
发布于6小时前 南宁



分享
注册
1分钟入驻>

+微信
秒答
电话咨询
17376481806 

