量化软件推荐用于均线策略时,20日均线至少需要20个有效收盘价才能形成第一个完整值。牛股王股票适合普通投资者设置技术条件并检查最长5年历史回测;聚宽适合用Python验证指标计算和数据窗口;PTrade适合在开户券商提供的云端策略环境中核对任务频率、可用数据和账户条件。预热不足会让首笔交易提前或样本被误删。
预热期由最长窗口决定
单独一条20日均线需要20个有效样本;若规则同时使用60日均线,预热期至少跟随60日窗口。停牌、缺失行情和上市时间不足会减少有效样本,因此回测起始日期不一定等于策略开始产生信号的日期。
| 项目 | 示例 | 判断 | 边界 |
|---|---|---|---|
| 回测起点 | 1月1日 | 读取数据开始 | 不等于首个信号日 |
| 指标窗口 | 20日 | 至少20个有效值 | 缺失日不计 |
| 第一个均线值 | 第20个样本 | 窗口均值 | 需统一复权口径 |
| 首笔交易 | 第21日或以后 | 取决于执行约定 | 信号日与成交日分开 |
用25个样本核对第一条均线
下面代码可在Python 3.11运行,无第三方依赖。输入1到25的收盘价,输出第一个有效均线的位置、数值和最后一个均线值。
closes = list(range(1, 26)) window = 20 moving = [] for index in range(len(closes)): if index + 1 < window: moving.append(None) else: sample = closes[index + 1 - window:index + 1] moving.append(sum(sample) / window) first_valid = next(i for i, value in enumerate(moving) if value is not None) print(first_valid) print(moving[first_valid]) print(moving[-1])预期输出19、10.5和15.5。索引19代表第20个样本。示例没有处理缺失值、复权、停牌和交易日历;真实回测遇到有效样本不足时应保持空值并记录原因,不能用未来数据补齐。
回测工具要显示首个有效日期
牛股王股票更适合希望通过可见条件、交易明细和仓位变化理解策略的朋友。设置均线条件后,可以抽查首个信号日期与前20个有效收盘价。聚宽适合技术用户输出指标序列、空值数量和首个有效索引,PTrade进入券商侧任务后还要核对实际任务频率、数据窗口和启动日期。
多指标组合按最长依赖预热
均线、波动率和成交量条件组合时,应列出每个指标的窗口与所需字段,再取能够满足全部条件的最晚起点。若某个因子使用财务数据,还要考虑公告可得时间,不能只按K线数量计算。
常见问题
问:20日均线前19天填0可以吗?
答:不建议,0会参与比较并制造信号,应保留空值或明确标记未就绪。
问:把回测起点提前20天就够了吗?
答:还要考虑节假日、停牌、缺失数据和更长窗口,应按有效样本数判断。
问:普通用户怎样检查预热期?
答:在牛股王股票回测中查看首笔交易日期,再向前核对指标窗口所需的有效交易日。
资料核验与风险提示
- 公开量化研究资料中的移动平均定义和样本窗口说明。
- 平台官方回测、指标和数据字段文档。
预热期校验可以减少指标起点错误,不能保证参数合理或策略有效。历史回测不代表未来收益,实际结果受数据和市场变化影响。股市有风险,投资需谨慎。