mcpField
Z
zigzag-pattern-classifier

zigzag-pattern-classifier

github.com/terrylica数据与数据库170 次安装今天更新
代码仓库

关于 zigzag-pattern-classifier

zigzag-pattern-classifier 是按价格关系和市场状态分类双枢轴与三枢轴 ZigZag 摆动形态的参考 skill。它定义完整分类体系、容差规则,以及基于 FD 的细分方法。

主要功能

  1. 01双枢轴与三枢轴形态分类
  2. 02高于、等于、低于的比较规则
  3. 03Epsilon 容差指南
  4. 04Freedman-Diaconis 细分类
  5. 05市场状态标注
  6. 06qta Rust crate 实现参考

适用场景

  1. 01分类已确认的 ZigZag 摆动
  2. 02在 Rust 或 Python 流水线中标注形态
  3. 03根据摆动结构解读市场状态
  4. 04设置容差与分箱规则

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/terrylica/cc-skills --skill zigzag-pattern-classifier

安装后在 Claude Code 中输入/zigzag-pattern-classifier确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
binning-methodology.md
data-pipeline.md
epsilon-tolerance-detail.md
eurusd-validation-scenarios.md
notation-definitions.md
three-pivot-variants.md
two-pivot-variants.md

详细介绍

ZigZag 摆动模式分类器

根据结构和市场状态对 ZigZag 摆动模式进行完整分类。每个已确认的 ZigZag 序列都恰好对应一个变体——没有遗漏,也没有重叠。

自我演进技能:此技能会在使用过程中不断改进。如果说明有误、参数发生漂移,或需要采用变通方案,请立即修复此文件,不要拖延。只有出现真实且可复现的问题时才更新。

适用场景

  • 对已确认的 L₀→H₁→L₂(双转折点)或 L₀→H₁→L₂→H₃(三转折点)摆动进行分类
  • 查询特定模式对市场状态的影响
  • 回答“存在多少种不同的模式?”并证明分类完备
  • 在代码中实现模式标记(Rust qta crate、Python 流水线)
  • 理解定义“相等”的 ε 容差带
  • 使用 Freedman-Diaconis 分箱进行子分类

符号说明(唯一事实来源)

符号定义示例
L₀初始低点(第一个已确认的转折点)1.0800
H₁摆动高点(反转峰值)1.0850
L₂第二个低点(回撤)1.0810
H₃第二个高点(仅适用于三转折点)1.0870
W摆动幅度:H₁ − L₀0.0050
z标准化回撤:(L₂ − L₀) / (H₁ − L₀)0.20
o波动率标准化超调:(L₀ − L₂) / ATR₁₄0.35
ε“相等”分类的容差带5 点
τZigZag 反转阈值6.6 点
价格水平比较
代码含义条件
HL更高的低点L₂ > L₀ + ε
EL相等的低点|L₂ − L₀| ≤ ε
LL更低的低点L₂ < L₀ − ε
HH更高的高点H₃ > H₁ + ε
EH相等的高点|H₃ − H₁| ≤ ε
LH更低的高点H₃ < H₁ − ε

第 1 部分:双转折点模式(上行-下行)

模式:L₀ → H₁ → L₂(一段上行腿,一段下行腿)

基础分类(3 类)

每个上行-下行三元组都恰好属于以下一类:

类别条件含义频率
EL|L₂ − L₀| ≤ ε相等的低点(回测)~20–30%
HLL₂ > L₀ + ε更高的低点(回调)~50–60%
LLL₂ < L₀ − ε更低的低点(跌破)~10–20%
细粒度分类:9 种 FD 分箱变体

HL 和 LL 均使用 Freedman-Diaconis 分箱,根据标准化坐标细分为 4 个子类:

  • HL 分箱使用 z = (L₂ − L₀) / (H₁ − L₀),范围为 0 到 1
  • LL 分箱使用 o = (L₀ − L₂) / ATR₁₄,范围为 0 到 ∞
