Vibe-Trading 缠论技能实战:二买二卖(第二类买卖点)的信号定义、czsc 实现与信号引擎集成
2026/9/10 4:44:31 网站建设 项目流程

Vibe-Trading 缠论技能实战:二买二卖(第二类买卖点)的信号定义、czsc 实现与信号引擎集成

【免费下载链接】Vibe-Trading"Vibe-Trading: Your Personal Trading Agent"项目地址: https://gitcode.com/GitHub_Trending/vi/Vibe-Trading

本文聚焦 Vibe-Trading 缠论形态识别技能(chanlun)中的第二类买卖点——二买/二卖。读完后,你将理解二买"回调不破一买低点"、二卖"反弹不破一卖高点"的完整判定条件,掌握 czsc 库cxt_second_bs_V230320信号函数的接入方式,并能结合仓库内的示例信号引擎,把二买二卖信号融入"K线 → 分型 → 笔 → 中枢 → 买卖点"的自动化识别链路。

在缠论买卖点体系中的定位

chanlun 技能位于 agent/src/skills/chanlun/SKILL.md,是一套基于缠中说禅理论的价格形态识别方案,核心链路为:

原始K线 → 去包含处理 → 分型识别 → 笔检测 → 中枢构建 → 买卖点判定

适用于任何有 OHLCV 数据的市场(A股、加密货币、期货等)。缠论的买卖点体系分为三类,二买二卖是其中的"确认层":

买卖点含义详细文档
一买/一卖趋势结束后的第一个反转信号(背驰点)一买一卖
二买/二卖一买/一卖后回调不破底/顶的确认信号二买二卖
三买/三卖中枢上移/下移后回调不进入前中枢的信号三买三卖

一买/一卖捕捉的是趋势反转的拐点(背驰点),二买/二卖则是一买/一卖之后的回调确认信号,安全性高于一买一卖——它不赌"第一下",而是等价格用一次回调证明结构。这正是缠论交易框架中"宁可错过、不可做错"的工程化落地。

二买(Second Buy)

定义:一买出现后,价格反弹再回调,回调不破一买低点时的买入点。

● / \ ● / \ / \ / / \ / / \ / ● ★一买 ★二买 ← 回调不破一买低点

信号条件(四条须同时满足):

  1. 已出现一买信号;
  2. 反弹后回调;
  3. 回调低点 > 一买低点(不创新低);
  4. 出现底分型确认。

条件 4 的"底分型"是整条判定链的最后一道闸门。按 分型 的文档定义,底分型(Mark.D)由连续三根去包含后的 K 线构成,判定条件为k1.high > k2.high < k3.highk1.low > k2.low < k3.low,表示下跌力量衰竭、可能转涨。也就是说,二买不是"回调到某价位"就触发,而是必须等结构上出现一个完整的底分型,避免在下跌中继的反弹里抢跑。

而"不创新低"的基准——一买低点——本身是一买信号给出的结构位置,其产生依赖至少两个向下中枢加最后一段背驰下跌(详见 一买一卖)。二买把这两个结构要素(一买位置 + 底分型)组合成一个可程序化判定的入场点。

二卖(Second Sell)

定义:一卖出现后,价格回调再反弹,反弹不破一卖高点时的卖出点。

★一卖 ★二卖 ← 反弹不破一卖高点 \ /\ \ / \ \ / \ \ / \ ● ●

二卖与二买完全镜像:先有一卖信号,其后价格反弹再回落、再次反弹时,只要反弹高点低于一卖高点并出现顶分型确认(顶分型条件k1.high < k2.high > k3.highk1.low < k2.low > k3.low,见 分型),即构成二卖信号。

czsc 信号函数:cxt_second_bs_V230320

chanlun 技能将缠论判定委托给 czsc 库完成。czsc 内置了 43 个缠论信号函数(见 SKILL.md 的函数清单),其中二买二卖对应czsc.signals.cxt模块中的cxt_second_bs_V230320,即"均线辅助二买二卖"。按 二买二卖 文档给出的标准写法:

from czsc.signals.cxt import cxt_second_bs_V230320 def get_signals(c): s = {} # 均线辅助识别二买二卖 s.update(cxt_second_bs_V230320(c, di=1, ma_type="SMA", timeperiod=20)) return s

三个关键参数:

参数示例取值含义
di1倒数第 N 笔;di=1表示针对倒数第 1 笔做判定(该约定在 一买一卖 文档中同样标注)
ma_type"SMA"辅助均线的类型;二买二卖是均线辅助类信号,均线用于刻画回调/反弹的力度与方向
timeperiod20均线周期

