news 2026/10/10 1:56:22

czsc 缠论信号源码解析:cxt_double_zs_V230311 双中枢 BS1 辅助信号的逻辑、参数与实现

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
czsc 缠论信号源码解析:cxt_double_zs_V230311 双中枢 BS1 辅助信号的逻辑、参数与实现
  • 金融科技

【免费下载链接】czsc

缠中说禅技术分析工具;缠论;股票;期货;Quant;量化交易

项目地址:https://gitcode.com/gh_mirrors/cz/czsc
点击查看免费下载

cxt_double_zs_V230311是 czsc 项目中一类典型的kline级别"辅助信号"(BS1 辅助),它基于最近 20 笔重建中枢序列,通过比较双中枢的极值关系与后一中枢内部最后两笔的时长比,识别原趋势的衰竭并输出看多/看空方向提示。本文以该信号文档为核心,结合仓库内 Rust 源码(cxt.rs、utils/cxt.rs、zs.rs)逐层拆解其判定规则,并给出可直接套用的参数模板、信号列表示例与边界条件,帮助你在策略中正确调用与解读该信号。

一、信号概览:模块归属与版本语义

项目值
模块cxt.rs(crates/czsc-signals/src/cxt.rs)
类别kline(K 线级信号)
信号全名cxt_double_zs_V230311
参数模板"{freq}_D{di}双中枢_BS1辅助V230311"
对齐说明与 Pythonczsc.signals.cxt_double_zs_V230311保持一致

版本号V230311采用"年月日"编码(2023-03-11),是 czsc 信号体系的命名惯例——同一逻辑的迭代通过日期后缀区分。该信号归入kline类别,意味着它以单周期 K 线与笔(BI)、中枢(ZS)结构为输入,在 信号注册表 中与cxt_second_bs_V230320、cxt_third_bs_V230318等买卖点辅助信号并列,注册名即cxt_double_zs_V230311,其宏标注为opcode = "CxtDoubleZsV230311"、param_kind = "CxtDoubleZsV230311"。

二、参数模板与 7 段信号命名规范

参数模板

"{freq}_D{di}双中枢_BS1辅助V230311"
  • {freq}:周期标签,例如60分钟、日线;
  • {di}:取样偏移,从倒数第di笔开始取样,默认1;
  • 后缀_BS1辅助V230311是信号第三段(k3),标明"第一类买卖点辅助 + 版本"。

信号列表示例

  • Signal('60分钟_D1双中枢_BS1辅助V230311_看多_任意_任意_0')
  • Signal('60分钟_D1双中枢_BS1辅助V230311_看空_任意_任意_0')

7 段命名解读

czsc 的 K 线级信号统一为k1_k2_k3_v1_v2_v3_n的 7 段结构。本例中:

段内容来源
k160分钟周期(c.freq)
k2D1双中枢format!("D{}双中枢", di)
k3BS1辅助V230311固定后缀
v1看多 / 看空 / 其他方向判定结果
v2任意该信号不使用
v3任意该信号不使用
n0信号周期序号

在源码中,信号通过make_kline_signal_v1(utils/sig.rs)构造,该函数把 v2/v3 固定为任意、n固定为0,只输出 v1 一个有效维度,因此该信号本质上是一个单值方向信号。

三、信号逻辑逐层拆解

原文档给出的信号逻辑共三步,结合源码可展开为更精确的五层判定:

  1. 取样:提取最近 20 笔并重建中枢序列;
  2. 双中枢有效性检查:最近两个中枢都有效(各自至少包含 2 笔);
  3. 内部时长比较:比较后一中枢内部最后两笔的时长(笔内 K 线根数);
  4. 前后中枢极值关系:比较前中枢与后中枢的最高/最低极值;
  5. 方向映射:向下笔满足衰竭条件判看多,向上笔满足衰竭条件判看空,否则返回其他。

第一步:取样最近 20 笔

let di = get_usize_param(params, "di", 1); let bis = get_sub_elements(&c.bi_list, di, 20);

get_sub_elements(utils/sig.rs)对齐 Python 切片语义:

  • di == 1时返回最后 20 笔;
  • di > 1时返回[-20-di+1 : -di+1]区间;
  • 数量不足时返回可用区间,若区间为空则直接返回其他。

di参数的作用是"跳过最新若干笔",用于规避未完成笔(UBI)的不稳定影响,默认取1即从最新完成笔开始取样。

第二步:重建中枢序列

let zss = get_zs_seq(bis);

get_zs_seq(utils/cxt.rs)按如下规则把笔序列切分为中枢序列:

  • 逐笔加入当前中枢;
  • 若出现"向上笔的高点低于前中枢下沿zd"或"向下笔的低点高于前中枢上沿zg",判定笔脱离当前中枢,于是收尾当前中枢并开启一个新中枢;
  • 否则继续延伸当前中枢。