变体z 或 o 范围市场状态概率
EL|z| ≤ ε_r回测——支撑位重新确立20–30%
HL-FD10.75 < z < 1.0浅回调——买方掌控局势20–25%
HL-FD20.50 < z ≤ 0.75中度回调——Fib 38–50%15–20%
HL-FD30.25 < z ≤ 0.50深度回调——Fib 61.8%10–15%
HL-FD40 < z ≤ 0.25几乎完全回撤——勉强守住5–10%
LL-FD1o ≤ q₂₀微幅跌破——短暂的假突破8–12%
LL-FD2q₂₀ < o ≤ q₄₀浅幅跌破——中度恐慌4–8%
LL-FD3q₄₀ < o ≤ q₆₀深幅跌破——结构性破位2–5%
LL-FD4o > q₆₀极端跌破——尾部事件<2%
交易含义
类型入场信号止损目标
EL从 L₀+ε 做多L₀−εH₁ + ΔH
HL-FD1从 L₂ 做多L₂−εH₁ + ΔH
HL-FD2确认时做多L₂−ε前高 + ΔH
HL-FD3缩小仓位;等待L₂−ε支撑位 + ΔH
HL-FD4风险极高;避免L₂−ε关键位
LL-FD1做空尖峰行情L₂+尖峰L₀
LL-FD2等待反转突破L₀
LL-FD3做空延续行情反转新低
LL-FD4危机模式;对冲恐慌性抛售待定
可选的子分类标记

可附加到任意类型,以提供更丰富的背景信息:

标记含义信号
+CH₁→L₂ 之间任一收盘价 < L₀看跌承诺更强
+SL₂ 在单根 K 线内出现(尖峰)急剧反转;均值回归
+X仅影线跌破 L₀,收盘价未跌破流动性扫荡;假突破

示例标签:HL-FD2+C、LL-FD4+S+C、EL+X


第 2 部分:三枢轴形态(上涨-下跌-上涨)

形态:L₀ → H₁ → L₂ → H₃(上涨段、下跌段、上涨段)

9 种穷尽性类型

两个相互独立的维度,各有 3 种取值 = 3×3 = 9 种互斥且穷尽的类型。

维度 1 — L₂ 与 L₀ 的关系:{HL,EL,LL}
维度 2 — H₃ 与 H₁ 的关系:{HH,EH,LH}

#L₂ 与 L₀ 的关系H₃ 与 H₁ 的关系名称市场状态
1HLHH延续性冲动牛市趋势延续
2HLEH双顶测试震荡区间,看涨倾向
3HLLH三角形收敛中性盘整
4ELHH区间向上突破看涨转变
5ELEH矩形多空均衡区间
6ELLH平底处的较低高点震荡区间,看跌倾向
7LLHHV 形反转 / 弹簧效应看涨反转
8LLEH下破后停滞波动区间
9LLLH反弹失败熊市趋势延续
穷尽性证明

所有类型均满足以下必要约束:

  • L₀ < H₁(存在第一段上涨趋势)
  • L₂ < H₁(回撤未超过峰值)
  • H₃ > L₂(存在第二段上涨趋势)

L₂ 与 L₀ 恰有 3 种关系(更高、相等、更低)。H₃ 与 H₁ 恰有 3 种关系(更高、相等、更低)。这两个维度相互独立,没有任何约束会排除任何组合。因此共有 3 × 3 = 9 种类型,全部可行,无一遗漏。

自然分组
  • 看涨(4):HL+HH、EL+HH、HL+EH、LL+HH
  • 中性(3):HL+LH、EL+EH、LL+EH
  • 看跌(2):EL+LH、LL+LH
市场状态分类
市场状态类型
趋势延续HL+HH(牛市)、LL+LH(熊市)
区间盘整HL+LH、EL+EH、LL+EH
看涨转变EL+HH、HL+EH
看跌转变EL+LH
反转LL+HH

第 3 部分:27 种扩展

将 H₃ vs L₀ 添加为第三个独立维度:

  • L₂ vs L₀:{HL, EL, LL}
  • H₃ vs H₁:{HH, EH, LH}
  • H₃ vs L₀:{Above, Equal, Below}

由此得到 3×3×3 = 27 种子变体。由于约束条件,其中一些在数学上不可能成立(例如,HL+LH+H₃<L₀ 要求 H₃ < L₀ < L₂ < H₃,这自相矛盾)。

分析师通常会将这个第三维度简化为二元分类:“重新收复 L₀”与“未能重新收复 L₀”。


Epsilon 容差带

容差带 ε 决定了“相等”的含义。它会根据波动率和微观结构进行调整。

核心公式
ε = min(ε_max, max(ε_min, √[(a·S)² + (b·ATR₁₄)²]))

