金融科技【免费下载链接】czsc缠中说禅技术分析工具缠论股票期货Quant量化交易项目地址https://gitcode.com/gh_mirrors/cz/czsc点击查看免费下载本文档以 .claude/skills/signal-functions/references/signals/tas_macd_bc_ubi_V230804.md 为骨架结合 czsc 仓库中 crates/czsc-signals/src/tas.rs 的源码实现展开。tas_macd_bc_ubi_V230804是 czsc缠中说禅技术分析信号体系中的一个K 线级klineMACD 背驰观察信号它把「未完成笔UBI」的方向与极值位置、最近 6 笔构造的中枢以及 MACD 的 DIF 动能三者结合起来用于捕捉行情末端动能衰减的背驰机会。读完本文你将掌握该信号的参数模板与信号字符串含义、三步判读逻辑的源码级实现细节以及如何在自己的 czsc 策略或 Python 环境中查询、配置和使用它。信号速览模板、类别与输出该信号归属于tas模块技术指标类信号源码位于 crates/czsc-signals/src/tas.rs并通过#[signal]宏声明为category klineK 线级信号区别于 trader 交易级信号。参数模板唯一无额外参数{freq}_MACD背驰_UBI观察V230804其中{freq}为 K 线周期占位符可填入1分钟、60分钟、日线、周线等周期名称。完整的信号字符串遵循 czsc 通用的 7 段式格式k1_k2_k3_v1_v2_v3_score参见 signal-functions 技能说明60分钟_MACD背驰_UBI观察V230804_空头_任意_任意_0 ├─k1─────┤ ├─k2───┤ ├k3───────────┤ ├v1─┤ ├v2─┤ ├v3─┤ ├s┤信号列表示例Signal(60分钟_MACD背驰_UBI观察V230804_空头_任意_任意_0)Signal(60分钟_MACD背驰_UBI观察V230804_多头_任意_任意_0)信号状态值v1共有三种取值空头、多头以及数据不足时的默认值其他。v2、v3固定为任意score固定为0。从源码的段构造看tas.rsk1 czsc.freq.to_string()当前分析周期k2 MACD背驰信号大类k3 UBI观察V230804版本标签v1初始为其他仅在满足背驰条件时被改写为空头或多头。信号逻辑三步判读文档定义的核心逻辑共三步原文如下使用未完成笔UBI方向与极值位置在最近 6 笔中构造中枢并比较 UBI 末段 DIF 与历史对应笔 DIF上行 UBI DIF 走弱判空头下行 UBI DIF 抬升判多头。补充背景知识在缠论体系中「未完成笔UBI, Unfinished BI」是指当前正在生长、尚未被后续走势确认结束的一笔。czsc 在 crates/czsc-core/src/analyze/mod.rs 中维护bars_ubi: VecNewBar保存未完成笔对应的原始 K 线并通过get_ubi_fxs()analyze/mod.rs从中提取分型。背驰Divergence的本质是价格创新高/新低但代表动能的指标此处为 MACD 的 DIF未能同步创出新高/新低从而提示趋势动能衰竭。源码实现纵深解析下面以 crates/czsc-signals/src/tas.rs 的实现为主线逐段拆解tas_macd_bc_ubi_v230804的完整执行流程。前置条件与快速退出函数首先以固定参数12 / 26 / 9更新 MACD 缓存cache_key MACD12#26#9见 tas.rs再构建id_to_idx的 K 线索引映射随后进入一系列数据充分性检查任何一项不满足都会直接返回v1 其他的信号检查项源码位置含义ubi_fxs不存在或为空tas.rs对齐 Pythonnot ubi语义分型为空视为 UBI 不可用czsc.bi_list.len() 7或 UBI 原始 K 线数 7tas.rs已完成笔不足 7 笔时无法构造参照最近 6 笔取数不足 6 笔tas.rsget_sub_elements(czsc.bi_list, 1, 6)从倒数第 1 笔起取 6 笔中枢不合法tas.rs最近 5 笔构造的中枢ZS::new(...)未通过is_valid()可见该信号对数据量的要求相当严格至少需要 7 笔已完成笔 7 根未完成笔 K 线且最近 5 笔能构成一个有效中枢否则一律输出其他。这一点在实盘/回测中意味着行情刚启动、笔数积累不足的阶段该信号会自动保持静默不会产生误导性方向判断。UBI 数据口径方向与极值UBI 相关数据全部取自原始 K 线口径RawBarubi_raw_bars把czsc.bars_ubi中每个NewBar的elements平铺展开tas.rsubi_high/ubi_low对 UBI 全部原始 K 线的high/low取极值tas.rsubi_direction未完成笔方向与最后一笔已完成笔方向相反——若czsc.bi_list.last()方向为Down则 UBI 方向取Up反之取Downtas.rs。同时从最近 6 笔bis中求出最高点gg与最低点dd作为中枢区间的上下边界tas.rs。中枢构造与 1/4 分位阈值中枢由最近 5 笔bis[bis.len()-5..]构造tas.rs并以区间高度的 1/4 作为「突破判定」阈值上行分支ubi_direction Up要求ubi_high gg - (gg - dd) / 4.0即 UBI 高点已深入中枢区间上方 1/4 区域tas.rs下行分支ubi_direction Down要求ubi_low dd (gg - dd) / 4.0即 UBI 低点已深入中枢区间下方 1/4 区域tas.rs。这一条件可以理解为只有 UBI 的极值明显偏离中枢核心区间时才谈得上创新高/新低意义上的背驰若 UBI 仍在区间中段震荡则不触发观察。DIF 比较末段动能 vs 历史对应笔动能这是整个信号的核心计算分为动能取值与比较两个环节。UBI 末段 DIFb5_dif取 UBI 原始 K 线最后 5 根ubi_raw_bars[ubi_raw_bars.len()-5..]通过snapshot_dif_values_from_raw_barstas.rs逐根计算 DIF 快照值然后上行分支取最大值f64::NEG_INFINITY折叠求 maxtas.rs下行分支取最小值f64::INFINITY折叠求 mintas.rs。历史对应笔 DIFod_dif取最近 6 笔中倒数第 4 笔b2与倒数第 2 笔b4tas.rs各自的起始分型fx_b经snapshot_dif_values_from_fxtas.rs展开其原始 K 线并计算 DIF 快照同样按方向取极值合并上行取 max下行取 min。判定规则即文档第 3 步的精确形式分支条件输出上行0.0 b5_dif b5_dif od_dif空头下行0.0 b5_dif b5_dif od_dif多头上行背驰DIF 仍为正动能尚未转负但 UBI 末段 DIF 峰值已低于历史上涨笔的 DIF 峰值即价格创新高而动能走弱预示上涨衰竭 → 判空头下行背驰DIF 仍为负但 UBI 末段 DIF 谷值已高于历史下跌笔的 DIF 谷值负数抬高即价格创新低而下跌动能衰减预示下跌衰竭 → 判多头。条件中同时要求 DIF 符号正/负未翻转说明该信号只识别「同向动能减弱」的经典背驰而不把 DIF 已穿越零轴的状况计入。输出封装最终通过make_kline_signal_v1(k1, k2, k3, v1)生成单条 K 线级信号tas.rs即上文 7 段式字符串中的形态。由于本信号只有v1一个维度v2、v3固定为任意。MACD 缓存与快照计算机制值得单独说明的是 DIF 的获取方式它体现了 czsc 信号框架的工程化设计缓存复用函数开头调用update_macd_cache(czsc, MACD12#26#9, 12, 26, 9, cache)tas.rsMACD 序列按cache_key存入共享的TaCache同一分析批次内多个 MACD 类信号可复用同一份序列避免重复计算快照回填snapshot_dif_values_from_raw_bars内部调用macd_snapshot_field_valuetas.rs定义于 crates/czsc-signals/src/utils/ta.rs并通过snapshot_overrides: HashMapi32, (f64, f64, f64)记录已回填的 K 线 id 的(DIF, DEA, MACD)快照。由于 UBI 与已确认笔之间存在 K 线重叠快照回填机制保证了同一根 K 线在多次取数中取到一致的 DIF 值有限值过滤取数后.filter(|x| x.is_finite())剔除 NaN/Inf 等无效值防止未成熟区间的指标值污染比较结果tas.rs。参数说明与对齐说明参数说明无额外参数。信号行为完全由 K 线结构笔、中枢、UBI与固定 MACD 参数12 / 26 / 9决定不需要也不接受用户传入th、di等配置项对齐说明UBI 原始 K 线口径与 Pythontas_macd_bc_ubi_V230804一致。Rust 实现中通过「ubi_fxs为空即视为 UBI 不可用」tas.rs显式对齐 Python 的not ubi语义确保两条实现路径的边界条件行为一致。实际使用查询、配置与引用从 Python 侧查询该信号czsc 通过 PyO3 向 Python 暴露信号注册表。在安装了 Rust 扩展rs_czsc的环境中可以from rs_czsc import list_all_signals, derive_signals_config # 列出所有注册信号按 name 过滤 signals list_all_signals(include_klineTrue, include_traderFalse) ubi_sig [s for s in signals if s[name] tas_macd_bc_ubi_V230804] # 返回项含 {name, param_template, category, namespace} # 从信号字符串反推 signals_config可用于 CzscTrader / CzscSignals 配置 config derive_signals_config([60分钟_MACD背驰_UBI观察V230804_多头_任意_任意_0])注册信息可对照源码 crates/czsc-signals/src/registry.rs该信号以tas_macd_bc_ubi_V230804名义登记在册。查看信号目录与明细仓库提供两个脚本便于整体浏览信号体系scripts/dump_signal_catalog.py导出全部信号的目录名称、模板、类别、命名空间scripts/dump_signal_details.py导出每个信号函数的详细说明。信号函数参考手册的完整索引见 .claude/skills/signal-functions/SKILL.md其中tas模块59 个信号的汇总页为 signals-tas.md。同族信号对比tas_macd_bc_ubi_V230804属于tas_macd_bcMACD 背驰信号家族仓库中同目录下还收录了多个相关版本可在选择信号时对照参考tas_macd_bc_V230803.md 与 tas_macd_bc_V230804.md基于已完成笔的 MACD 背驰观察tas_macd_bc_V240307.md更新版本本文主角tas_macd_bc_ubi_V230804唯一以未完成笔UBI为观察对象的变体其优势在于能更早地在笔尚未确认结束时就捕捉背驰迹象代价是数据充分性要求更高至少 7 笔 有效中枢。小结信号的使用边界综合文档与源码使用tas_macd_bc_ubi_V230804时需牢记三点它是观察型信号而非触发型信号输出仅空头/多头/其他三态且v2、v3、score恒为占位值适合作为多信号组合中的动能过滤或确认因子而非独立买卖点对数据长度敏感笔数不足 7 笔或最近 5 笔无法构成有效中枢时恒定输出其他在策略中应将其视为「条件不满足」而非「看空」口径与 Python 版严格对齐UBI 取原始 K 线口径MACD 固定12/26/9若在 Rust / Python 双端同时使用可预期得到一致的信号结果。赞分享金融科技【免费下载链接】czsc缠中说禅技术分析工具缠论股票期货Quant量化交易项目地址https://gitcode.com/gh_mirrors/cz/czsc点击查看免费下载相关推荐缠论一买一卖实战指南背驰识别、czsc 信号函数与缠论信号引擎落地缠论一买一卖实战指南背驰识别、czsc 信号函数与缠论信号引擎落地 导读 本文基于本仓库缠论chanlunSkill 包中的 一买一卖信号文档 http金融科技示例工程czsc 缠论信号解析cxt_bi_base_V230228 笔基础状态信号实现与实战czsc 缠论信号解析cxt_bi_base_V230228 笔基础状态信号实现与实战 本文聚焦 czsc 缠论量化框架中的 K 线级基础信号 cxt_bi_金融科技czsc 缠论信号解析byi_symmetry_zs_V221107 对称中枢识别信号完整指南czsc 缠论信号解析byi_symmetry_zs_V221107 对称中枢识别信号完整指南 本篇技术指南聚焦 czsc 项目 Rust 版信号库中的 by金融科技上一篇终极围棋AI分析工具LizzieYzy从零开始掌握职业棋手级复盘技巧下一篇React Stack Reconciler 挂载流程解析第 6 部分mountChildren 与初始子组件挂载全链路创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考