该函数返回按时间顺序排列的中枢列表zss,信号只关心最后两个中枢(zss[zss.len() - 2]与zss[zss.len() - 1])。

第三步:双中枢有效性检查

if zss.len() >= 2 && zss[zss.len() - 2].bis.len() >= 2 && zss[zss.len() - 1].bis.len() >= 2

需要满足三个条件:

  1. 重建出的中枢序列至少有两个中枢;
  2. 倒数第二个中枢(前中枢zs1)至少由 2 笔构成;
  3. 最后一个中枢(后中枢zs2)至少由 2 笔构成。

任何一条不满足,v1 保持其他直接返回。这与文档中"需要至少形成两个有效中枢,否则返回其他"的描述一致。

第四步:内部两笔时长比较

let ts1 = zs2.bis[zs2.bis.len() - 1].bars.len(); // 后中枢最后一笔的 K 线根数 let ts2 = zs2.bis[zs2.bis.len() - 2].bars.len(); // 后中枢倒数第二笔的 K 线根数

ts1与ts2分别取后一中枢最后两笔所包含的原始 K 线数量(BI.bars),以此近似度量两笔的"时长"。核心判定为:

ts1 >= ts2 * 2

即最后一笔的时长至少是前一笔的2 倍——这是"衰竭"的量化表达:同向的最后一笔被显著拉长,说明原方向动能接近耗尽。

第五步:前后中枢极值关系与方向映射

if last_bi.direction == Direction::Down && ts1 >= ts2 * 2 && zs1.gg > zs2.gg { v1 = "看多"; } if last_bi.direction == Direction::Up && ts1 >= ts2 * 2 && zs1.dd < zs2.dd { v1 = "看空"; }

两条判定的完整条件:

方向时长条件极值条件输出
最后一笔向下ts1 >= ts2 * 2前中枢最高点zs1.gg > zs2.gg看多
最后一笔向上ts1 >= ts2 * 2前中枢最低点zs1.dd < zs2.dd看空

极值字段来自中枢结构体ZS(zs.rs):gg为中枢内所有笔的最高点、dd为最低点、zg/zd为中枢上/下沿、zz为中轴。以看多为例,其语义为:最后一笔向下且被显著拉长(衰竭),同时前中枢高点高于后中枢高点(价格重心下移后企稳于更低中枢),二者共振提示向下趋势动能耗尽,故输出看多辅助提示。

四、参数说明与边界条件

参数含义默认值说明
freq周期标签由调用方指定决定 k1 段,如60分钟、日线
di从倒数第di笔开始取样1用于跳过最新不稳定笔,di >= 1(get_sub_elements内部有断言)

返回其他的全部场景(对应 v1 =其他):

  • 取样区间为空(笔数不足,或di超出笔列表长度);
  • 中枢序列不足两个;
  • 前中枢或后中枢不足 2 笔;
  • 时长条件或极值条件任一不满足。

值得注意的是,ts1 >= ts2 * 2是必要条件——即使双中枢形态符合,只要最后一笔没有被拉长到前一笔的 2 倍以上,信号也不会触发方向提示,避免在动能未衰竭时提前发出反转信号。

五、源码级实现与工程化细节

函数签名与宏标注

#[signal( category = "kline", name = "cxt_double_zs_V230311", template = "{freq}_D{di}双中枢_BS1辅助V230311", opcode = "CxtDoubleZsV230311", param_kind = "CxtDoubleZsV230311" )] pub fn cxt_double_zs_v230311(c: &CZSC, params: &ParamView, _cache: &mut TaCache) -> Vec<Signal>

该函数接收CZSC(缠论结构分析对象,提供bi_list笔列表与freq周期)、ParamView(参数视图)与TaCache(技术指标缓存,本例未使用,故为_cache)。信号通过过程宏#[signal]自动完成注册与元数据绑定。

中枢有效性语义

虽然代码中用的是bis.len() >= 2的"最少笔数"检查,而非调用ZS::is_valid()(zs.rs,判定中枢上沿zg不低于下沿zd且每笔与中枢区间有交集),但两个条件在get_zs_seq的构造逻辑下通常是等价的——能够被独立切分出来的中枢,其构成笔必然与前中枢脱离,天然满足有效性。这一设计让判定更轻量、更贴近文档所述"有效中枢"的口径。

注册与测试验证

该信号在 registry.rs 中被列入 K 线信号注册表,并有对应的批量注册测试test_kline_registry_contains_cxt_batch2_20逐一断言注册表包含cxt_double_zs_V230311等 20 个信号(registry.rs),确保宏注册与测试预期不脱节。

