线段的画线规则:起始检查、特征序列与结束点怎么确认
本页说明 Struct Guide 如何从笔序列计算线段:什么样的输入通过起始检查、结束点怎样取得确认依据,以及虚线和实线各表示什么状态。以下是本工具的实现规则,用来核对这三类问题:
“明明已经有三笔了,为什么还没有线段?”
“特征序列、缺口,这些词具体对应哪些笔、哪些价格?”
“结束点在前面,为什么实线到后面才出现?”
下文按起始检查、特征序列与两条确认路径、确认与显示的顺序展开。线段的输入来自笔;笔怎样连接、怎样确认,见笔的画线规则。
一、本工具怎样从笔序列计算线段?
Struct Guide 使用当前笔序列计算线段,序列末端可能包含待确认笔。候选线段至少覆盖三笔,方向名称取自第一笔:第一笔向上称为向上线段,第一笔向下称为向下线段;方向名称只标识连线方向。
工具先处理 K 线包含关系、识别分型并连接笔,再把笔序列作为线段计算的输入。这是计算依赖关系,不能把任意三笔连线直接当作一条线段;还须检查共同区间、端点与确认条件。
二、起始检查:三笔还要有共同区间
一笔的区间由两个端点价格确定:较大值为区间高点,较小值为区间低点。区间统一按 [最低价, 最高价] 书写。
工具取前三笔区间高点的最小值、低点的最大值,检查前者是否严格大于后者。只有交集具有非零宽度,才通过这项起始检查。
| 输入笔 | 端点价格 | 区间 |
|---|---|---|
| 第1笔 | 10 → 18 | [10, 18] |
| 第2笔 | 18 → 12 | [12, 18] |
| 第3笔 | 12 → 20 | [12, 20] |
高点最小值为18,低点最大值为12,18 > 12;前三笔共同覆盖 [12, 18]。在只有这三笔的例子里,工具以虚线连接起点10与第三笔终点20,等待后续确认依据。
只在一个价格上相触,不通过。 例如连续端点为 10 → 18 → 8 → 10,三笔区间是 [10, 18]、[8, 18]、[8, 10]。高点最小值与低点最大值都是10,交集只剩一个价格点,未满足严格大于条件。这个例子仅核对输入笔的区间检查,不替代笔本身的连接条件。
这里检查的是候选起始处的前三笔,不要求之后每一笔都与这三笔共享同一个区间。前三笔条件不足时,工具不会在该起点补画待确认线段。
尚未生成第一条线段时,工具可以继续检查后续起始位置;已有已确认线段之后,下一段必须从共同端点衔接,不能跳过中间的笔制造断点。
三、特征序列:把笔的区间排成比较序列
工具从输入笔中选出与候选线段反向的笔,把每一笔的端点区间记作一个特征元素,再按时间排列。可以借用三根 K 线比较的方式理解高低点检查,但这些元素是笔的区间,不是新的行情 K 线。
| 候选线段 | 特征元素取自 | 检查的局部形态 |
|---|---|---|
| 向上线段 | 向下笔的端点价格区间 | 中间元素高点、低点均严格高于两侧 |
| 向下线段 | 向上笔的端点价格区间 | 中间元素高点、低点均严格低于两侧 |
表中向上/向下只标识连线方向。两组高低点比较必须同时成立,相等不满足严格比较。
特征元素也会合并,但方向从哪里来?
工具按候选线段方向处理包含:向上取两元素较高的高点、较高的低点,向下取较低的高点、较低的低点,同时保留所选价格的真实来源端点。包含判定计入边界相等。
这里的取值公式与 K 线包含处理相似,方向来源与合并边界却不同:特征元素采用候选线段方向,不套用原始 K 线的前项参照或序列开头兜底规则,也不能跨候选分界合并。
为什么不能把所有元素一次合并后再找结束点?
对每一个候选结束位置,工具分别构造左右序列。左侧合并后的末个元素作为 F1;右侧按时间逐项处理,取得两个标准元素 F2、F3 后,就检查这个完整窗口,不用更晚的元素回头改写该窗口。
候选坐标取 F2 的真实极值来源:向上取高点来源,向下取低点来源;不直接取合并组最后一笔的位置。取得局部形态与坐标后,还需要以下确认检查。
四、缺口与两条确认路径
特征序列路径:先区分有没有缺口
这里的 F1、F2、F3 是上节候选窗口中的三个标准元素,不一定是整条序列最早的三个元素。
- 向上线段:F1 最高价 < F2 最低价,记为有缺口。
- 向下线段:F1 最低价 > F2 最高价,记为有缺口。
- 边界相等归入无缺口。
缺口只描述两个元素区间的关系,不是对原始 K 线是否跳空的判断。
| 检查结果 | 工具接下来的行为 |
|---|---|
| 局部形态成立、前两个元素无缺口 | 取得候选结束点,结合旧段基本结构与结束价方向校验 |
| 局部形态成立、前两个元素有缺口 | 保留候选,等待反向第二特征序列形成对应分型 |
| 第二序列确认前,原方向先出现严格更极端的端点 | 原候选失效,继续考察后续位置 |
下图以向上候选为例。蓝色直线是特征序列中的向下笔,灰色直线是其间的向上笔;本例每个特征元素来自单条笔,无须包含合并。两组 F2 的高低点都严格高于两侧,区别在 F1 高点与 F2 低点之间。
有缺口时,第二特征序列到底等什么?
工具从候选端点开始,按反向候选取特征元素并处理包含,再按时间查找符合条件的三元素分型。两次检查的方向不同,不能把第一序列的分型方向直接照搬给第二序列。
| 原候选线段 | 第一序列的局部形态 | 反向候选 | 第二序列取哪些笔、等待什么 |
|---|---|---|---|
| 向上线段 | 顶分型 | 向下 | 取向上笔区间,等待底分型 |
| 向下线段 | 底分型 | 向上 | 取向下笔区间,等待顶分型 |
表中向上/向下只标识连线方向。这是本工具代码的实现约定:向上旧段等待第二序列底分型,向下旧段等待第二序列顶分型。 例如向上旧段的第二序列为 [20, 25]、[15, 24]、[18, 27],中间高点24和低点15均严格低于两侧,满足底分型比较。
第二序列按时间处理新元素;首次满足分型条件后,不用后来的元素通过包含合并回头改写该次检查。等待期间,工具还核对候选端点是否先失效;仅仅触及某个价格,或某一条反向笔继续延伸,都不能代替第二序列的条件。
直接破坏:另一条独立检查路径
除了特征序列路径,工具还独立检查第一条反向笔及后续端点。以向上旧段为例,需同时满足:
- 候选前的旧段至少三笔,前三笔严格重叠,最后一笔与旧段同向。
- 第一条向下笔的终点,严格低于此前一条向下笔的终点。
- 后续向下笔终点再次严格低于第一条反向笔终点,且在此之前,同向笔没有严格高于候选结束价。
向下旧段使用镜像比较。相等不满足严格比较;数据不足时继续等待。这条路径取第一反向笔之前那条笔的真实终点,不要求第一特征序列先形成常规分型。
两条路径都产生候选时,工具优先处理候选端点在笔序列中位置较早的那一个,不是比较哪个确认事件发生得更早。同一位置优先采用已确认的特征序列结果;若该路径仍等待,直接破坏路径已经确认,则可以结束等待。候选仍须通过下一节的整体校验。
五、确认与显示:结束点位置与实线出现时间
候选检查通过后,工具还核对线段基本结构与结束价相对起点的方向:向上线段结束价必须更高,向下必须更低。失败时放弃该候选,继续搜索,不能只凭一个局部形态就画成实线。
| 线型 | 显示规则 |
|---|---|
| 实线 | 当前输入下通过确认检查的线段 |
| 虚线 | 已通过起始检查、仍待确认的线段;先以第三笔终点作为绘制端点,之后只由同方向更极端的笔端点推进 |
反向笔仍参与确认计算,但不一定拖动虚线端点。绘制到哪里,与计算已经检查到哪里,是两件事。
结束点坐标来自候选位置,确认依据来自后续笔。因此,实线可能到后面才出现,但仍结束在前面的候选坐标;工具不会为对齐确认发生时间,把结束点移到最后一笔。“显示得晚”本身不能作为端点画错的依据,也不能仅凭这项说明排除其他错误。
输入更新时怎样核对?
正常追加笔且原有确认依据仍成立时,不会仅因出现更晚的数据就把已确认线段拖到最新位置。但线段依赖输入笔;实时 K 线更新可能改变基础分型、笔的端点或确认状态,进而需要重新核对线段依据。具体边界见笔的画线规则。
切换周期、复权、历史范围或笔模式,也可能改变原有输入。实时页面在 K 线数据变化后重新计算;结构回放使用增量计算,回到受影响的位置检查依赖对象。重新计算不等于每条已确认线段一定变化,应核对输入笔和原确认依据是否改变。
需要查看形成过程时,可按结构回放核对方法查看线段事件,分别记录结束点位置与转为实线的位置,不用最终截图代替过程记录。
面板有哪些相关设置?
线段图层默认打开,保存过的设置优先;关闭图层只隐藏连线,不停止计算。当前没有单独的缺口确认开关或“严格/宽松线段”选项。严格/宽松是笔的模式,通过输入笔序列影响线段;设置总览见画线规则与参数总览。
六、Struct Guide 的实现约定清单
| 核对项 | 本工具的实现规则 |
|---|---|
| 输入 | 使用笔序列,末端可能包含待确认笔 |
| 起始检查 | 前三笔高点的最小值严格大于低点的最大值;交集只剩一个价格点不通过 |
| 方向与衔接 | 名称取自第一笔,只标识连线方向;已有已确认线段后,从共同端点连续衔接 |
| 特征元素 | 取候选方向的反向笔区间;按候选方向合并包含,不跨候选分界合并 |
| 第一序列分型 | 向上候选检查顶分型,向下检查底分型;高低点两组均严格比较 |
| 缺口 | 向上比较 F1 高点与 F2 低点,向下比较 F1 低点与 F2 高点;相等为无缺口 |
| 第二序列 | 有缺口时,向上旧段等待反向序列底分型,向下旧段等待反向序列顶分型;同时检查候选是否先失效 |
| 两条路径 | 特征序列与直接破坏分别检查;候选端点位置较早者优先,同位置按确认状态选择 |
| 结束点 | 取真实来源端点;候选前笔结构、末笔方向与结束价方向须通过校验 |
| 虚线端点 | 第三笔终点作为初始位置,后续只由同方向更极端的笔端点推进 |
| 更新边界 | 原依据保持时不因后续数据出现就移动结束点;基础笔或输入设置改变后重新核对 |
以上是本工具的实现选择。比较其他工具的线段前,应先核对输入笔与以上条件,不能只凭结果不同就判定原因。
七、常见问题
已经三笔,为什么还没有线段?
三笔数量足够只是起始检查的一部分。先查前三笔是否有非零宽度的共同区间,再查能否从前一段端点连续衔接。原始 K 线数量也不能直接替代笔数;详见起始检查。
为什么虚线端点不跟着最新反向笔移动?
绘制端点与已检查到的位置是两件事。反向笔可以参与特征序列和直接破坏检查,虚线仍指向当前绘制端点;只有同方向更极端的后续笔端点才推进它。
为什么结束点在前面,实线却到后来才出现?
结束点坐标来自候选位置,确认依赖后续笔。工具不会为与确认发生时间对齐而把结束点挪到最后一笔。有缺口时还可能等待第二序列分型,见缺口与两条确认路径。
出现一条反向笔,就算线段被笔破坏了吗?
不会仅凭一条反向笔出现就确认结束。直接破坏路径还要检查旧段基本条件、第一条反向笔与后续端点;特征序列路径要检查局部形态与缺口。条件不足时继续等待,笔数变化不等于确认结果。
笔、线段与中枢在图上怎样区分?
Struct Guide 用连接线显示笔和线段,用矩形显示中枢。计算时先生成笔序列,再计算线段;中枢使用已确认线段检查区间。三者是不同图层与计算对象。只想核对线段时,可在面板关闭其他图层,关闭显示不停止内部计算。
Struct Guide 自动执行起始检查、候选选择和确认计算。核对某一段时,先固定输入笔与模式,再按本文的共同区间、两条确认路径和结束价校验逐项检查;区间计算见中枢的画线规则。
