{"id":13449687,"url":"https://github.com/waditu/czsc","last_synced_at":"2026-05-20T07:14:33.515Z","repository":{"id":37642913,"uuid":"191319306","full_name":"waditu/czsc","owner":"waditu","description":"缠中说禅技术分析工具；缠论；股票；期货；Quant；量化交易","archived":false,"fork":false,"pushed_at":"2025-05-10T06:19:40.000Z","size":13180,"stargazers_count":3585,"open_issues_count":17,"forks_count":1123,"subscribers_count":140,"default_branch":"master","last_synced_at":"2025-05-10T07:30:30.469Z","etag":null,"topics":["czsc","quant","tushare"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/waditu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2019-06-11T07:38:57.000Z","updated_at":"2025-05-10T02:52:42.000Z","dependencies_parsed_at":"2023-09-22T14:55:21.323Z","dependency_job_id":"46f626ce-10bc-40fe-a309-3638d7a7e4ba","html_url":"https://github.com/waditu/czsc","commit_stats":{"total_commits":1048,"total_committers":4,"mean_commits":262.0,"dds":0.04770992366412219,"last_synced_commit":"2d2bc74b342ad2ebfa5b0a5b60f854852765c59e"},"previous_names":[],"tags_count":135,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/waditu%2Fczsc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/waditu%2Fczsc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/waditu%2Fczsc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/waditu%2Fczsc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/waditu","download_url":"https://codeload.github.com/waditu/czsc/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253383382,"owners_count":21899923,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["czsc","quant","tushare"],"created_at":"2024-07-31T06:00:51.466Z","updated_at":"2026-05-20T07:14:33.508Z","avatar_url":"https://github.com/waditu.png","language":"Python","funding_links":[],"categories":["Trading bots","Python","Alpha Collections","开发工具\u0026框架"],"sub_categories":["Cryptocurrencies","General Alpha"],"readme":"# czsc - 缠中说禅技术分析工具\n\n[![Downloads](https://static.pepy.tech/personalized-badge/czsc?period=total\u0026units=international_system\u0026left_color=red\u0026right_color=orange\u0026left_text=Downloads/Total)](https://pepy.tech/project/czsc)\n[![Downloads](https://static.pepy.tech/personalized-badge/czsc?period=month\u0026units=international_system\u0026left_color=red\u0026right_color=orange\u0026left_text=Downloads/Month)](https://pepy.tech/project/czsc)\n[![Downloads](https://static.pepy.tech/personalized-badge/czsc?period=week\u0026units=international_system\u0026left_color=red\u0026right_color=orange\u0026left_text=Downloads/Week)](https://pepy.tech/project/czsc)\n[![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)\n[![PyPI](https://img.shields.io/pypi/v/czsc.svg)](https://pypi.org/project/czsc/)\n\n**[项目文档](https://s0cqcxuy3p.feishu.cn/wiki/wikcn3gB1MKl3ClpLnboHM1QgKf)** |\n**[投研数据共享](https://s0cqcxuy3p.feishu.cn/wiki/wikcnzuPawXtBB7Cj7mqlYZxpDh)** |\n**[信号函数编写规范](https://s0cqcxuy3p.feishu.cn/wiki/wikcnCFLLTNGbr2THqo7KtWfBkd)** |\n**[DEVIN生成的文档](https://deepwiki.com/waditu/czsc/1-overview)**\n\n\u003e **1.0.X 版本开始，缠论核心算法（分型、笔、中枢等）已全部迁移到 Rust 实现，通过 PyO3 扩展（`czsc._native`）暴露给 Python。** 需要了解旧 Python 实现逻辑的，可查看 [0.9.X](https://github.com/waditu/czsc/tree/v0.9.69) 版本。\n\n\u003e [czsc_skills](https://github.com/zengbin93/czsc_skills)\n\n\u003e 源于[缠中说缠博客](http://blog.sina.com.cn/chzhshch)，原始博客中的内容不太完整，且没有评论，以下是网友整理的原文备份\n\n* 备份网址1：http://www.fxgan.com\n* 备份网址2：https://chzhshch.blog\n\n* 已经开始用czsc库进行量化研究的朋友，欢迎[加入飞书群](https://applink.feishu.cn/client/chat/chatter/add_by_link?link_token=0bak668e-7617-452c-b935-94d2c209e6cf)，快点击加入吧！\n* [B站视频教程合集（持续更新...）](https://space.bilibili.com/243682308/channel/series)\n\n\n## 架构概览\n\nCZSC 1.0 采用 **Rust + Python 混合架构**：\n\n```\nczsc (Python 包)\n├── czsc._native          ← Rust 扩展（PyO3），缠论核心\n│   ├── CZSC / FX / BI / ZS / RawBar / NewBar / BarGenerator\n│   ├── Freq / Mark / Direction / Signal / Event / Position / Operate\n│   ├── CzscTrader / CzscSignals / generate_czsc_signals\n│   ├── signals.*         ← 220+ 信号函数（Python 端 7 个子模块；详见 crates/czsc-signals/src/）\n│   └── ta.*              ← Rust TA 算子 (ema/sma/boll 等，本次清理 起仅内部使用)\n├── czsc.traders          ← Python 门面，汇聚 Rust 交易 API\n├── czsc.utils            ← 工具函数（绘图/缓存/统计/交易工具）\n├── czsc.connectors       ← 数据源连接器（天勤/Tushare/CCXT/本地缓存）\n├── czsc.strategies       ← 策略门面（CzscStrategyBase/CzscJsonStrategy）\n├── czsc.fsa              ← 飞书自动化工具\n├── czsc.mock             ← 测试用模拟数据（转发自 wbt）\n└── czsc.envs             ← 环境变量管理\n```\n\n底层 Rust workspace 包含 9 个 crate：`czsc` / `czsc-core` / `czsc-derive` / `czsc-signals` /\n`czsc-trader` / `czsc-utils` / `czsc-ta` / `czsc-signal-macros` /\n`czsc-python`（PyO3 绑定入口）。\n\n\n## 项目贡献\n\n* 缠论的 `分型、笔` 的自动识别，由 Rust 实现并通过 `czsc._native` 暴露\n* 定义并实现 `信号-事件-交易` 量化交易逻辑体系，事件通过 `signals_all/signals_any/signals_not` 实现信号的逻辑组合\n* 定义并实现了 220+ 信号函数（Rust 实现），见 `czsc._native.signals`\n* 缠论多级别联立决策分析交易，详见 `CzscTrader`\n* HTML 可视化（plotly + lightweight-charts）：`czsc.utils.plotting.{kline,weight,lightweight}.*`\n\n\n## 安装使用\n\n**注意：** Python 版本必须 **≥ 3.10**\n\n从 PyPI 安装预编译版本（推荐）：\n\n```bash\npip install czsc -U\n```\n\n使用 `uv` 安装（推荐开发环境）：\n\n```bash\nuv pip install czsc\n```\n\n从源码构建（需要 Rust 工具链和 maturin）：\n\n```bash\n# 安装 Rust：https://rustup.rs/\n# 安装 maturin\npip install maturin\n\n# 克隆并构建\ngit clone https://github.com/waditu/czsc.git\ncd czsc\nmaturin develop --release\n```\n\n\u003e **Rust 构建环境约束**：底层依赖 `pyo3` / `pyo3-stub-gen` 0.22 要求 Python ≥ 3.10。\n\u003e 当系统默认 Python 低于 3.10 时，请通过环境变量显式指定：\n\u003e\n\u003e ```bash\n\u003e export PYO3_PYTHON=$(which python3.12)   # 或任意 3.10+ 的解释器\n\u003e ```\n\u003e\n\u003e 否则 `cargo build` / `cargo test` 会在 `crates/czsc-python/build.rs` 提前 panic 并给出修复建议。\n\u003e 用 `uv sync --extra dev` 走 UV 流程时，UV 会自动选择项目声明的 Python，不需要额外设置。\n\n\n## 快速开始\n\n### 核心缠论分析\n\n```python\nimport czsc\nfrom czsc import CZSC, Freq, format_standard_kline\nfrom czsc.mock import generate_symbol_kines\n\n# 生成模拟 K 线数据\ndf = generate_symbol_kines('000001', '30分钟', '20240101', '20240601')\n\n# 转换为 RawBar 对象列表\nbars = format_standard_kline(df, freq=Freq.F30)\n\n# 创建 CZSC 分析对象（自动识别分型、笔、中枢）\nczsc_obj = CZSC(bars)\nprint(f\"笔数量：{len(czsc_obj.bi_list)}\")\nprint(f\"中枢数量：{len(czsc_obj.zs_list)}\")\n```\n\n### K 线合成与多级别分析\n\n```python\nfrom czsc import BarGenerator, Freq\n\n# 使用 BarGenerator 进行 K 线合成\nbg = BarGenerator(base_freq='1分钟', freqs=['5分钟', '30分钟', '日线'])\nfor bar in raw_bars:\n    bg.update(bar)\n\n# 获取各周期 K 线\nbars_5m = bg.bars['5分钟']\nbars_30m = bg.bars['30分钟']\n```\n\n### 信号生成\n\n```python\nfrom czsc import generate_czsc_signals, get_signals_config, get_signals_freqs\n\n# 配置信号序列（使用 Rust 实现的信号函数）\nsignals_seq = [\n    \"czsc._native.signals.bar.bar_end_V230331\",\n    \"czsc._native.signals.cxt.cxt_bi_status_V230101\",\n]\n\n# 解析信号所需的周期配置\nfreqs = get_signals_freqs(signals_seq)\nconfig = get_signals_config(signals_seq)\n\n# 生成信号序列\nresults = generate_czsc_signals(bars, signals_seq)\n```\n\n### 权重回测\n\n```python\nfrom czsc import WeightBacktest\nfrom czsc.mock import generate_klines_with_weights\n\n# 生成带权重的模拟数据\ndfw = generate_klines_with_weights(seed=42)\n\n# 运行权重回测\nwb = WeightBacktest(dfw, fee_rate=0.0002)\nprint(wb.stats)  # 回测统计汇总\n```\n\n### 策略研究\n\n```python\nfrom czsc import run_research, run_replay\n\n# 单品种回放\nrun_replay(bars, signals_seq, pos_seq, res_path='./results/')\n\n# 批量品种研究\nrun_research(symbols, signals_seq, pos_seq, res_path='./results/')\n```\n\n### 缠论可视化与回测报告\n\n```python\n# 缠论 K 线（多周期联立，自包含 HTML，离线即可打开）\nfrom czsc.utils.plotting.lightweight import plot_czsc, plot_czsc_trader\n\nhtml = plot_czsc(c, output=\"html\")  # 单周期\nplot_czsc_trader(ct, output=\"html\", path=\"trader.html\")  # 多周期\n\n# 回测 HTML 报告：用 wbt.generate_backtest_report 一键产出\nfrom wbt import generate_backtest_report\ngenerate_backtest_report(df=dfw, output_path=\"report.html\", weight_type=\"ts\")\n```\n\n\n## 使用案例\n\n更多端到端案例汇总见飞书 wiki：[CZSC 1.0.X 版本使用说明和案例](https://s0cqcxuy3p.feishu.cn/wiki/X0mAwSZyqiuebek2EUacbyPMnDd)。\n\n| 序号 | 案例 | 一句话介绍 |\n|------|------|------------|\n| 1 | [基于 Event 的策略回测 + wbt HTML 报告](https://s0cqcxuy3p.feishu.cn/wiki/Li7ewsbReiQlWokEEVpcvLjznJU) | 5 行命令跑通 Event → Position → 回测 → 可交互 HTML 报告的完整闭环。 |\n| 2 | [lightweight_charts 缠论可视化](https://s0cqcxuy3p.feishu.cn/wiki/VF7Gwq3N8iuplckG1Tmcmp1Qn3d) | 几行代码把缠论结构（分型/笔/线段/中枢）导出为自包含离线 HTML，便于分享与嵌入。 |\n| 3 | [把信号函数画到 K 线主图（plot_czsc_signals）](https://s0cqcxuy3p.feishu.cn/wiki/ULxhwFyVkiavqhkZ2Xkc0N3fnYc) | 把信号触发点叠在 K 线主图上，直观调试 signals_config 与多周期联立。 |\n| 4 | [性能基准测试：在本地复现 CZSC / CzscTrader 吞吐量](https://s0cqcxuy3p.feishu.cn/wiki/ReRfw9WUjiVgEckZbMxcT87WnRc) | 一行命令本地评估吞吐量，配套关键指标速查表，用于容量规划与加速效果核对。 |\n| 5 | [信号函数模块深入介绍](https://s0cqcxuy3p.feishu.cn/wiki/WxU8wKTBViekKbkCyKzcwa7SnJd) | 系统讲解 czsc-signals 架构与 246 个信号函数的模块划分、参数模板、信号表达示例。 |\n\n\n## 核心 API 一览\n\n| 类型 | 符号 | 说明 |\n|------|------|------|\n| **缠论对象** | `CZSC`, `FX`, `BI`, `ZS` | 缠论核心数据结构（Rust） |\n| **K线对象** | `RawBar`, `NewBar`, `BarGenerator` | K线与合成器（Rust） |\n| **枚举** | `Freq`, `Mark`, `Direction`, `Operate` | 方向/频率等枚举（Rust） |\n| **信号/事件** | `Signal`, `Event`, `Position` | 信号与持仓逻辑（Rust） |\n| **分析工具** | `check_fx`, `check_bi`, `remove_include` | 分型/笔校验工具（Rust） |\n| **TA算子顶层别名** | `czsc.ema`, `czsc.sma`, `czsc.rolling_rank`, `czsc.boll_positions`, `czsc.ultimate_smoother` | 技术指标算子顶层别名（Rust） |\n| **交易器** | `CzscTrader`, `CzscSignals` | 多级别交易决策（Rust） |\n| **信号生成** | `generate_czsc_signals` | 批量信号生成（Rust） |\n| **权重回测** | `WeightBacktest` | 权重序列回测（来自 wbt） |\n| **策略** | `CzscStrategyBase`, `CzscJsonStrategy` | 策略封装（Python） |\n| **模拟数据** | `generate_symbol_kines` | 测试用 K线数据（来自 wbt） |\n| **格式转换** | `format_standard_kline` | DataFrame → RawBar 列表 |\n\n\n## 数据源连接器\n\n`czsc.connectors` 提供多个数据源适配器：\n\n| 模块 | 数据源 | 说明 |\n|------|--------|------|\n| `tq_connector.py` | 天勤（TQSdk） | 期货实时/历史行情 |\n| `ts_connector.py` | Tushare | A股历史数据 |\n| `ccxt_connector.py` | CCXT | 数字货币交易所 |\n| `local_data.py` | 投研数据本地缓存 | CZSC 共享数据本地读取入口 |\n\n\n## 可视化（HTML 输出）\n\n本次清理 起项目不再依赖 streamlit，可视化统一以 plotly + lightweight-charts 输出 HTML：\n\n| 模块 | 功能 |\n|------|------|\n| `czsc.utils.plotting.kline` | 单周期 K 线 + 缠论结构（plotly Figure） |\n| `czsc.utils.plotting.weight` | 权重时序图（plotly Figure） |\n| `czsc.utils.plotting.lightweight` | lightweight-charts 自包含 HTML，多周期联立 + 信号叠加 |\n| 累计收益 / 回撤 / 月度热力图 / 综合回测概览 | 改用 `wbt.generate_backtest_report` 或直接 plotly，见 [`docs/migration/cleanup-non-czsc-core.md`](docs/migration/cleanup-non-czsc-core.md) |\n\n如需 streamlit 集成，调用方自行 `pip install streamlit` 后用 `st.components.v1.html(plot_czsc(c, output='html'))` 嵌入即可。从 1.x 升级请参考 [`docs/migration/cleanup-non-czsc-core.md`](docs/migration/cleanup-non-czsc-core.md)。\n\n\n## 相关项目（生态依赖）\n\nczsc 在权重回测、权重落地与 TA 算子一致性校验上依赖以下三个独立开源项目，它们与 czsc 形成\"分析 + 回测 + 落地 + 校验\"的完整闭环：\n\n| 项目 | GitHub | 角色 | 与 czsc 的关系 |\n|------|--------|------|----------------|\n| **wbt** | \u003chttps://github.com/zengbin93/wbt\u003e | 策略持仓权重回测引擎（Weight Back Test） | **硬依赖**。提供 `WeightBacktest / daily_performance / top_drawdowns / generate_backtest_report` 等；`czsc.mock` 也转发自 `wbt.mock`。czsc 顶层 `from czsc import WeightBacktest` 即来自此包。 |\n| **wmr** | \u003chttps://github.com/zengbin93/wmr\u003e | 策略持仓权重管理系统（Weight Manager，DuckDB / ClickHouse 双后端） | **下游配套**（非硬依赖）。wbt 负责\"离线回测权重\"，wmr 负责\"实盘 / 投研环境下权重的持久化、版本管理与查询\"。czsc 产出信号 / 持仓 → wbt 跑回测 → wmr 落库供下游消费。 |\n| **talib-rs** | \u003chttps://github.com/0xcjun/talib-rs\u003e | 纯 Rust 实现的 TA-Lib 替代库 | **测试可选依赖**。仅 `tests/unit/test_ta_parity.py` 用它对 `czsc._native.ta`（EMA / SMA 等）做数值 parity 校验，确保 czsc 自研 TA 算子与 TA-Lib 行为一致。运行时代码不依赖。 |\n\n简言之：**wbt = 回测**，**wmr = 权重落地**，**talib-rs = TA 基准**；czsc 自身专注缠论核心算法（Rust）与信号-事件-交易体系，其余环节通过这三个项目解耦协同。\n\n\n## 开发环境搭建\n\n```bash\n# 使用 UV 管理依赖（推荐）\nuv sync --extra dev\n\n# 构建 Rust 扩展（开发模式）\nmaturin develop\n\n# 运行测试\nuv run pytest tests/ -v\n\n# 代码格式化\nuv run ruff format czsc/ tests/\nuv run ruff check czsc/ tests/\n```\n\n\n## 关键环境变量\n\n| 变量 | 说明 | 默认值 |\n|------|------|--------|\n| `CZSC_MIN_BI_LEN` | 最小笔长度 | 6 |\n| `CZSC_MAX_BI_NUM` | 最大笔数量 | 50 |\n| `CZSC_VERBOSE` | 是否输出详细日志 | False |\n\n\n## 使用前必看\n\n* 1.0.X 版本核心算法已迁移到 Rust，与 0.9.X 版本 **不兼容**；旧代码需按新 API 迁移；\n* 免责声明：项目开源仅用于技术交流！\n* 如果你发现了项目中的 Bug，可以先读一下《[如何有效地报告 Bug](https://www.chiark.greenend.org.uk/~sgtatham/bugs-cn.html)》，然后在 [issues](https://github.com/waditu/czsc/issues) 中报告 Bug\n\n\n## 缠论精华\n\n\u003e 学了本ID的理论，去再看其他的理论，就可以更清楚地看到其缺陷与毛病，因此，广泛地去看不同的理论，不仅不影响本ID理论的学习，更能明白本ID理论之所以与其他理论不同的根本之处。\n\n\u003e 为什么要去了解其他理论，就是这些理论操作者的行为模式，将构成以后我们猎杀的对象，他们操作模式的缺陷，就是以后猎杀他们的最好武器，这就如同学独孤九剑，必须学会发现所有派别招数的缺陷，这也是本ID理论学习中一个极为关键的步骤。\n\n\u003e 真正的预测，就是不测而测。所有预测的基础，就是分类，把所有可能的情况进行完全分类。有人可能说，分类以后，把不可能的排除，最后一个结果就是精确的。\n\u003e 这是脑子锈了的想法，任何的排除，等价于一次预测，每排除一个分类，按概率的乘法原则，就使得最后的所谓精确变得越不精确，最后还是逃不掉概率的套子。\n\u003e 对于预测分类的唯一正确原则就是不进行任何排除，而是要严格分清每种情况的边界条件。任何的分类，其实都等价于一个分段函数，就是要把这分段函数的边界条件确定清楚。\n\u003e 边界条件分段后，就要确定一旦发生哪种情况就如何操作，也就是把操作也同样给分段化了。然后，把所有情况交给市场本身，让市场自己去当下选择。\n\u003e 所有的操作，其实都是根据不同分段边界的一个结果，只是每个人的分段边界不同而已。因此，问题不是去预测什么，而是确定分段边界。\n\n\n## 原文整理\n\n* [缠中说禅重新编排版《论语》（整理版）](https://blog.csdn.net/baidu_25764509/article/details/109517775)\n* [缠中说禅交易指南](https://blog.csdn.net/baidu_25764509/article/details/109598229)\n* [缠中说禅技术原理](https://blog.csdn.net/baidu_25764509/article/details/109597255)\n* [缠中说禅图解分析示范](https://blog.csdn.net/baidu_25764509/article/details/110195063)\n* [缠中说禅：缠非缠、禅非禅，枯木龙吟照大千（整理版）](https://blog.csdn.net/baidu_25764509/article/details/110775662)\n* [缠中说禅教你打坐（整理版）](https://blog.csdn.net/baidu_25764509/article/details/113735170)\n\n\n## 资料分享\n\n* 链接：https://pan.baidu.com/s/1RXkP3188F0qu8Yk6CjbxRQ\n* 提取码：vhue\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwaditu%2Fczsc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwaditu%2Fczsc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwaditu%2Fczsc/lists"}