czsc 均线系统粘合/扩散信号 tas_ma_cohere_V230512 完全解析:SMA 组合收敛与发散的状态识别

发布时间:2026/10/10 1:16:59
czsc 均线系统粘合/扩散信号 tas_ma_cohere_V230512 完全解析:SMA 组合收敛与发散的状态识别 金融科技【免费下载链接】czsc缠中说禅技术分析工具缠论股票期货Quant量化交易项目地址https://gitcode.com/gh_mirrors/cz/czsc点击查看免费下载导读本文以 czsc 仓库中tas_ma_cohere_V230512信号文档为骨架完整拆解均线系统粘合/扩散状态信号的参数模板、判定逻辑与 Rust 源码级实现。该信号属于kline类 K 线信号通过多周期 SMA 组合的相对带宽波动将均线系统的粘合收敛与扩散发散两类典型状态量化为可直接参与策略组合的信号值。读完本文你将掌握该信号的参数含义、触发阈值与覆盖顺序理解其在 tas.rs 中的完整实现链路并知道如何把它接入信号组合与策略回测。信号概述用均线带宽刻画市场蓄势与发力在缠论与技术分析的量化实践中多均线系统如 5/13/21/34/55 五条 SMA既是趋势的参照系也是震荡的度量尺当各周期均线彼此纠缠、间距收窄时市场往往处于蓄势阶段一旦突破往往伴随趋势性行情当均线系统快速张开、间距拉大时市场则进入趋势扩散阶段。tas_ma_cohere_V230512正是对这一现象的显式建模。该信号位于 tas.rs 模块category kline即仅依赖 K 线数据即可计算的纯 K 线级信号不依赖笔、分型等缠论结构也不依赖仓位状态。源码中其版本号V230512与#[signal]宏声明一致见 tas.rs且在 registry.rs 的 kline 信号注册清单中被显式断言保证运行时可在SIGNAL_REGISTRY中按名称检索。参数模板一条信号字符串承载全部配置信号的参数模板定义在源码属性中{freq}_D{di}SMA{ma_seq}_均线系统V230512模板中各个字段的含义如下模板字段含义默认值说明{freq}K 线周期级别无由CZSC分析对象自带如60分钟、日线{di}倒数第di根 K 线作为信号计算截止点1用于规避未来函数默认取最新一根{ma_seq}均线周期序列#分隔5#13#21#34#55参与带宽计算的 SMA 周期组合均线系统V230512信号类别名k3固定标识本信号家族的版本在源码中参数通过ParamView读取见 params.rslet di get_usize_param(params, di, 1); let ma_seq_str get_str_param(params, ma_seq, 5#13#21#34#55); let ma_seq: Vecusize ma_seq_str .split(#) .filter_map(|x| x.parse::usize().ok()) .collect();ma_seq以#分隔并逐个解析为usize若解析结果为空非法输入函数直接返回其他状态见 tas.rs。di 0或di bars_raw.len()同样视为非法输入返回其他。信号逻辑四步计算还原带宽波动原文档给出了四步逻辑下面结合源码逐条展开并补充源码中的边界处理。第 1 步计算各条 SMA构造均线带宽率序列先为ma_seq中的每个周期计算 SMA并构造最近 100 根 K 线的带宽率序列ret max(各条SMA) / min(各条SMA) - 1源码实现tas.rsfor ma in ma_seq { let key format!(SMA#{}, ma); update_ma_cache(czsc, key, SMA, *ma, cache); } // ... for bar in bars { // 取该根K线上所有SMA的最小值与最大值 let mut min_v f64::INFINITY; let mut max_v f64::NEG_INFINITY; for ma in ma_seq { let val cache.series.get(key).and_then(|s| s.get(idx)).copied().unwrap_or(f64::NAN); min_v min_v.min(val); max_v max_v.max(val); } let ret max_v / min_v - 1.0; ret_seq.push(ret); }这里有两个值得注意的工程细节SMA 缓存复用均线序列并不直接计算而是写入TaCache见 types.rs。update_ma_cache见 ta.rs会按 bar id 做增量维护只有新 K 线到来时才追加计算尾部窗口避免每次全量重算缓存 key 为SMA#{period}。SMA 计算口径对齐 TA-Lib底层calc_sma_cache_style见 ta.rs采用先减旧值、再加新值的滑动窗口求和顺序注释明确说明该顺序影响极小浮点误差在边界位上的符号进而影响分类信号——这与 Python 端 TA-Lib SMA 保持逐位一致。窗口长度为 100源码通过get_sub_elements(czsc.bars_raw, di, 100)截取tas.rs。get_sub_elements的语义与 Pythonget_sub_elements对齐di 1返回最后 n 个元素di 1返回[-n-di1 : -di1]区间见 sig.rs。第 2 步用前 80 根计算带宽率标准差取ret_seq前 80 根即ret_seq.len() - 20之前的部分作为基准段计算均值与标准差let base ret_seq[..ret_seq.len() - 20]; let mean base.iter().sum::f64() / base.len() as f64; let var base.iter().map(|x| (x - mean).powi(2)).sum::f64() / base.len() as f64; let ret_std var.sqrt(); if !ret_std.is_finite() { return make_kline_signal_v1(k1, k2, k3, v1); }注意源码对ret_std做is_finite()检查若基准段不足或数值异常导致标准差为NaN/Inf直接返回其他避免污染下游策略。第 3 步最近 20 根中低波动占比达到 16 次 → 粘合取ret_seq最后 20 根tail统计其中ret 0.5 * ret_std的次数达到 16 次判为粘合let tail ret_seq[ret_seq.len() - 20..]; let tight tail.iter().filter(|x| **x 0.5 * ret_std).count(); if tight 16 { v1 粘合; }第 4 步最近 20 根中高波动占比达到 16 次 → 扩散覆盖前者在同一tail段中统计ret 1.0 * ret_std的次数达到 16 次判为扩散且覆盖前面的粘合判定let spread tail.iter().filter(|x| **x ret_std).count(); if spread 16 { v1 扩散; }覆盖的实现方式非常简洁两段代码顺序执行、共用同一个v1变量扩散判定在粘合之后一旦命中即覆盖。这也与原文档扩散覆盖前者的说明一致。由于两个条件均要求 20 根中命中 16 次80% 占比理论上存在二者同时不满足、同时满足对应极端震荡市或仅其一满足三种情况覆盖顺序保证了结果唯一。信号值产出7 段标准格式无论命中与否最终统一通过make_kline_signal_v1产出sig.rspub fn make_kline_signal_v1(k1: str, k2: str, k3: str, v1: str) - VecSignal { make_signal7(k1, k2, k3, v1, 任意, 任意, 0) }底层make_signal7sig.rs拼接出标准 7 段信号字符串k1_k2_k3_v1_v2_v3_score并调用Signal::from_str严格校验格式非法时直接 panic保证信号字典一致性。在本信号中k1 freq、k2 D{di}SMA{ma_seq}、k3 均线系统V230512v2、v3固定为任意score固定为0。信号列表示例原文档给出的两条示例信号即默认参数下60分钟级别产生的完整信号字符串Signal(60分钟_D1SMA5#13#21#34#55_均线系统V230512_粘合_任意_任意_0) Signal(60分钟_D1SMA5#13#21#34#55_均线系统V230512_扩散_任意_任意_0)对应的 7 段拆解k1k2k3v1v2v3score60分钟D1SMA5#13#21#34#55均线系统V230512粘合任意任意060分钟D1SMA5#13#21#34#55均线系统V230512扩散任意任意0当条件不满足时v1为其他即同样存在第三条隐性输出Signal(60分钟_D1SMA5#13#21#34#55_均线系统V230512_其他_任意_任意_0)参数说明参数含义默认值取值范围/约束di倒数第di根 K 线作为计算截止点1 1且 bars_raw.len()为0或超界时返回其他ma_seq均线周期序列#分隔5#13#21#34#55至少 1 个合法周期解析为空返回其他此外还有两个源码级隐含约束配置时需要注意数据量下限要求bars_raw.len() max(ma_seq) di 10否则数据不足以支撑最长均线的有效值直接返回其他tas.rs。窗口完整性截取 100 根窗口后要求bars.len() 20且ret_seq至少 20 项、基准段base非空否则返回其他tas.rs。这意味着实盘中新上市品种或数据不连续的品种在窗口未满时不会产生有效信号。对齐说明与 Python 版本保持口径一致原文档明确阈值与覆盖顺序对齐 Pythontas_ma_cohere_V230512。从源码注释tas.rs与实现细节看对齐不仅停留在阈值层面0.5 * ret_std与1.0 * ret_std两个阈值常量完全一致粘合 → 扩散的覆盖判定顺序一致ret max/min - 1的带宽率口径一致get_sub_elements、bar_index_map等工具函数的切片语义在 sig.rs 中显式注释对齐 Python 语义SMA 计算刻意复刻 TA-Lib 的累计顺序先减旧值再加新值将浮点误差边界也纳入对齐范围。这意味着同一份参数在同一 K 线序列上Rust 端与本仓库 Python 端输出的信号字符串应当逐位一致可以放心地在跨语言策略中进行一致性校验。注册与调用信号如何进入策略体系tas_ma_cohere_V230512并非孤立函数而是通过 czsc 的信号注册体系对外暴露#[signal(...)]过程宏见 czsc-signal-macros/lib.rs为函数生成描述符并通过inventory::submit!收集到全局注册表运行时 registry.rs 中的SIGNAL_REGISTRYLazyLockHashMapstatic str, SignalMeta按名称索引所有 kline 信号SignalMeta携带函数指针与参数模板registry.rs 的注册断言测试显式将tas_ma_cohere_V230512列入expected清单任何注册缺失都会导致测试失败engine_v2/catalog/mod.rs 复用SIGNAL_REGISTRY生成策略信号目录供 czsc-trader 引擎在组合信号与回测时按名称查表调用。因此实际使用中只需要在信号组合配置里引用形如60分钟_D1SMA5#13#21#34#55_均线系统V230512_粘合_任意_任意_0的完整信号字符串即可引擎会通过注册表自动定位到tas_ma_cohere_v230512函数并传入ParamView参数。实战要点如何配置与组合使用1. 合理选择ma_seq组合默认5#13#21#34#55为斐波那契风格的短中长周期组合适合日线及以上级别。若在更小周期如分钟级使用可考虑缩短最长周期以降低max(ma_seq) di 10的数据量门槛避免窗口不足导致长期输出其他。2.di与未来函数规避默认di 1表示以最新一根 K 线收盘后计算适合即时触发类策略。做历史回放或需要确认后一根再决策的场景可将di调大信号计算整体后移规避未来函数风险。3. 粘合/扩散的组合语义粘合可视为蓄势信号多均线收拢常出现在盘整末端可配合突破类信号如价格上穿最长均线构成入场条件扩散可视为趋势进行中信号均线系统张开多用于趋势跟踪的持仓确认或作为加仓/减仓的状态过滤两者共用一个v1且互斥扩散覆盖粘合在因子正交性上天然不与同类别其他 kline 信号冲突适合作为策略的状态层因子。4. 注意数据量前提如前所述信号对历史数据长度有硬性要求最长均线周期 110 根以上窗口。在回测与实盘接入时应确保品种数据长度满足约束否则前期输出将全部为其他可能被策略误判为无状态。总结tas_ma_cohere_V230512是 czsc 均线族信号中对多均线系统整体形态的量化表达通过 100 根窗口内多周期 SMA 带宽率的波动率变化将市场划分为粘合、扩散与其他三类状态。其实现以TaCache增量缓存为性能底座、以 TA-Lib 口径的 SMA 为保证、以 7 段信号格式为统一出口并通过SIGNAL_REGISTRY无缝接入策略引擎。理解它的判定阈值0.5 × std与1.0 × std、覆盖顺序扩散覆盖粘合与数据量前提是正确使用该信号的第一步将其作为状态层因子与突破、趋势类信号组合则是在实战中发挥其价值的典型路径。赞分享金融科技【免费下载链接】czsc缠中说禅技术分析工具缠论股票期货Quant量化交易项目地址https://gitcode.com/gh_mirrors/cz/czsc点击查看免费下载相关推荐czsc 信号函数实战coo_kdj_V230322 均线与 KDJ 配合多空信号完全解析czsc 信号函数实战coo_kdj_V230322 均线与 KDJ 配合多空信号完全解析 coo_kdj_V230322 是 czsc缠中说禅技术分析工具金融科技GitBook 卡片视图空字段隐藏hide-empty-card-fields 补丁的实现原理与逐类型判定GitBook 卡片视图空字段隐藏hide empty card fields 补丁的实现原理与逐类型判定 在 GitBook 文档站点的表格卡片视图Car金融科技czsc 信号体系详解bar_shuang_fei_V230507 双飞涨停形态K 线三日组合看多信号czsc 信号体系详解bar_shuang_fei_V230507 双飞涨停形态K 线三日组合看多信号 导读 本文聚焦 czsc 量化交易框架中 bar金融科技上一篇使用 workerd 驱动未来的Web服务下一篇探索游戏开发新纪元Piccolo Engine创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于本文作者

来自尧图内容编辑团队

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

尧图内容编辑团队

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

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

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

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

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

网站改版的5个关键决策

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

获取专属建站方案

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

立即免费咨询