这个get_signals(c)函数会被注册进 CZSC 分析器,每次 K 线更新时自动执行并把结果合并进信号字典——这正是 chanlun 技能的统一接入模式,一买一卖、三买三卖、三笔/五笔形态全部通过同一机制挂接。

信号引擎集成:从参考文档到可运行代码

仓库提供了完整的参考实现 example_signal_engine.py。理解它对二买二卖的工程接入有三段源码值得展开:

1. DataFrame → RawBar 转换

_df_to_bars把任意含open/high/low/close/volume列、index 为 datetime 的 OHLCV DataFrame 转换为 czsc 要求的RawBar列表(按时间正序)。这对应 SKILL.md 中定义的数据格式:

字段类型说明
symbolstr标的代码
idint序号(从 0 开始)
dtdatetime时间
freqFreq频率:Freq.F1/F5/F15/F30/F60/D/W/M
open/close/high/lowfloat开/收/高/低价
volfloat成交量
amountfloat成交额

2. 信号函数注册与中枢检测

_get_signals展示了信号注册模式:

def _get_signals(c: CZSC) -> dict: s = {} s.update(cxt_first_buy_V221126(c, di=1)) s.update(cxt_first_sell_V221126(c, di=1)) s.update(cxt_bi_base_V230228(c, di=1)) s.update(cxt_three_bi_V230618(c, di=1)) s.update(cxt_five_bi_V230619(c, di=1)) return s

从源码结构看,示例引擎当前注册了一买、一卖、笔基础、三笔、五笔形态五组函数;二买二卖按 二买二卖 文档的写法,只需在此追加一行s.update(cxt_second_bs_V230320(c, di=1, ma_type="SMA", timeperiod=20))即可纳入同一识别链路——这正是该参考文档存在的意义:它规定了 czsc 函数、参数与get_signals契约。

与之配合的_check_zhongshu会在笔列表尾部回看最多约 7 笔,用ZS(bis=...)构造中枢并检查is_valid(即zg > zd,公式定义见 中枢),为"笔基础信号 + 中枢位置"的组合判定提供结构支撑。

3. 增量分析与逐 K 线回扫

SignalEngine.generate采用"前 30 根 K 线冷启动 + 逐根c.update(bar)增量推进"的策略:

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

这一写法有两个工程要点:其一,czsc 支持增量更新,CZSC状态(去包含 K 线、分型、已完成的笔bi_list、未完成笔中的 K 线bars_ubi、信号字典signals)随每根新 K 线滚动,适合实时行情下的逐 bar 分析;其二,信号按 bar 的序号写回 Series,输出约定为1=做多、-1=做空、0=观望(与 SKILL.md 的信号约定一致),可以直接被上层策略/回测消费。

_evaluate_signals则演示了信号到交易方向的优先级映射:先查一买(key 含BUY1且值含"一买"→做多)、一卖(SELL1/一卖→做空),再查三笔"向上/向下盘背"、五笔"类一买/类一卖",最后用笔基础信号配合中枢位置(收盘价跌破中枢下沿zs.zd且出现"向下_转折"→做多,反之做空)。若按参考文档注册了cxt_second_bs_V230320,二买二卖信号同样会以信号字典条目(key 含函数版本、value 含"二买"/"二卖"语义)出现在c.signals中,可按同样方式提取。

该文件的__main__块(L190-L225)还给出了完整端到端示例:从 OKX 行情 API 拉取 BTC-USDT 日线 300 根,转成 DataFrame 后跑SignalEngine,打印做多/做空信号数量与最近信号日期。运行前按 SKILL.md 安装依赖即可:

pip install czsc requests pandas

(SKILL.md 注明实现基于 czsc v0.9.68+,纯 Python、可选 Rust 加速后端。)

快速上手:CZSC 分析器与二买二卖的最小验证

如果你只想单独验证二买二卖判定而不跑完整引擎,最小用法如下(取自 SKILL.md 快速上手节,信号函数换成二买二卖):

from czsc import CZSC, RawBar, Freq from datetime import datetime from czsc.signals.cxt import cxt_second_bs_V230320 # 准备 RawBar 列表(需按时间正序排列) bars = [ RawBar(symbol="BTC-USDT", id=0, dt=datetime(2026, 1, 1), freq=Freq.D, open=70000, close=71000, high=72000, low=69000, vol=1000, amount=71000000), # ... 更多K线 ] # 创建分析器,自动检测分型/笔/中枢,并注册二买二卖信号 c = CZSC(bars, get_signals=lambda c: cxt_second_bs_V230320( c, di=1, ma_type="SMA", timeperiod=20)) # 访问结果 print(c.bi_list) # 已完成的笔 print(c.bars_ubi) # 未完成笔中的K线 print(c.signals) # 当前信号字典