六、在实际量化流程中的定位与使用

cxt_double_zs_V230311属于"辅助信号"(k3 段BS1辅助),设计意图是配合第一类买卖点(BS1)的主信号使用,而非独立下单依据。在使用时有几点建议:

  • 与主信号共振:将本信号输出的看多/看空作为过滤器,与笔、分型或买卖点主信号叠加,降低单信号误报率;
  • 周期选择:信号对笔的完整度敏感,建议在笔数充足(多于 20 笔)的周期上运行,确保取样窗口完整;
  • 参数调优:di可尝试1/2/3观察稳定性;2 倍时长比为内置硬阈值,若需调整需改动源码(当前仓库该信号不暴露该参数);
  • Python 生态对齐:Rust 实现与 Pythonczsc.signals.cxt_double_zs_V230311保持同名同逻辑,便于跨语言策略迁移与结果对账。

该信号与cxt_zhong_shu_gong_zhen_V221221(大小级别中枢共振,cxt_trader.rs)等中枢类信号同属"以中枢结构为输入"的信号族,但前者只依赖单一周期的最近 20 笔,后者需要跨周期TraderState数据,二者在数据依赖与适用场景上互补,可依据策略的多周期架构选择使用。

结语

cxt_double_zs_V230311用"双中枢极值 + 末笔时长翻倍"两个可量化的条件,把缠论中"背驰/衰竭"的定性判断落成确定性的看多/看空输出。理解它的关键在于把握三层结构:取样窗口(最近 20 笔)→ 中枢序列重建(get_zs_seq 的脱离规则)→ 双中枢内的时长与极值比较。结合 cxt.rs 的源码逐行对照,即可在自己的策略中准确引用、调参与验证该信号。

  • 金融科技

【免费下载链接】czsc

缠中说禅技术分析工具;缠论;股票;期货;Quant;量化交易

项目地址:https://gitcode.com/gh_mirrors/cz/czsc
点击查看免费下载

相关推荐

上一篇:Spring Boot中文学习指南:从入门到精通的完整路径
下一篇:WorkTool企业微信自动化机器人:基于Android无障碍服务的终极解决方案

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/10 1:56:13

无锡45号精光板精品定制厂家综合实力推荐:行业头部优选合作参考

无锡地处长三角制造业腹地&#xff0c;模具加工、自动化设备、精密机械零部件产业高度集聚&#xff0c;45号精光板作为模具底座、设备机架、精密零件的基础用材&#xff0c;市场需求常年旺盛。不少无锡采购负责人在网上搜索无锡45号精光板定制厂家无锡45号精光板靠谱供应商45号…

作者头像 李华
网站建设 2026/10/10 1:54:02

第三方计量检测专业公司实力盘点:多行业覆盖,新能源、医药、化工高壁垒赛道优势显著

在工业制造与质量管控领域&#xff0c;仪器计量校准是一项基础却常被低估的工作。无论是车间里的一把卡尺&#xff0c;还是实验室中的一台高精度分析仪&#xff0c;其测量数据的准确性都直接关系到产品质量、体系合规乃至企业信誉。本文将从行业常识、市场趋势、避坑要点、品牌…

作者头像 李华
网站建设 2026/10/10 1:53:42

省市区三级联动Excel表格:行政编码底表与数据库导入实战

简介&#xff1a;这是一份面向数据分析人员、Excel 使用者及 .NET 开发者的省市区三级联动数据资源&#xff0c;核心解决中国行政区划数据在表格与程序中按省、市、区逐级筛选联动的需求&#xff0c;可用于数据管理、统计分析和下拉选择框开发。压缩包共 21 个文件&#xff0c;…

作者头像 李华
网站建设 2026/10/10 1:53:04

LangChain三款神器实战,打造能查能搜能算的AI Agent

文章目录前言一、数据库查询神器&#xff1a;SQLDatabase&#xff08;PostgreSQL 实战&#xff09;1.1 这玩意儿是干嘛的1.2 安全这块&#xff0c;拿捏得死死的1.3 看看效果二、消除大模型幻觉&#xff1a;DuckDuckGo 联网检索工具2.1 先说幻觉这回事2.2 一行接入&#xff0c;拒…

作者头像 李华
网站建设 2026/10/10 1:53:00

软考中级软件设计师上午题考点解析:笔记拆解与冲刺复习策略

简介&#xff1a;软件设计师中级考试&#xff08;软考&#xff09;的知识点整理文档&#xff0c;面向正在备考的考生&#xff0c;用于快速梳理核心理论与高频考点。文档以docx格式呈现&#xff0c;仅1个文件&#xff0c;压缩后大小31.83MB&#xff0c;便于下载后离线阅读与打印…

作者头像 李华