HoppyQuant
EN

第 2 课

把九拍计数变成明确规则

明确比较对象、计数状态、缺失数据和确认时点,把图表提示变成可以交给程序执行的规则。

五段研究路线已经摊在桌上。

蛙兄觉得,第一步应该很好走。

他打开 AI,输入了一句话:

请帮我从股票数据里找出所有下行九拍。

AI 没有马上开工,而是追问:

你希望采用哪一种九拍定义?

蛙兄愣了一下。

“九拍不就是从 1 数到 9 吗?这还需要先开会?”

蛙博士凑过来看了一眼。

“AI 不是在故意拖时间。你只告诉它目的地叫‘九拍’,却没有告诉它走哪条路。它当然可以自己猜一条,只是最后数出来的东西,未必是我们想研究的东西。”

不同股票软件可能都会在 K 线上显示从 1 到 9 的数字,但背后的实现细节并不一定完全一样。

在这门课里,我们把接下来固定的这套教学规则称为“九拍计数”。

我们不准备在这里举办一场“数字计数门派考古大会”。

这一章只做一件事:看懂本课程采用的简化九拍。

同样叫九拍,也可能采用不同规则,所以要先把定义说清楚。
图 1|同一个名称可能对应不同定义,研究前先锁定规则。

先用半分钟看懂下行九拍

蛙博士在桌上摆了几张 K 线卡片。

“我们平时判断今天涨没涨,通常会拿今天和昨天比较。”

“这不是很合理吗?”蛙兄问。

“很合理。但九拍看的不是这个。”

课程版九拍会让当前 K 线往前多看几步,与第 4 根更早的有效 K 线比较。

第 5 根与第 1 根比较
第 6 根与第 2 根比较
第 7 根与第 3 根比较
……

最开始的 4 根 K 线前面没有足够历史,因此还不能得到数字。

从第 5 根开始:

  • 当前收盘价低于第 4 根更早 K 线的收盘价,满足下跌条件;
  • 这个条件连续出现,数字就从 1 往后数;
  • 连续数到 9,就形成一次完整的下行九拍。
当前 K 线要与第 4 根更早有效 K 线比较。
图 2|当前有效 K 线与第 4 根更早有效 K 线比较。

如果你只想继续完成后面的研究,记住上面三句话已经够用了。

它不是“连续九天每天都跌”,而是:

连续 9 根有效 K 线的收盘价,分别低于各自第 4 根更早有效 K 线的收盘价。

今天上涨,也可能满足下跌条件

蛙兄拿出一只虚拟股票:

第 4 根更早 K 线收盘:10.2
昨天收盘:              9.6
今天收盘:              9.8

今天从 9.6 涨到了 9.8,当然是上涨的一天。

但九拍比较的是今天和第 4 根更早 K 线:

9.8 < 10.2

所以,今天仍然满足下行九拍的计数条件。

“它今天明明涨了,怎么还能数在下行九拍里?”蛙兄问。

“因为这里说的不是‘今天比昨天跌’,而是‘今天仍然低于四步以前’。”

今天比昨天上涨,仍然可能满足九拍的下跌条件。
图 3|当日上涨不妨碍满足下行计数条件。

这就是最容易误解的地方。

如果把下行九拍理解成“连续九天每天都跌”,后面的研究从第一步就会数错。

数字 9 出现以后,什么时候才能行动?

核心计数已经说清楚了,蛙兄马上问:

“数字 9 出现的当天,我们就按当天收盘价买入,对吧?”

蛙博士反问:

“你是什么时候知道它是数字 9 的?”

九拍是否成立,要使用当天最终的收盘价。

收盘以前,价格还在变化,数字 9 也没有正式确认。

所以,正确的时间顺序只能是:

数字 9 当日收盘
→ 使用最终收盘价确认九拍完成
→ 下一根有效 K 线开盘
→ 最早可以采取行动

如果一边使用当天收盘价确认信号,一边又假装自己能提前按同一个收盘价买入,就相当于偷偷借了一台时间机器。

回测里的时间机器通常很好用。

可惜现实里没有卖。

数字 9 要等当日收盘后确认,最早只能在下一根有效 K 线开盘行动。
图 4|数字 9 收盘确认,最早下一根有效 K 线开盘行动。
本章重点

信号使用了哪一刻才知道的数据,就只能在那一刻以后采取行动。程序计算得再快,也不能把未来信息送回过去。

研究以前,先把尺子放在桌上

现在,我们已经能够提出一条比较清楚的猜想:

某只股票完成下行九拍以后,接下来可能更容易反弹。

但“接下来”究竟是三天、十天,还是半年?

如果先看遍所有结果,再挑一个最好看的时间,就很容易把运气挑成答案。

因此,在真正计算收益以前,我们还会预先固定两件事。

