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)
定义:一买出现后,价格反弹再回调,回调不破一买低点时的买入点。
● / \ ● / \ / \ / / \ / / \ / ● ★一买 ★二买 ← 回调不破一买低点信号条件(四条须同时满足):
- 已出现一买信号;
- 反弹后回调;
- 回调低点 > 一买低点(不创新低);
- 出现底分型确认。
条件 4 的"底分型"是整条判定链的最后一道闸门。按 分型 的文档定义,底分型(Mark.D)由连续三根去包含后的 K 线构成,判定条件为k1.high > k2.high < k3.high且k1.low > k2.low < k3.low,表示下跌力量衰竭、可能转涨。也就是说,二买不是"回调到某价位"就触发,而是必须等结构上出现一个完整的底分型,避免在下跌中继的反弹里抢跑。
而"不创新低"的基准——一买低点——本身是一买信号给出的结构位置,其产生依赖至少两个向下中枢加最后一段背驰下跌(详见 一买一卖)。二买把这两个结构要素(一买位置 + 底分型)组合成一个可程序化判定的入场点。
二卖(Second Sell)
定义:一卖出现后,价格回调再反弹,反弹不破一卖高点时的卖出点。
★一卖 ★二卖 ← 反弹不破一卖高点 \ /\ \ / \ \ / \ \ / \ ● ●二卖与二买完全镜像:先有一卖信号,其后价格反弹再回落、再次反弹时,只要反弹高点低于一卖高点并出现顶分型确认(顶分型条件k1.high < k2.high > k3.high且k1.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三个关键参数:
| 参数 | 示例取值 | 含义 |
|---|---|---|
di | 1 | 倒数第 N 笔;di=1表示针对倒数第 1 笔做判定(该约定在 一买一卖 文档中同样标注) |
ma_type | "SMA" | 辅助均线的类型;二买二卖是均线辅助类信号,均线用于刻画回调/反弹的力度与方向 |
timeperiod | 20 | 均线周期 |
这个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 中定义的数据格式:
| 字段 | 类型 | 说明 |
|---|---|---|
| symbol | str | 标的代码 |
| id | int | 序号(从 0 开始) |
| dt | datetime | 时间 |
| freq | Freq | 频率:Freq.F1/F5/F15/F30/F60/D/W/M |
| open/close/high/low | float | 开/收/高/低价 |
| vol | float | 成交量 |
| amount | float | 成交额 |
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)。笔 文档给出的关键属性(direction、high、low、length、power_price、slope等)都可直接用于这类复核脚本。
实战要点与风控设计
继承 二买二卖 文档的实战要点,并说明其在结构上的含义:
- 二买比一买更安全:一买是抄底(趋势背驰后可能继续跌),二买是确认反转——它要求价格先走出反弹、再回调、且回调不创新低,等于让市场"再证明一次"底部结构;
- 二买的止损位明确:设在一买低点下方。从结构上讲,若价格跌穿一买低点,"回调不破底"的前提被破坏,二买失效,止损逻辑与信号失效条件天然一致,无需额外拍脑袋定止损幅度;
- 二卖同理:止盈/离场位设在一卖高点上方,反弹突破该高点则二卖结构失效。
放到完整买卖点体系中看,三者可形成互补的仓位节奏:一买承担底仓(拐点博弈,胜率依赖背驰判定),二买承担确认仓(结构确认后再介入),三买(突破中枢上沿后回调不进中枢,判定条件见 三买三卖)承担顺势加仓——三买止损设在中枢 ZG 下方,与二买"止损设在一买低点下方"一样,都是把止损锚定在结构位上。中枢边界ZG/ZD的计算(zg = min(前三笔high)、zd = max(前三笔low)、有效性zg > zd)在 中枢 文档中有完整公式与示例。
适用前提、限制与文档完整性保障
几点使用前提与限制,均以当前仓库实际内容为准:
- 依赖版本:czsc v0.9.68+;信号函数命名带版本号(如
cxt_second_bs_V230320),升级 czsc 时需确认函数名与参数签名未变; - 频率与数据量:引擎以
Freq参数化支持分钟到月线(F1~M);示例引擎要求至少 30 根 K 线冷启动,数据不足时直接输出全 0 信号,实际使用二买二卖需要足够的历史笔结构(至少出现一买/一卖及其后的回调笔); - 信号函数组合:二买二卖是"均线辅助"类信号,
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_V230320,di=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),仅供参考