缠论 K 线合并顺序错了会怎样(高频错误)
包含关系必须从左到右逐根处理,顺序一错全盘皆错。本文用一个最小序列演示顺序错误如何造成分型偏移、笔端点挪位、线段与中枢改变,并给出正确的合并流程清单与中途方向切换的处理办法。
一句话结论
包含关系必须按时间从左到右逐根处理:每读入一根新 K 线就与已处理序列的最后一根比较,有包含才合并,合并结果作为"新 K 线"写回序列并继续与下一根比较;任何"先整体找高低点再统一合并"的做法,都会把分型的位置挪走,进而让笔、线段、中枢整条结构链一起错位。
概念与原理
为什么顺序不可交换
包含关系是相邻两根 K 线之间的关系,它的判定对象永远是"当前已处理序列的最后一根"和"刚读入的这一根"。合并会改变这一根的端点数值,而改变后的数值又决定它与下一根是否构成包含。也就是说,处理第 n 根时用到的数值,取决于前 n-1 根的处理结果,这是一个严格依赖时间顺序的递推过程。若先把整段行情的高低点全部列出来再统一合并,等于用未来的信息回头修改过去的判定,合并的分组方式随之改变——顺序一乱,结果不可复现。
判断包含与确定方向
两根 K 线 A、B,若 A 的高点不低于 B、低点不高于 B(A 包住 B),或 B 的高点不低于 A、低点不高于 A(B 包住 A),即存在包含关系,需要合并。合并方向由被包含 K 线之前的两根 K 线决定:设这两根为 P1、P2,若 P1 的高点低于 P2 的高点(序列走高),方向为向上,合并后取两者高点中的较高者、低点中的较高者;反之方向为向下,合并后取高点中的较低者、低点中的较低者。方向判断只看这两根,不看更早的走势,也不看整体趋势。
合并后的 K 线是"新 K 线"
合并结果不是临时变量,而是一根带方向属性的新 K 线:它替换掉参与合并的两根,写回已处理序列,位置保持在原处;它的方向属性记下来,供后续判断参考。当它与下一个新读入的 K 线再次构成包含时,仍按上述规则处理,方向取当前最近两根未被合并的原 K 线关系。一根合并 K 线可能在后续被继续合并多次,直到序列里不再有包含关系为止。
顺序错误会连锁到什么程度
第一层是分型数量与位置变化:合并分组不同,顶底分型出现的次数会增减,同一个顶分型的中间 K 线可能从第 5 根挪到第 7 根。第二层是笔的端点整体挪位:分型位置错了,笔的起点终点跟着错,一笔的成立条件(老笔口径下两个分型含自身共至少 5 根 K 线、新笔口径下分型间至少隔一根 K 线且满足其他条件)也会被误判为成立或不成立。第三层是线段与中枢:笔错了,特征序列与线段端点必错,构成中枢的三段次级别走势取错,中枢区间整体平移。同一段行情在两种软件里画出不同的笔和线段,多数根源就在合并顺序,而不是谁"看得更准"。
判定步骤
1. 建立空序列。把第一根 K 线直接放入已处理序列,不判断包含。
2. 读入下一根。取原始 K 线序列中时间上的下一根,作为待处理 K 线 N。
3. 与序列末根比较。取已处理序列的最后一根 L,判断 L 与 N 是否包含:不包含则把 N 直接追加到序列尾部,回到第 2 步;包含则进入第 4 步。
4. 确定合并方向。在原始 K 线序列中找到 N 之前的两根未被合并的 K 线 P1、P2:P1 高点低于 P2 高点为向上,取高高点(高点取高、低点取高);否则为向下,取低低点(高点取低、低点取低)。只有一根前置 K 线时无法定方向,跳过本次合并,把 N 追加到序列末尾并回到第 2 步。
5. 合并并写回。用上一步的取法生成一根新 K 线,替换序列的最后一根 L,位置不动;把方向属性记录在这根新 K 线上。
6. 用合并结果继续比较。取序列末根(即刚生成的新 K 线)与仍在手上的 N 重新判断包含:仍包含则重复第 4、5 步,直到不包含为止,再把 N 追加到序列尾部。
7. 循环至耗尽。对每一根原始 K 线重复第 2 至 6 步,直到全部处理完;处理完毕的序列长度一定不大于原始 K 线根数,长度相等说明整段行情没有任何包含关系。
8. 交付下游。只在合并完成的序列上找顶底分型、再往上推笔与线段;中途任何"手工微调"都要回到第 2 步重新走一遍流程。
方向在序列中途变化怎么切换
方向不是全程固定的,而是每次出现包含时重新取一次。典型切换场景:序列原为向上,新读入的 K 线连续走高,合并依旧取高高点;随后出现一根低点明显回落的 K 线并发生包含,此时以其前两根原 K 线比较,P1 高点高于 P2 高点,方向切为向下,本次合并改取低低点。切换只对当次合并生效,不需要回改前面已经合并过的元素;已经写回序列的合并 K 线保持不变,除非新的包含关系把它再次纳入合并。
常见误区
第一,先整体找高低点再合并。这是最高频的错误,也是最典型的顺序错误,写脚本时体现为把所有 K 线读进数组后统一批处理,人工划分时体现为先在图上圈出大顶大底再补中间,两者都会让分组结果偏离时间顺序。
第二,包含只处理一轮。合并出的新 K 线可能与下一根仍然包含,需要循环处理;只合并一次就往下走,会留下残余包含关系,分型随之失真。
第三,方向取错。用被包含 K 线自身与前一根的高低关系定方向,或用整段走势的大方向定方向,都会取反极值,合并出的 K 线区间整体偏移。
第四,合并后不写回序列。把合并结果留在临时变量里,下一轮又从原始 K 线取末根比较,等价于合并没生效,序列里出现的包含关系会反复触发不同的合并结果。
第五,忽略前置 K 线不足的情况。序列开头只有一根 K 线时无法定方向,此时应把新 K 线直接追加,而不是凭猜测合并。
实战注意
- 处理顺序固定为"逐根读入—判包含—定方向—合并写回—继续比较",这五步做成固定流程,人工与程序的结果才可能一致。
- 包含合并只改 K 线的端点数值,不改变它在序列中的时间位置;分型、笔、线段的所有判定都必须建立在这条已合并序列之上。
- 合并 K 线的方向属性会层层复用,建议在图上用不同颜色标出合并过的 K 线,出现结构异常时优先回看这一段。
- 用两套数据源核对结构差异时,先对比合并后的 K 线序列,再对比笔;如果序列就已经不同,讨论笔和线段没有意义。
- 合并结果具有可复现性:同样的原始 K 线与同样的顺序,必然得到同一条合并序列,这也是把划分写成程序的前提。
小结
K 线合并的顺序问题,本质是"每一步判定只能使用它之前已经产生的结果"。正确做法是逐根读入、与已处理序列最后一根比较、有包含则先定方向再合并、合并结果写回序列并继续比较,直到无包含为止。顺序一错,错的不只是一两根 K 线,而是分型、笔、线段、中枢整条下游结构;把顺序固定下来,是后面所有缠论结构讨论的共同前提。