第一,把数据分成两段:

  • 2021-01-04 至 2022-12-30:规则研究期;
  • 2023-01-03 至 2023-12-29:最终留出期。

后一段先装进信封。完整买卖规则冻结以前,不查看其中的价格方向、九拍信号和收益结果。

第二,摆好四把观察尺:

  • 九拍确认后,以下一根有效 K 线开盘作为观察起点;
  • 把进入当天算作第 1 根,再观察第 3、5、10、20 根有效 K 线收盘时,价格表现如何。

这次先把十日定为主要观察窗口,其他三个窗口用来看看前后的表现。这里的“十日”指十根有效日 K 线,不是日历上的十天。先约好,再看结果。

这些只是帮助我们观察“反弹可能来得早、来得晚,还是根本不稳定”的时间窗口,并不是已经确定的卖出点。

先固定研究期、留出期和观察窗口,再开始查看收益。
图 5|先固定研究期、留出期和观察窗口。

到这里,你已经可以继续了

如果你不想钻进九拍的技术细节,可以跳过下面的拓展,直接阅读“下一步,让 AI 真正把数字找出来”。

你只需要带走四句话:

  1. 课程版九拍是为本次研究固定的教学规则,不代表股票软件里的任何现成指标。
  2. 当前收盘价要与第 4 根更早有效 K 线的收盘价比较。
  3. 连续 9 根都满足下跌条件,才形成一次完整下行九拍。
  4. 数字 9 要等当日收盘后确认,最早只能在下一根有效 K 线开盘行动。

下一章会把完整规则直接交给 AI。即使你跳过下面的拓展,也不影响继续学习。


拓展阅读:程序还需要知道哪些细节?

可跳过

下面解释计数中断、完成锁定和数据缺口。它们是程序准确执行时需要的细节,但不是进入下一章的阅读门槛。

同方向、反方向和相等

当前收盘价与第 4 根更早有效 K 线相比,会遇到三种情况:

  • 严格小于:满足下跌条件;
  • 严格大于:满足上涨条件;
  • 完全相等:没有方向。

如果新 K 线和正在形成的序列方向相同,数字继续增加。

如果突然变成相反方向,原来的未完成序列结束,当天直接成为新方向的数字 1。

如果两边收盘价完全相等,原来的未完成序列也会结束,但当天既不是上涨 1,也不是下跌 1。程序重新等待下一次出现方向。

同方向、反方向与完全相等,会让计数走向三个不同结果。
图 6|同向、反向、相等三种结果决定计数走向。

数到 9 以后要锁定

完整九拍数到 9 就结束,不会继续显示 10、11、12。

如果后面继续满足同一个方向,程序保持锁定,也不会马上从 1 开启另一轮同方向九拍。

原方向至少被打断一次以后,才有机会开始新的序列:

  • 遇到相等,解除锁定并重新等待;
  • 遇到相反方向,解除锁定,当天直接成为新方向数字 1。

这样可以避免把同一段持续行情,硬切成许多互相重叠的九拍。

九拍数到 9 后进入锁定,不继续显示 10 和 11。
图 7|数到 9 后锁定,不继续计 10 和 11。

没有 K 线时,不补一根假的

课程里的“第几根 K 线”,指的是每只股票自己的有效 K 线顺序。

如果某个市场交易日没有这只股票的日 K:

  • 当天不参与计数;
  • 不创建占位 K 线;
  • 不会只因为缺少这一天,就主动中断已经形成的序列;
  • 恢复数据以后,继续与自己的第 4 根更早有效 K 线比较。

偶尔缺一天和长时间消失并不一样。

为了避免严重缺失的数据干扰研究,我们预先约定:单次连续缺口严格超过 15 个市场交易日时,在研究开始前排除整只股票。

刚好 15 日不触发,16 日才触发。

15 并没有神奇力量,它只是一条提前固定的课程边界。

偶尔缺少日 K 时跳过空位,连续缺口超过 15 日则排除整只股票。
图 8|缺失 K 线的跳过与整只股票排除规则。

下一步,让 AI 真正把数字找出来

蛙兄重新打开 AI。

这一次,他没有马上发送“帮我找九拍”。

因为下一章,我们会开启一段新的对话,把不依赖聊天记忆的完整规则交给 AI,再让它分阶段完成:

检查教学数据
→ 验证九拍计数方法
→ 在历史 K 线中找出完整信号
→ 抽样画图,确认没有数错
→ 再与普通日期比较

你不需要背下完整规则,也不需要手写状态机。

真正需要理解的是:一句市场说法只有先变成明确规则,才有资格交给数据检查。

带走一句话

下行九拍不是连续九天每天都跌,而是连续 9 根有效 K 线分别低于各自第 4 根更早有效 K 线;数字 9 要等当日收盘后才能确认,最早只能在下一根有效 K 线开盘行动。

课后讨论

留下你的问题、理解或不同意见,也看看其他学习者怎么想。