Baike.dev
All toolsAI codingTrendingOpen sourceNewsSubmit
Log in
< Back to tools
C

czsc

> 编程语言
Open source

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

5.7K stars0 likes0 views
WebsiteGitHub

About

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

# czsc - 缠中说禅技术分析工具 **[项目文档](https://s0cqcxuy3p.feishu.cn/wiki/wikcn3gB1MKl3ClpLnboHM1QgKf)** | **[投研数据共享](https://s0cqcxuy3p.feishu.cn/wiki/wikcnzuPawXtBB7Cj7mqlYZxpDh)** | **[信号函数编写规范](https://s0cqcxuy3p.feishu.cn/wiki/wikcnCFLLTNGbr2THqo7KtWfBkd)** | **[DEVIN生成的文档](https://deepwiki.com/waditu/czsc/1-overview)**
胜可知 · 大模型量化策略研究平台(内测)
使用大模型辅助量化策略研究,当前重点支持时序量价择时策略


邀请码:5862EDBH2H9CDTGZ

新手路线 · 研究方法 · 使用案例 · 产品介绍
> **1.0.X 版本开始,缠论核心算法(分型、笔、中枢等)已全部迁移到 Rust 实现,通过 PyO3 扩展(`czsc._native`)暴露给 Python。** 需要了解旧 Python 实现逻辑的,可查看 [0.9.X](https://github.com/waditu/czsc/tree/v0.9.69) 版本。 > [czsc_skills](https://github.com/zengbin93/czsc_skills) > 源于[缠中说缠博客](http://blog.sina.com.cn/chzhshch),原始博客中的内容不太完整,且没有评论,以下是网友整理的原文备份 * 备份网址1:http://www.fxgan.com * 备份网址2:https://chzhshch.blog * 已经开始用czsc库进行量化研究的朋友,欢迎[加入飞书群](https://applink.feishu.cn/client/chat/chatter/add_by_link?link_token=0bak668e-7617-452c-b935-94d2c209e6cf),快点击加入吧! * [B站视频教程合集(持续更新...)](https://space.bilibili.com/243682308/channel/series) ## 架构概览 CZSC 1.0 采用 **Rust + Python 混合架构**: ``` … ``` 底层 Rust workspace 包含 9 个 crate:`czsc` / `czsc-core` / `czsc-derive` / `czsc-signals` / `czsc-trader` / `czsc-utils` / `czsc-ta` / `czsc-signal-macros` / `czsc-python`(PyO3 绑定入口)。 ## 项目贡献 * 缠论的 `分型、笔` 的自动识别,由 Rust 实现并通过 `czsc._native` 暴露 * 定义并实现 `信号-事件-交易` 量化交易逻辑体系,事件通过 `signals_all/signals_any/signals_not` 实现信号的逻辑组合 * 定义并实现了 220+ 信号函数(Rust 实现),见 `czsc._native.signals` * 缠论多级别联立决策分析交易,详见 `CzscTrader` * HTML 可视化(plotly + lightweight-charts):`czsc.utils.plotting.{kline,weight,lightweight}.*` ## 安装使用 **注意:** Python 版本必须 **≥ 3.10** 从 PyPI 安装预编译版本(推荐): ```bash pip install czsc -U ``` 使用 `uv` 安装(推荐开发环境): ```bash uv pip install czsc ``` 从源码构建(需要 Rust 工具链和 maturin): ```bash # 安装 Rust:https://rustup.rs/ # 安装 maturin pip install maturin # 克隆并构建 git clone https://github.com/waditu/czsc.git cd czsc maturin develop --release ``` > **Rust 构建环境约束**:底层依赖 `pyo3` / `pyo3-stub-gen` 0.22 要求 Python ≥ 3.10。 > 当系统默认 Python 低于 3.10 时,请通过环境变量显式指定: > > ```bash > export PYO3_PYTHON=$(which python3.12) # 或任意 3.10+ 的解释器 > ``` > > 否则 `cargo build` / `cargo test` 会在 `crates/czsc-python/build.rs` 提前 panic 并给出修复建议。 > 用 `uv sync --extra dev` 走 UV 流程时,UV 会自动选择项目声明的 Python,不需要额外设置。 ## 快速开始 ### 核心缠论分析 ```python import czsc from czsc import CZSC, Freq, format_standard_kline from czsc.mock import generate_symbol_kines # 生成模拟 K 线数据 df = generate_symbol_kines('000001', '30分钟', '20240101', '20240601') # 转换为 RawBar 对象列表 bars = format_standard_kline(df, freq=Freq.F30) # 创建 CZSC 分析对象(自动识别分型、笔、中枢) czsc_obj = CZSC(bars) print(f"笔数量:{len(czsc_obj.bi_list)}") print(f"中枢数量:{len(czsc_obj.zs_list)}") ``` ### K 线合成与多级别分析 ```python from czsc import BarGenerator, Freq # 使用 BarGenerator 进行 K 线合成 bg = BarGenerator(base_freq='1分钟', freqs=['5分钟', '30分钟', '日线']) for bar in raw_bars: bg.update(bar) # 获取各周期 K 线 bars_5m = bg.bars['5分钟'] bars_30m = bg.bars['30分钟'] ``` ### 信号生成 ```python from czsc import generate_czsc_signals, get_signals_config, get_signals_freqs # 配置信号序列(使用 Rust 实现的信号函数) signals_seq = [ "czsc._native.signals.bar.bar_end_V230331", "czsc._native.signals.cxt.cxt_bi_status_V230101", ] # 解析信号所需的周期配置 freqs = get_signals_freqs(signals_seq) config = get_signals_config(signals_seq) # 生成信号序列 results = generate_czsc_signals(bars, signals_seq) ``` ### 权重回测 ```python from czsc import WeightBacktest from czsc.mock import generate_klines_with_weights # 生成带权重的模拟数据 dfw = generate_klines_with_weights(seed=42) # 运行权重回测 wb = WeightBacktest(dfw, fee_rate=0.0002) print(wb.stats) # 回测统计汇总 ``` ### 策略研究 ```python from czsc import run_research, run_replay # 单品种回放 run_replay(bars, signals_seq, pos_seq, res_path='./results/') # 批量品种研究 run_research(symbols, signals_seq, pos_seq, res_path='./results/') ``` ### 缠论可视化与回测报告 ```python # 缠论 K 线(多周期联立,自包含 HTML,离线即可打开) from czsc.utils.plotting.lightweight import plot_czsc, plot_czsc_trader html = plot_czsc(c, output="html") # 单周期 plot_czsc_trader(ct, output="html", path="trader.html") # 多周期 # 回测 HTML 报告:用 wbt.generate_backtest_report 一键产出 from wbt import generate_backtest_report generate_backtest_report(df=dfw, output_path="report.html", weight_type="ts") ``` ## 使用案例 更多端到端案例汇总见飞书 wiki:[CZSC 1.0.X 版本使用说明和案例](https://s0cqcxuy3p.feishu.cn/wiki/X0mAwSZyqiuebek2EUacbyPMnDd)。 | 序号 | 案例 | 一句话介绍 | |------|------|------------| | 1 | [基于 Event 的策略回测 + wbt HTML 报告](https://s0cqcxuy3p.feishu.cn/wiki/Li7ewsbReiQlWokEEVpcvLjznJU) | 5 行命令跑通 Event → Position → 回测 → 可交互 HTML 报告的完整闭环。 | | 2 | [lightweight_charts 缠论可视化](https://s0cqcxuy3p.feishu.cn/wiki/VF7Gwq3N8iuplckG1Tmcmp1Qn3d) | 几行代码把缠论结构(分型/笔/线段/中枢)导出为自包含离线 HTML,便于分享与嵌入。 | | 3 | [把信号函数画到 K 线主图(plot_czsc_signals)](https://s0cqcxuy3p.feishu.cn/wiki/ULxhwFyVkiavqhkZ2Xkc0N3fnYc) | 把信号触发点叠在 K 线主图上,直观调试 signals_config 与多周期联立。 | | 4 | [性能基准测试:在本地复现 CZSC / CzscTrader 吞吐量](https://s0cqcxuy3p.feishu.cn/wiki/ReRfw9WUjiVgEckZbMxcT87WnRc) | 一行命令本地评估吞吐量,配套关键指标速查表,用于容量规划与加速效果核对。 | | 5 | [信号函数模块深入介绍](https://s0cqcxuy3p.feishu.cn/wiki/WxU8wKTBViekKbkCyKzcwa7SnJd) | 系统讲解 czsc-signals 架构与 246 个信号函数的模块划分、参数模板、信号表达示例。 | ## 核心 API 一览 | 类型 | 符号 | 说明 | |------|------|------| | **缠论对象** | `CZSC`, `FX`, `BI`, `ZS` | 缠论核心数据结构(Rust) | | **K线对象** | `RawBar`, `NewBar`, `BarGenerator` | K线与合成器(Rust) | | **枚举** | `Freq`, `Mark`, `Direction`, `Operate` | 方向/频率等枚举(Rust) | | **信号/事件** | `Signal`, `Event`, `Position` | 信号与持仓逻辑(Rust) | | **分析工具** | `check_fx`, `check_bi`, `remove_include` | 分型/笔校验工具(Rust) | | **TA算子顶层别名** | `czsc.ema`, `czsc.sma`, `czsc.rolling_rank`, `czsc.boll_positions`, `czsc.ultimate_smoother` | 技术指标算子顶层别名(Rust) | | **交易器** | `CzscTrader`, `CzscSignals` | 多级别交易决策(Rust) | | **信号生成** | `generate_czsc_signals` | 批量信号生成(Rust) | | **权重回测** | `WeightBacktest` | 权重序列回测(来自 wbt) | | **策略** | `CzscStrategyBase`, `CzscJsonStrategy` | 策略封装(Python) | | **模拟数据** | `generate_symbol_kines` | 测试用 K线数据(来自 wbt) | | **格式转换** | `format_standard_kline` | DataFrame → RawBar 列表 | ## 数据源连接器 `czsc.connectors` 提供多个数据源适配器: | 模块 | 数据源 | 说明 | |------|--------|------| | `tq_connector.py` | 天勤(TQSdk) | 期货实时/历史行情 | | `ts_connector.py` | Tushare | A股历史数据 | | `ccxt_connector.py` | CCXT | 数字货币交易所 | | `local_data.py` | 投研数据本地缓存 | CZSC 共享数据本地读取入口 | ## 可视化(HTML 输出) 可视化统一以 plotly + lightweight-charts 输出 HTML: | 模块 | 功能 | |------|------| | `czsc.utils.plotting.kline` | 单周期 K 线 + 缠论结构(plotly Figure) | | `czsc.utils.plotting.weight` | 权重时序图(plotly Figure) | | `czsc.utils.plotting.lightweight` | lightweight-charts 自包含 HTML,多周期联立 + 信号叠加 | | 累计收益 / 回撤 / 月度热力图 / 综合回测概览 | 改用 `wbt.generate_backtest_report` 或直接 plotly,见 [`docs/migration/cleanup-non-czsc-core.md`](docs/migration/cleanup-non-czsc-core.md) | 使用 `plot_czsc`、`plot_czsc_trader` 或 `plot_czsc_signals` 生成自包含 HTML 后,可直接在浏览器中打开。 ## 相关项目(生态依赖) czsc 在权重回测、权重落地与 TA 算子一致性校验上依赖以下三个独立开源项目,它们与 czsc 形成"分析 + 回测 + 落地 + 校验"的完整闭环: | 项目 | GitHub | 角色 | 与 czsc 的关系 | |------|--------|------|----------------| | **wbt** | | 策略持仓权重回测引擎(Weight Back Test) | **硬依赖**。提供 `WeightBacktest / daily_performance / top_drawdowns / generate_backtest_report` 等;`czsc.mock` 也转发自 `wbt.mock`。czsc 顶层 `from czsc import WeightBacktest` 即来自此包。 | | **wmr** | | 策略持仓权重管理系统(Weight Manager,DuckDB / ClickHouse 双后端) | **下游配套**(非硬依赖)。wbt 负责"离线回测权重",wmr 负责"实盘 / 投研环境下权重的持久化、版本管理与查询"。czsc 产出信号 / 持仓 → wbt 跑回测 → wmr 落库供下游消费。 | | **talib-rs** | | 纯 Rust 实现的 TA-Lib 替代库 | **测试可选依赖**。仅 `tests/unit/test_ta_parity.py` 用它对 `czsc._native.ta`(EMA / SMA 等)做数值 parity 校验,确保 czsc 自研 TA 算子与 TA-Lib 行为一致。运行时代码不依赖。 | 简言之:**wbt = 回测**,**wmr = 权重落地**,**talib-rs = TA 基准**;czsc 自身专注缠论核心算法(Rust)与信号-事件-交易体系,其余环节通过这三个项目解耦协同。 ## 开发环境搭建 ```bash # 使用 UV 管理依赖(推荐) uv sync --extra dev # 构建 Rust 扩展(开发模式) maturin develop # 运行测试 uv run pytest tests/ -v # 代码格式化 uv run ruff format czsc/ tests/ uv run ruff check czsc/ tests/ ``` ## 关键环境变量 | 变量 | 说明 | 默认值 | |------|------|--------| | `CZSC_MIN_BI_LEN` | 最小笔长度 | 6 | | `CZSC_MAX_BI_NUM` | 最大笔数量 | 50 | | `CZSC_VERBOSE` | 是否输出详细日志 | False | ## 使用前必看 * 1.0.X 版本核心算法已迁移到 Rust,与 0.9.X 版本 **不兼容**;旧代码需按新 API 迁移; * 免责声明:项目开源仅用于技术交流! * 如果你发现了项目中的 Bug,可以先读一下《[如何有效地报告 Bug](https://www.chiark.greenend.org.uk/~sgtatham/bugs-cn.html)》,然后在 [issues](https://github.com/waditu/czsc/issues) 中报告 Bug ## 缠论精华 > 学了本ID的理论,去再看其他的理论,就可以更清楚地看到其缺陷与毛病,因此,广泛地去看不同的理论,不仅不影响本ID理论的学习,更能明白本ID理论之所以与其他理论不同的根本之处。 > 为什么要去了解其他理论,就是这些理论操作者的行为模式,将构成以后我们猎杀的对象,他们操作模式的缺陷,就是以后猎杀他们的最好武器,这就如同学独孤九剑,必须学会发现所有派别招数的缺陷,这也是本ID理论学习中一个极为关键的步骤。 > 真正的预测,就是不测而测。所有预测的基础,就是分类,把所有可能的情况进行完全分类。有人可能说,分类以后,把不可能的排除,最后一个结果就是精确的。 > 这是脑子锈了的想法,任何的排除,等价于一次预测,每排除一个分类,按概率的乘法原则,就使得最后的所谓精确变得越不精确,最后还是逃不掉概率的套子。 > 对于预测分类的唯一正确原则就是不进行任何排除,而是要严格分清每种情况的边界条件。任何的分类,其实都等价于一个分段函数,就是要把这分段函数的边界条件确定清楚。 > 边界条件分段后,就要确定一旦发生哪种情况就如何操作,也就是把操作也同样给分段化了。然后,把所有情况交给市场本身,让市场自己去当下选择。 > 所有的操作,其实都是根据不同分段边界的一个结果,只是每个人的分段边界不同而已。因此,问题不是去预测什么,而是确定分段边界。 ## 原文整理 * [缠中说禅重新编排版《论语》(整理版)](https://blog.csdn.net/baidu_25764509/article/details/109517775) * [缠中说禅交易指南](https://blog.csdn.net/baidu_25764509/article/details/109598229) * [缠中说禅技术原理](https://blog.csdn.net/baidu_25764509/article/details/109597255) * [缠中说禅图解分析示范](https://blog.csdn.net/baidu_25764509/article/details/110195063) * [缠中说禅:缠非缠、禅非禅,枯木龙吟照大千(整理版)](https://blog.csdn.net/baidu_25764509/article/details/110775662) * [缠中说禅教你打坐(整理版)](https://blog.csdn.net/baidu_25764509/article/details/113735170) ## 资料分享 * 链接:https://pan.baidu.com/s/1RXkP3188F0qu8Yk6CjbxRQ * 提取码:vhue

Issues· 0 open

View all issuesOpen on GitHub

No open issues yet, or sync has not completed.

> Tags

Rustczscquanttushare

No comments yet. Be the first to share.

> Details

PublishedAug 1, 2026
UpdatedSep 17, 2026
Category编程语言
PricingOpen source

> Related tools

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言