知识体系 / 实战与验证
从结构到代码:把判据写成状态机
前面所有概念都有一个共同点:它们都能用价格事实判定。这一篇讲的是怎么把它们真正写成代码 —— 不是伪代码,而是可以被回测、被审计的状态机。

六个状态
把交易过程拆成六个状态:S1 摆动点已确认 → S2 流动池已识别 → S3 扫除发生 → S4 位移出现 → S5 缺口形成 → S6 回撤进入缺口。
每个状态都是一个布尔条件,都能单独计算。六个条件同时为真时才允许下单。
这样做的好处:任何一个状态都可以单独回测、单独关闭、单独统计命中率。而这正是「把主观判断变成可验证系统」的关键。
- S1 摆动点:四根 K 线规则
- S2 流动池:等高等低聚类
- S3 扫除:越界 + 收回
- S4 位移:实体占比 + 连续根数
- S5 缺口:三根不重叠 + 最小宽度
- S6 回撤:进入 CE 或 OTE 带
参数与判据要分开
判据是「结构是什么」,参数是「多严格才算」。例如「有缺口」是判据,「缺口至少 0.03% 宽」是参数。
把两者分开的好处:换品种时只需要改参数,不需要重写判据;回测时也只调参数,不会不小心改变了逻辑本身。
常见的错误是把参数焊死在判据里 —— 例如「跌破前低 5 个点才算 CHoCH」。换到另一个品种,这个 5 点可能等于「任何一次噪音」。
先写判据(结构),再标参数(阈值)。混在一起写,代码会因为换品种而全部作废。
状态机比函数链更稳
如果用「一个函数里顺序判断」的写法,很容易出现「后面的条件覆盖前面的条件」,或者「条件之间互相影响」的问题。
状态机的写法是:每个状态有明确的进入条件和退出条件,状态之间的转移是显式的。这样即使某一步判断错误,也能定位到具体是哪一步错了。
工程上的额外好处:状态机天然适合断点续跑 —— 程序崩溃重启后,可以从当前状态继续,而不需要重放整个历史。
- 显式进入 / 退出条件
- 转移可追踪,便于定位问题
- 天然支持断点续跑
先跑通再做对
第一步不是追求准确率,而是让整条链路跑起来:能检测到摆动点、能识别缺口、能打印出「今天触发了几个信号」。
第二步是可视化校验:把检测到的结构和缺口画在图上,用眼睛对照。这一步能发现 90% 的逻辑错误 —— 比如缺口检测把相邻 K 线也算进去了。
第三步才是回测。跳过前两步直接回测,通常得到的是「代码 bug 的统计特征」,不是策略表现。
- ① 跑通链路
- ② 画图肉眼校验
- ③ 再谈回测
本篇要点
- 六个状态,各自可判定
- 判据与参数分离
- 状态机优于函数链
- 先跑通再校验,最后回测
内容说明:本系列为 ICT / SMC 概念的独立中文整理,概念源自 Michael J. Huddleston 的公开教学体系
(Inner Circle Trader)及社区文献,非翻译转载。文中的判定口径参考了本项目自建的验证知识库,
所有观点仅用于技术教育,不构成任何交易建议,也不承诺任何收益。
保证金交易存在本金全损风险,请自行评估。