Vibe-Trading 缠论分型(FX)识别完全指南:去包含、顶底分型与笔端点实战解析

发布时间:2026/9/10 0:29:21
Vibe-Trading 缠论分型(FX)识别完全指南:去包含、顶底分型与笔端点实战解析 Vibe-Trading 缠论分型FX识别完全指南去包含、顶底分型与笔端点实战解析【免费下载链接】Vibe-TradingVibe-Trading: Your Personal Trading Agent项目地址: https://gitcode.com/GitHub_Trending/vi/Vibe-Trading本文是 Vibe-Trading 项目中agent/src/skills/chanlun缠论技能包的核心概念系列之一。缠论缠中说禅是一套完全基于价格结构的形态分析方法而分型FX是整个体系最底层的识别单元——去包含处理、顶底分型判定、笔端点确认直至中枢构建与买卖点判定全部建立在分型之上。读完本文你将掌握分型的数学定义与条件、去包含合并规则、czsc中FX数据结构的字段语义并能结合仓库中的example_signal_engine.py信号引擎把分型识别直接用于 A 股、加密货币、期货等多市场 OHLCV 数据的实时分析与信号生成。一、分型在缠论体系中的定位缠论的核心链路是原始K线 → 去包含处理 → 分型识别 → 笔检测 → 中枢构建 → 买卖点判定分型位于整条链路的第三环是连接原始价格数据与高层次结构笔、中枢、买卖点的必经桥梁。在 SKILL.md 中分型被定义为整个体系的最基础识别单元分型FX顶分型中间K线最高底分型中间K线最低没有分型就无法定义笔笔的两端必须是顶/底分型没有笔就无法构建中枢中枢由至少 3 笔构成没有中枢一买/二买/三买等买卖点信号就无从谈起。因此分型识别的正确性直接决定了下游所有缠论信号的质量。二、分型的定义连续三根去包含后的 K 线分型由连续三根去包含后的 K 线构成。这里有两个关键词需要精确理解去包含后分型不是直接作用于原始 K 线而是作用于经过包含关系处理之后的 K 线序列。包含关系会破坏分型的几何形态必须先合并。连续三根分型是局部三根 K 线的形态判定属于缠论中最小的局部结构。顶分型Mark.G██ ██ ██ ██ ██底分型Mark.D██ ██ ██ ██ ██三、去包含处理分型识别的前置步骤3.1 包含关系的判定当相邻两根 K 线存在价格区间完全覆盖时即一根 K 线的高低点完全落在另一根的范围内k1.high k2.high 且 k1.low k2.low或反之两者即为包含关系一根 K 线的最高价被另一根覆盖且其最低价也被另一根覆盖。3.2 合并规则去包含处理的方向由前一根非包含 K 线的方向决定上升或下降方向合并取法含义上升方向取两根 K 线中较大的高点和较大的低点突出强势向上延伸下降方向取较小的高点和较小的低点突出弱势向下延伸用公式表达以两根 K 线 k1、k2 合并为 k 为例上升方向k.high max(k1.high, k2.high)k.low max(k1.low, k2.low)下降方向k.high min(k1.high, k2.high)k.low min(k1.low, k2.low)从源码结构看czsc 库内部正是以去包含后的新 K 线NewBar序列作为分型与笔的输入这也解释了为什么FX.elements字段的类型是List[NewBar]详见下文第四节。3.3 为什么必须去包含如果两根 K 线存在包含关系它们实际上传达的是同一个方向的延伸信息而非独立的价格行为。不去包含会导致本应构成分型的中间高两边低形态被包含 K 线破坏分型数量虚增或漏判笔的端点错位下游中枢区间、买卖点信号全部失真。四、顶分型与底分型的精确条件设构成分型的三根去包含 K 线从左到右为k1, k2, k3。4.1 顶分型Mark.G条件k1.high k2.high k3.high 且 k1.low k2.low k3.low即中间 K 线 k2 的最高价是三者中的最高同时 k2 的最低价也是三者中的最高。含义价格在 k2 处冲到局部高点随后 k3 的高点与低点均回落——上涨力量衰竭可能转跌。顶分型是一卖、二卖、三卖等卖出信号确认的形态前提。4.2 底分型Mark.D条件k1.high k2.high k3.high 且 k1.low k2.low k3.low即中间 K 线 k2 的最高价是三者中的最低同时 k2 的最低价也是三者中的最低。含义价格在 k2 处探到局部低点随后 k3 的高点与低点均回升——下跌力量衰竭可能转涨。底分型是一买、二买、三买等买入信号确认的形态前提。4.3 关键要点顶分型与底分型判定同时要求 high 和 low 两个维度成立单一维度不构成分型分型是必要条件而非充分条件出现分型只代表转折的可能是否真正形成笔还需满足笔的构成条件顶底交替、无包含、最小 K 线数等见 笔.md。五、czsc 中的 FX 数据结构分型在czsc库中以FXdataclass 表示字段语义如下dataclass class FX: symbol: str # 标的代码 dt: datetime # 分型时间取中间K线时间 mark: Mark # Mark.G顶/ Mark.D底 high: float # 分型最高价 low: float # 分型最低价 fx: float # 分型值顶取high底取low elements: List[NewBar] # 构成分型的三根去包含K线字段类型语义与来源symbolstr标的代码透传自输入 K 线的symboldtdatetime分型时间取中间 K 线k2的时间代表转折发生的时点markMark分型类型枚举Mark.G顶/Mark.D底highfloat分型最高价即三根 K 线的最高价lowfloat分型最低价即三根 K 线的最低价fxfloat分型值顶分型取 high底分型取 low。这是笔端点比较时的关键数值elementsList[NewBar]构成该分型的三根去包含后的 K 线印证了分型必须建立在去包含序列之上其中fx字段的设计值得注意顶分型用high、底分型用low这使得在笔的判定中可以通过统一的分型值比较大小例如上升笔要求fx_b.fx fx_a.fx详见 笔.md从而避免在不同类型分型间做差异化的取价逻辑。六、使用示例从分型到笔端点分型最常见的消费方式是作为笔BI的端点。笔连接相邻的顶分型与底分型因此遍历CZSC分析器输出的笔列表即可获得每一笔的起点与终点分型from czsc import CZSC c CZSC(bars) # 笔的端点就是分型 for bi in c.bi_list: print(f起点分型: {bi.fx_a.mark.value} {bi.fx_a.dt}) print(f终点分型: {bi.fx_b.mark.value} {bi.fx_b.dt})其中bi.fx_a为该笔的起点分型FX对象bi.fx_b为该笔的终点分型FX对象上升笔满足fx_a.mark Mark.D、fx_b.mark Mark.G下降笔则相反mark.value输出分型类型的字符串值如G/D。6.1 组合形态输出示例结合 笔.md 的示例可以更直观地观察分型时间与价格在笔中的体现from czsc import CZSC c CZSC(bars) for bi in c.bi_list[-5:]: d ↑ if bi.direction.value Up else ↓ print(f{d} {bi.fx_a.dt:%m-%d} - {bi.fx_b.dt:%m-%d} fH{bi.high:.0f} L{bi.low:.0f} len{bi.length})这里fx_a.dt与fx_b.dt正是分型的时间字段取中间 K 线时间反映了转折时点的精确刻度。七、仓库集成分型在信号引擎中的实战落地分型本身是形态识别单元但真正的实战价值体现在它如何驱动交易信号。仓库中的 example_signal_engine.py 演示了完整的落地链路。7.1 引擎整体链路OHLCV DataFrame → _df_to_bars → RawBar列表 → CZSC(bars[:30], get_signals...) → 逐根 c.update(bar) 增量更新 → _evaluate_signals → 1(做多)/-1(做空)/0(观望)其中CZSC在内部完成去包含 → 分型 → 笔 → 中枢的自动构建分型识别对用户完全透明但信号判定逻辑需要显式引用分型的下游产物笔与中枢。7.2 分型派生信号在引擎中的判定逻辑_evaluate_signals方法展示了分型识别结果如何被逐级消费# 一买/一卖信号背驰点 分型确认 buy1_key [k for k in signals if BUY1 in k] if buy1_key and 一买 in str(signals.get(buy1_key[0], )): return 1 # 三笔形态向上盘背做多 / 向下盘背做空 three_bi_key [k for k in signals if 三笔 in k] if three_bi_key: val str(signals.get(three_bi_key[0], )) if 向上盘背 in val: return 1 if 向下盘背 in val: return -1 # 笔基础信号 中枢位置辅助 bi_key [k for k in signals if V230228 in k] if bi_key and len(c.bi_list) 3: val str(signals.get(bi_key[0], )) zs _check_zhongshu(c.bi_list) if zs and zs.is_valid: last_close c.bars_raw[-1].close if 向下_转折 in val and last_close zs.zd: return 1 if 向上_转折 in val and last_close zs.zg: return -1信号约定与 SKILL.md 一致信号含义引擎输出1做多一买、三笔向上盘背、五笔类一买、中枢下沿附近向下转折-1做空一卖、三笔向下盘背、五笔类一卖、中枢上沿附近向上转折0观望其余情况注意这里的一买/一卖信号需要底/顶分型作为最终确认条件见 一买一卖.md而中枢位置辅助判断依赖的是c.bi_list——笔的端点即分型因此分型识别质量是这一切的根基。7.3 完整可运行示例BTC-USDT 日线信号example_signal_engine.py的__main__部分给出了一个端到端示例拉取 OKX 的 BTC-USDT 日线数据并运行信号引擎import requests import pandas as pd from czsc import Freq BASE_URL https://www.okx.com/api/v5 # 获取 BTC 日线数据 resp requests.get(f{BASE_URL}/market/candles, params{ instId: BTC-USDT, bar: 1D, limit: 300 }) candles resp.json()[data] # 转为 DataFrame注意接口返回倒序需 reversed columns [ts, open, high, low, close, vol, volCcy, volCcyQuote, confirm] df pd.DataFrame(reversed(candles), columnscolumns) df[ts] pd.to_datetime(df[ts].astype(int64), unitms) df df.set_index(ts) for col in [open, high, low, close]: df[col] df[col].astype(float) df[volume] df[vol].astype(float) df[amount] df[volCcy].astype(float) # 运行信号引擎 engine SignalEngine(freqFreq.D) signals engine.generate({BTC-USDT: df}) # 输出结果 sig signals[BTC-USDT] buys sig[sig 1] sells sig[sig -1] print(fBTC-USDT 缠论信号 ({len(df)} 根K线)) print(f 做多信号: {len(buys)} 个) print(f 做空信号: {len(sells)} 个) if len(buys) 0: print(f 最近做多: {buys.index[-1]:%Y-%m-%d}) if len(sells) 0: print(f 最近做空: {sells.index[-1]:%Y-%m-%d})7.4 从 DataFrame 构造 RawBar引擎的数据入口是_df_to_bars它将任意 OHLCV DataFrame 规范化为czsc的RawBar列表这也是分型识别的输入格式def _df_to_bars(df: pd.DataFrame, symbol: str, freq: Freq Freq.D) - list: bars [] for i, (dt, row) in enumerate(df.iterrows()): if not isinstance(dt, datetime): dt pd.Timestamp(dt).to_pydatetime() bars.append(RawBar( symbolsymbol, idi, dtdt, freqfreq, openfloat(row[open]), closefloat(row[close]), highfloat(row[high]), lowfloat(row[low]), volfloat(row.get(volume, row.get(vol, 0))), amountfloat(row.get(amount, 0)), )) return barsRawBar的完整字段约定引自 SKILL.md字段类型说明symbolstr标的代码idint序号从 0 开始dtdatetime时间freqFreq频率Freq.F1/F5/F15/F30/F60/D/W/Mopenfloat开盘价closefloat收盘价highfloat最高价lowfloat最低价volfloat成交量amountfloat成交额7.5 引擎的增量更新机制generate方法展示了分型/笔的增量计算模式if len(bars) 30: result[code] signal continue # 先用前 30 根K线初始化分析器再逐根增量更新 c CZSC(bars[:30], get_signals_get_signals) for bar in bars[30:]: c.update(bar) sig self._evaluate_signals(c) if sig ! 0: signal.iloc[bar.id] sig这种初始批次 逐根c.update(bar)的模式充分利用了 czsc 的增量更新能力SKILL.md 明确说明 czsc 支持增量更新适合实时分析。这意味着分型识别不是每次全量重算而是新 K 线到达时局部刷新适合实盘流式行情场景。同时少于 30 根 K 线的标的会被跳过保证了分型、笔识别有足够的预热数据。7.6 信号函数的选择引擎选用的缠论信号函数来自czsc.signals.cxtfrom czsc.signals.cxt import ( cxt_first_buy_V221126, cxt_first_sell_V221126, cxt_bi_base_V230228, cxt_three_bi_V230619, cxt_five_bi_V230619, )在 SKILL.md 中czsc 共内置 43 个缠论信号函数核心分类如下函数说明类型cxt_first_buy_V221126一买信号买卖点cxt_first_sell_V221126一卖信号买卖点cxt_second_bs_V230320均线辅助二买二卖买卖点cxt_third_bs_V230318均线辅助三买三卖买卖点cxt_third_buy_V230228笔三买辅助买卖点cxt_double_zs_V230311两中枢组合判断 BS1中枢cxt_three_bi_V230618三笔形态分类形态cxt_five_bi_V230619五笔形态分类形态cxt_seven_bi_V230620七笔形态分类形态cxt_nine_bi_V230621九笔形态分类形态cxt_eleven_bi_V230622十一笔形态分类形态cxt_bi_base_V230228BI 基础信号方向/转折基础cxt_bi_end_V230312MACD 辅助笔结束辅助cxt_range_oscillation_V230620区间震荡判断辅助cxt_zhong_shu_gong_zhen_V221221大小级别中枢共振中枢其中一买/一卖信号函数还以di1参数显式指定倒数第 1 笔作为判定基准见 一买一卖.md信号输出格式为{freq}_D{di}B_BUY1/{freq}_D{di}B_SELL1。八、分型与其他核心概念的衔接理解分型必须同时理解它在缠论体系中的上下游关系概念与分型的关系详细文档分型FX本文主题三根去包含 K 线的形态单元分型.md笔BI笔的端点就是分型顶底交替、无包含、最小 7 根去包含 K 线笔.md中枢ZS至少 3 笔构成的价格重叠区域分型→笔→中枢的第三层中枢.md一买/一卖背驰 分型确认的趋势反转信号一买一卖.md二买/二卖一买/一卖后回调不破底/顶的确认信号二买二卖.md三买/三卖中枢上移/下移后回调不进入前中枢的信号三买三卖.md从仓库结构看chanlun技能还被用于多智能体协同场景在 technical_analysis_panel.yaml 中wave_analyst波浪分析师智能体被配置为同时加载elliott-wave与chanlun两个技能skills: [elliott-wave, chanlun]并将缠论的分型/笔/中枢结构作为艾略特波浪计数的交叉验证Fractal strokes strict, Segments and central pivot ranges。这表明分型识别不仅是单标的的技术指标还能为多分析师团队的形态共振判断提供独立证据链。九、实战注意事项与常见误区分型必须基于去包含序列直接对原始 K 线找三根形态会得到大量假分型务必确认数据已通过 czsc 的包含处理。分型不等于转折确认顶分型出现后价格可能继续创新高分型失败实盘建议结合 MACD 背驰cxt_bi_end_V230312或中枢位置辅助过滤。数据预热要求信号引擎要求至少 30 根 K 线len(bars) 30直接跳过更精细的买卖点判定需要更长的笔序列如 一买一卖.md 要求至少两个向下/向上中枢。频率选择Freq.D日线适合趋势级分析Freq.F30/F60适合日内分型数量会随周期缩短而增多注意噪声放大。安装依赖运行前需安装czscv0.9.68纯 Python 实现可选 Rust 加速后端pip install czsc requests pandas适用范围分型识别只依赖 OHLCV 数据因此适用于任何有 K 线数据的市场A 股、加密货币、期货等无需额外的基本面或新闻输入。十、小结分型是缠论最基础的识别单元三根去包含后的 K 线通过中间 K 线的高点/低点同时最高顶分型或同时最低底分型来判定局部力量衰竭。它的上游是去包含处理上升取大、下降取小下游则是笔、中枢与整个买卖点体系。在 Vibe-Trading 中分型识别通过czsc的FX数据结构与CZSC分析器自动完成并经由 example_signal_engine.py 的SignalEngine将分型派生的笔与中枢信号转化为1/-1/0的可执行交易信号同时支持增量更新以适配实时行情。掌握分型的判定逻辑与数据结构是理解并调优整套缠论信号引擎的第一步。【免费下载链接】Vibe-TradingVibe-Trading: Your Personal Trading Agent项目地址: https://gitcode.com/GitHub_Trending/vi/Vibe-Trading创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询