跳转至

线段:划分与缺口处理

适用范围:本文描述 fqchan04 内核的线段划分实现——「高低点完全分类」路线,不使用特征序列判别。fqchan06 的正统特征序列算法见线段:特征序列划分(2026 年起可通过参数在 fqchan04 公式中调用)。

线段是缠论结构体系的中间层:《K线预处理:包含关系与分型》给出分型,《笔:成笔规则与模式参数》给出最小趋势单元,本文把若干笔组合成一段有方向的走势。线段往上构成中枢与走势类型(《中枢》),往下以笔为原料。

线段的定义与意义

一根线段由至少三笔组成,但不是任意三笔都行,笔与笔之间必须有「节奏」。想象爬山:上山路上虽有下坡路段,但整体趋势向上,最终到达比起点更高的地方,这就是一根向上线段;下山镜像相反,就是向下线段。

落到可判定的层面,「节奏」意味着:

  1. 方向一致:线段内部,每个与线段同向的笔都创出新高(或新低),每个反向笔都不破坏整体走势。
  2. 顶底交替:线段的两个端点,一个是这段走势的极值高点,一个是极值低点,中间由若干笔连接。
  3. 最少三笔:一笔不成段,两笔也不成段,三笔是起点。

线段的意义在于它是趋势的骨架:一根线段向上,意味着多方力量占优;一根线段向下,说明空方正在发力。更实际的是,线段的端点是中枢与走势类型的构造输入(《中枢》),线段划错,中枢跟着错,买卖点全错。所以线段识别的本质只有一句话:寻找节奏的破坏——找到向上节奏在哪里被向下力量真正打断,线段的终点就在哪里。

fqchan04 的路线:高低点完全分类

缠师原文用「特征序列」定义线段的划分,并按转折处有无缺口分成两种情况。fqchan04 没有采用特征序列的方法——当你深入研究、想用程序语言严格定义时,会发现特征序列的处理方法本身也不是没有问题(这是作者大量实践后的结论)。

fqchan04 的替代方案是高低点判断大法:对转折处(尤其是缺口处)的各种情形做完全分类,逐一给出划分规则。划分结果与原文会略有差异,但不一定就更差;fqchan06 则严格按特征序列定义来,有时候「丑」反而是正确的(见常见误区)。

缺口情形的完全分类

缺口是线段之间最微妙的场景:特征序列确实发生了方向转换,但反向力量还没有用真实成交回补这段「犹豫」,此时若直接分段,很容易把中继当成转折。下面四张图完整展示了 fqchan04 完全分类想要达到的效果。结构统一为:A–D 是已成立的向上线段,D 之后的回落与缺口是待判定的部分。

缺口分类一:I 创新低,D–I 向下段确认

分类一:D 点之后向下,走到 G 时还不能确认 D–G 成段——缺口未回补确认。直到 I 创出新低,向下节奏自身得到确认,D–I 才成为一根向下线段。

缺口分类二:K 点确认 D–G,但 G–J 未确认

分类二:D 点后向下,到 G 同样不能确认;到 K 时,D–G 可以确认为一段,但 G–J 还不能——J 之后的走势仍在等待自己的确认证据。注意同一根走势里,「确认」是逐段滚动的,不是一次到位。

缺口分类二(2):J 突破 D 创新高,A–J 为一个线段

分类二(2):如果 J 突破 D 创出新高,那么缺口被证明是中继,A–D 的线段延伸到 J,A–J 为一根线段——反向走势突破前极值、原线段延续的典型形态。

缺口分类三:I 未创新低、K 未创新高,I–K 与 G–K 成段

分类三:D 后回落中 I 未创新低,随后的反弹 K 也未创新高,折返结构成立:I–K 确认为段,G–K 确认为段。

这些图没有穷尽全部情况,但万变不离其宗:缺口未封闭时只有两种结局——反向走势突破前极值,原线段延续;反向走势未突破且自身节奏破坏,折返成两段。 缺口,是线段之间的犹豫和试探,只有真正突破,才确认新的趋势。

第一个线段:三笔结构法

分段有个冷启动问题:序列的开头没有「前段」可参照。

fqchan04 早期把第一笔直接当作第一个线段。2025 年 1 月的优化改为:找到第一个「上下上」或「下上下」结构时,才确认第一个线段,第一个线段是向上段还是向下段,取决于哪个方向先成立。第一个线段成立之前的两笔,在线段划分时忽略。

第一个线段的划分:不在起笔处开始

上例中,第一个线段并不出现在起笔的位置——起笔后的前两笔被忽略,直到第一个三笔结构成立,线段序列才正式启动。

fqchan06 的特征序列版本对同一问题给出了另一种表述(观察哪个方向先出现单调特征序列),两种表述殊途同归:第一个线段的方向由市场自己走出来,而不是由序列的第一笔决定。详见线段:特征序列划分。

线段信号值

划分结果在插件里以信号序列输出。线段的基础信号与笔一致:-1 是段底,1 是段顶,其余位置为 0,例如:

000-1000000000000000000001000000000000000-1

fqchan04 在 2025 年 2 月的升级中为线段引入了中间信号 0.5 / -0.5,表示「线段已成立但尚未走完」:

  • 向上线段从 -1(段底)出发,第一次满足线段条件时输出 0.5——此时线段已经成立,只是还不是终点;
  • 0.5 之后每延伸出一个新高,信号值仍是 0.5;
  • 直到线段真正结束,终点输出 1;
  • 向下线段镜像:-0.5 表示下跌段成立,-1 是最终段底。

