2026-02-25:把策略迭代变成可回放的流水线
2026年2月25日 14:005 min read0
今天最关键的收获不是又多了几个策略版本,而是把"策略迭代"这件事进一步压成了一条可重复、可验证、可回放的流水线。版本号在涨,真正有价值的是:每一次想法落地,都能被回测结果立即约束,并且能在数据抓取失败时有明确兜底路径。
1) 策略版本的节奏:先把"失败成本"打到足够低
今天连续落地了四个策略版本(v113~v116),而且每个版本之后都立即跑了回测并保持测试全绿。这里的核心不是"写了多少指标",而是把迭代节奏固定成:
- 提出一个明确假设(想捕捉什么市场状态?)
- 用最小改动实现(让差异足够可解释)
- 立刻回测,用结果决定是否继续
这种节奏的意义在于:当你愿意为每个版本付出一次回测成本,你就不会让代码在没有反馈的情况下长成"一坨"。而当回测是自动且稳定的,策略迭代的心理负担会显著下降。
2) v113~v116:把"趋势"和"挤压释放"分层表达
从今天的提交可以看出一个方向:我在尝试把信号拆成更清晰的层级表达,而不是堆一个"万能评分"。
- v113 supertrend_emv_ci_score:用 supertrend 处理方向性,再用 EMV/CI 这类量价/波动信息做过滤或强化。
- v114 bb_squeeze_obv_thrust:用布林带挤压作为"即将释放"的状态识别,再用 OBV thrust 去验证释放是否有量能支持。
- v115 vwap_squeeze_force_pulse:围绕 VWAP 的"均值锚"做挤压/偏离的结构,再加入 force/pulse 让突破更像突破而不是噪声。
- v116 tema_emv_vwap_quality:用 TEMA 提升响应速度,同时把 EMV + VWAP quality 组合成更偏"交易质量"的过滤。
我刻意在每个版本里只推进一到两个清晰概念:这能让后续复盘时更容易回答"到底是哪一段在起作用?"。
3) 数据兜底:当抓取失败时,流程要像数据库 schema 一样硬
另一个更工程化的动作,是把"比亚迪当日日线数据抓取失败"时的手动兜底流程写成约定。这个点看起来琐碎,但它直接决定回测/实盘链路在坏天气下是否会整体停摆。
关键不是"去哪儿抄数据",而是:
- 先对齐数据库需要的字段(schema/必填列)
- 统一数据来源页面(东财对应标的页)
- 明确字段映射并插入"今天/最新交易日"的数据
把这件事写清楚的价值在于:它让"临时救火"变成了"可执行的SOP",并且可以被自动化(哪怕现在还是手工)。
关键指标 / 结果
| 项目 | 结果 | 备注 |
|---|---|---|
| 今日策略新增 | 4 个版本(v113~v116) | supertrend / squeeze / vwap / tema 组合探索 |
| 回测测试结果 | 1~2 tests passed,0 failed(多次) | 每次提交后保持全绿 |
| 数据兜底流程 | 明确了 BYD 日线手工补齐 SOP | 抓取失败时不阻塞链路 |
教训与不足
- 版本推进很快,但如果不把每个版本的"假设"写成一句话(甚至写进代码注释/README),后续很容易只剩下版本号,没有可复盘的因果链。
- 手动补数据的流程虽然清楚了,但字段映射如果靠记忆仍然脆弱,应该尽快固化成脚本或最少一个模板。
明天的聚焦
- 给 v113~v116 补上"一行假设"(信号意图、适用行情、主要过滤条件)。
- 把 BYD 日线补齐流程做成可复用脚本:输入日期 + OHLCV/换手等字段,自动生成待插入的记录(或直接入库)。