分析器就绪后,c.bi_list中每笔的端点分型可用来人工复核二买条件:取一买所在底分型位置,检查其后回调笔的低点(bi.low)是否高于该底分型值,且回调末端是否形成新的 Mark.D 分型(bi.fx_b.mark)。笔 文档给出的关键属性(directionhighlowlengthpower_priceslope等)都可直接用于这类复核脚本。

实战要点与风控设计

继承 二买二卖 文档的实战要点,并说明其在结构上的含义:

  • 二买比一买更安全:一买是抄底(趋势背驰后可能继续跌),二买是确认反转——它要求价格先走出反弹、再回调、且回调不创新低,等于让市场"再证明一次"底部结构;
  • 二买的止损位明确:设在一买低点下方。从结构上讲,若价格跌穿一买低点,"回调不破底"的前提被破坏,二买失效,止损逻辑与信号失效条件天然一致,无需额外拍脑袋定止损幅度;
  • 二卖同理:止盈/离场位设在一卖高点上方,反弹突破该高点则二卖结构失效。

放到完整买卖点体系中看,三者可形成互补的仓位节奏:一买承担底仓(拐点博弈,胜率依赖背驰判定),二买承担确认仓(结构确认后再介入),三买(突破中枢上沿后回调不进中枢,判定条件见 三买三卖)承担顺势加仓——三买止损设在中枢 ZG 下方,与二买"止损设在一买低点下方"一样,都是把止损锚定在结构位上。中枢边界ZG/ZD的计算(zg = min(前三笔high)zd = max(前三笔low)、有效性zg > zd)在 中枢 文档中有完整公式与示例。

适用前提、限制与文档完整性保障

几点使用前提与限制,均以当前仓库实际内容为准:

  1. 依赖版本:czsc v0.9.68+;信号函数命名带版本号(如cxt_second_bs_V230320),升级 czsc 时需确认函数名与参数签名未变;
  2. 频率与数据量:引擎以Freq参数化支持分钟到月线(F1~M);示例引擎要求至少 30 根 K 线冷启动,数据不足时直接输出全 0 信号,实际使用二买二卖需要足够的历史笔结构(至少出现一买/一卖及其后的回调笔);
  3. 信号函数组合:二买二卖是"均线辅助"类信号,timeperiod=20为参考文档给出的默认值,换标的、换周期时均线参数需要重新审视,本文不对其效果作任何保证。

在工程治理上,chanlun 技能的参考文档并非裸文件:test_skill_reference_links.py 对全部自带技能做回归测试,要求 SKILL.md 中每一条references/链接同时能被浏览器(按文档相对路径解析)和 Agent 的read_file工具(按 skills 根解析)命中且内容非空;该测试的注释还点名 chanlun 技能正是这类文档链接的覆盖对象之一。因此 二买二卖 与 一买一卖、三买三卖、分型、笔、中枢 组成的文档树是被测试锁定的有效资产。

在 Agent 侧,多智能体技术分析面板预设 technical_analysis_panel.yaml 将chanlun列入技术分析小组的加载技能(与 elliott-wave 并列),也就是说二买二卖这类结构信号会作为 Agent 技术分析工具链的一部分被调用,而非孤立的离线脚本。

小结

二买二卖是缠论买卖点体系中"确认层"的标准化实现:二买要求"一买已现 + 反弹后回调不创新低 + 底分型确认",二卖为其镜像。Vibe-Trading 的 chanlun 技能把这套判定沉淀为三层资产——概念参考文档(买卖点定义与判定条件)、czsc 信号函数(cxt_second_bs_V230320di=1, ma_type="SMA", timeperiod=20)、以及可直接运行的SignalEngine参考实现(RawBar 转换、信号注册、增量更新、1/-1/0 输出约定)。掌握这条链路后,你可以按同样模式把一买一卖、三买三卖、三笔/五笔形态组合成适合自己的多信号判定策略,并通过 czsc 的增量更新能力将其用于逐 K 线的实时分析。

【免费下载链接】Vibe-Trading"Vibe-Trading: Your Personal Trading Agent"项目地址: https://gitcode.com/GitHub_Trending/vi/Vibe-Trading

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询