线段信号值:-1、0.5、1 的位置与含义

中间信号的价值在于把「成立」与「结束」两个时刻分开了:在 0.5 的位置,你已经知道一段线段行情在运行中,不必等到终点才反应。回测与实盘信号都可以利用这一点提前介入或过滤。

常见误区与演进修正

高频误区

误区一:把缺口当转折已确认。 分类一图里的 G 点是最典型的陷阱——转折已经出现,但缺口未回补,此时分段为时过早。必须等 I 创新低(或等反向走势自行破坏)才能落笔。

误区二:一笔成段。 一根很大的反向笔容易被误判为一段。2025 年 7 月的线段划分变更专门规避此类情况,代价是线段结束点有时不在最高点——但换来了结构上的合理。下图是变更前的错误:后面的中枢居然比前面的中枢还高,结构明显不合理。

变更前:中枢倒挂的不合理划分

变更后:

变更后:规避一笔成段,结构合理

误区三:以视觉美丑评判划分。 fqchan04 的视觉效果通常更舒服,但算法的标准是定义与规则,不是好看。fqchan06 按特征序列定义划分,「古怪」的情况确实不少,有时候丑反而是正确的——理解了两条路线的判定逻辑,这些「别扭」大多能找到解释。

误区四:第一个线段从第一笔开始。 见上一节,第一个线段等第一个三笔结构,起笔前的两笔忽略。

线段划分错误的一个修正实例

2025 年 11 月的一次更新修正了线段划分上的错误。错误划分(图一)与正确划分(图二)对比如下:

错误划分

正确划分

演进脉络

时间 事件 要点
2025-01-20 第一个线段划分优化 第一个上下上/下上下结构成立才成段,此前两笔忽略
2025-02-01 线段信号优化 引入 0.5/-0.5 中间信号,段的成立与结束分离
2025-07-29 线段划分变更 规避一笔成段,修复中枢倒挂类结构错误
2025-08-13 第二种情况划分优化 有缺口时放弃特征序列判别,改用高低点完全分类
2025-11-08 修正划分错误 对照图修正一处分段 bug
2026-01-05 特征序列算法落地 fqchan06 实现正统特征序列分段,见专属文档
2026-01-12 公式改进 fqchan06 特征序列段通过 OPTS 参数接入 fqchan04 公式

用法

公式端(通达信)

线段信号由 3 号函数输出,画线与中枢辅助线的套路和笔完全一致:

DUAN:=TDXDLL6(3,BI,H,L);
NOTEXT_DUANU:DRAWLINE(DUAN=-1,L,DUAN=+1,H,0), COLORFF8000;
NOTEXT_DUAND:DRAWLINE(DUAN=+1,H,DUAN=-1,L,0), COLORFF8000;
DUANZG:=TDXDLL4(5,DUAN,H,L);      { 段中枢高 }
DUANZD:=TDXDLL4(7,DUAN,H,L);      { 段中枢低 }
DUANSE:=TDXDLL4(9,DUAN,H,L);      { 段中枢开始/结束 }

要把段的划分切换到 fqchan06 的特征序列算法,只需给段函数追加 OPTS 参数——具体见线段:特征序列划分的「在 fqchan04 公式中启用」一节。另外,公式体系里预留了线段控制参数 STRETCHOPT(与笔、走势控制参数并列传入),当前版本未启用,任意传值即可。

Python 端(fqchan04 wheel)

Python 端的分段函数以笔信号为输入,典型链路:

import fqchan04

length = len(high_list)
bi = fqchan04.fq_recognise_bi(length, high_list, low_list)           # 《笔》:笔
duan = fqchan04.fq_recognise_duan(length, bi, high_list, low_list)   # 本文:段
pivots = fqchan04.fq_recognise_pivots(
    length, duan, bi, high_list, low_list)                           # 《中枢》:中枢

fq_recognise_duan(length, bi, high, low) 返回与 K 线等长的段信号序列。注意两点:一是输入的笔信号可换成你自己生成的笔(只要求 -1/1/0 顶点信号格式),二是返回值里除 -1/1 外还会出现 0.5/-0.5 的成立信号——筛段顶段底时用 duan[x] == 1 精确匹配,不要用非零判断:

# 找最近一个已确认的线段顶
for x in range(len(duan) - 1, -1, -1):
    if duan[x] == 1:
        segment_top = (x, high_list[x])
        break

段信号、中枢辅助序列(DUANZG/DUANZD/DUANSE)的完整定义见番茄缠论插件信号值说明,函数接口详见 Python函数说明手册。

知识来源

  • 《fqchan04: 线段划分的变更》(2025-07-29)
  • 《fqchan04缠论插件更新:线段第二种情况(缺口)的划分优化》(2025-08-13)
  • 《发布fqchan04-2025.1.20,优化线段,第一个线段划分》(2025-01-20)
  • 《fqchan04-2025.2.1:优化线段信号》(2025-02-01)
  • 《Fqchan04更新日志,今天修正了一个线段划分上的错误》(2025-11-08)
  • 《S0001选股公式更新,增加了参数控制和支持金字塔和KT使用》(2024-08-05)
  • fqchan04 算法说明文档(有缺口线段分类图集原始出处)