其中:

  • S = 滚动点差中位数(买卖价差)
  • ATR₁₄ = 14 根 K 线的真实波幅均值
  • a = 2.0(点差缩放系数)
  • b = 0.05(M5-M30)或 0.07(H1-D1)
上下界(EURUSD 默认值)
ε_min = max(3 ticks, 1×S) = max(0.00003, S)
ε_max = min(5 pips, 0.20 × swing) = min(0.00050, 0.20 × W)
使用 ε 进行分类
ε_r = ε / W  (relative tolerance)

EL if |z| ≤ ε_r
HL if z > ε_r
LL if z < −ε_r
实用备用方案

如果无法获取买卖价差:

  • 仅使用 ATR:ε = 0.05 × ATR₁₄(M5-M30),0.07 × ATR₁₄(H1-D1)
  • 固定区间:3 点(盘中)、5 点(波段)、10 点(日线)

如需查看完整的计算示例和敏感性分析,请阅读 references/epsilon-tolerance-detail.md。


Freedman-Diaconis 分箱

FD 规则根据数据计算统计意义上的最优分箱边界:

h = 2 × IQR(X) × n^(-1/3)    (bin width)
K = clip(⌈(max−min) / h⌉, 3, 6)  (number of bins)
edges = linspace(min, max, K+1)
HL 形态的处理流程
  1. 收集 2-3 年的 UP-DOWN 三元组
  2. 筛选 HL(z > ε_r)
  3. 将 z 缩尾至 0.5%-99.5%
  4. 根据 z ∈ (ε_r, 1) 计算 FD 分箱边界
  5. 标记:从最浅的 HL-FD1 到最深的 HL-FDK
LL 形态的处理流程
  1. 筛选 LL(z < −ε_r)
  2. 计算 o = (L₀ − L₂) / ATR₁₄
  3. 将 o 缩尾至 0.5%-99.5%
  4. 根据 o ∈ (ε_r, ∞) 计算 FD 分箱边界
  5. 标记:从微小的 LL-FD1 到极端的 LL-FDK

每月或每季度重新计算分箱边界,以跟踪市场状态漂移。如果样本少于 400,则改用分位数分箱。


实现参考

qta Rust crate(crates/qta/)实现了核心 ZigZag 状态机,用于生成此分类框架所使用的枢轴点:

  • ZigZagConfig::new(reversal_depth, epsilon_multiplier, bar_threshold_dbps)
  • ZigZagState::process_bar(&bar) → ZigZagOutput,其中 completed_segment 包含 base_class(EL/HL/LL)和 z 分数
  • 该 crate 会根据每个枢轴点的 bar_threshold_dbps 动态计算 τ 和 ε

本技能中的分类框架会在该 crate 的输出基础上,扩展 FD 分箱、三枢轴分析和市场状态标记。


深入参考文件

如需查看 ASCII 可视化图、计算示例和实现伪代码,请按需阅读以下参考文件:

文件内容
references/notation-definitions.md唯一事实来源:所有符号、公式、缩写和形态类别
references/two-pivot-variants.md全部 9 种双枢轴 ASCII 图、交易规则和标志示例
references/three-pivot-variants.md全部 9 种三枢轴 ASCII 图、27 种扩展和 HL+LH 粒度子变体
references/epsilon-tolerance-detail.md完整的 ε 公式、计算示例、敏感性分析和伪代码
references/binning-methodology.mdFreedman-Diaconis 算法详情、FD 与分位数比较及计算示例
references/data-pipeline.md11 步端到端流程:原始报价 → OHLC → ATR → 枢轴点 → 分类 → 输出
references/eurusd-validation-scenarios.md3 个市场计算示例(正常、波动、崩盘),用于验证 ε 和 τ

执行后反思

此技能执行完毕后,关闭前请检查:

  1. 命令是否成功? — 如果没有,修复导致失败的指令或错误表。
  2. 参数或输出是否发生变化? — 如果底层工具的接口发生偏移,请更新 Usage 示例和 Parameters 表以保持一致。
  3. 是否需要变通方案? — 如果你不得不临时调整(更换标志、增加步骤),请更新此 SKILL.md,以便下次调用时无需采用相同的变通方案。

只有问题确实存在且可复现时才进行更新,不要基于猜测更新。

评论

支持 Markdown