Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

kenmlee/czsc

Repository files navigation

czsc - 缠中说禅技术分析工具

Downloads Downloads Downloads Python 3.10+ PyPI

项目文档 | 投研数据共享 | 信号函数编写规范 | DEVIN生成的文档

1.0.X 版本开始,缠论核心算法(分型、笔、中枢等)已全部迁移到 Rust 实现,通过 PyO3 扩展(czsc._native)暴露给 Python。 需要了解旧 Python 实现逻辑的,可查看 0.9.X 版本。

czsc_skills

源于缠中说缠博客,原始博客中的内容不太完整,且没有评论,以下是网友整理的原文备份

架构概览

CZSC 1.0 采用 Rust + Python 混合架构:

czsc (Python 包)
├── czsc._native ← Rust 扩展(PyO3),缠论核心
│ ├── CZSC / FX / BI / ZS / RawBar / NewBar / BarGenerator
│ ├── Freq / Mark / Direction / Signal / Event / Position / Operate
│ ├── CzscTrader / CzscSignals / generate_czsc_signals
│ ├── signals.{bar,cxt,tas,vol,pressure,obv,cvolp} ← 30+ 信号函数
│ └── ta.* ← Rust TA 算子 (ema/sma/boll 等)
├── czsc.traders ← Python 门面,汇聚 Rust 交易 API
├── czsc.svc ← Streamlit 量化研究组件库
├── czsc.sensors ← 事件检测与特征分析
├── czsc.utils ← 工具函数(绘图/缓存/统计/交易工具)
├── czsc.connectors ← 数据源连接器(天勤/Tushare/聚宽/CCXT)
├── czsc.eda ← 探索性数据分析(因子/特征/权重)
├── czsc.strategies ← 策略门面(CzscStrategyBase/CzscJsonStrategy)
├── czsc.fsa ← 飞书自动化工具
├── czsc.mock ← 测试用模拟数据(转发自 wbt)
└── czsc.envs ← 环境变量管理

底层 Rust workspace 包含 9 个 crate:czsc-core / czsc-signals / czsc-trader / czsc-utils / czsc-ta / czsc-signal-macros / error-macros / error-support / czsc-python(PyO3 绑定入口)。

项目贡献

  • 择时策略研究框架
  • 缠论的 分型、笔 的自动识别,由 Rust 实现并通过 czsc._native 暴露
  • 定义并实现 信号-事件-交易 量化交易逻辑体系,事件通过 signals_all/signals_any/signals_not 实现信号的逻辑组合
  • 定义并实现了 30+ 信号函数(Rust 实现),见 czsc._native.signals
  • 缠论多级别联立决策分析交易,详见 CzscTrader
  • Streamlit 量化研究组件库

安装使用

注意: Python 版本必须 ≥ 3.10

从 PyPI 安装预编译版本(推荐):

pip install czsc -U

使用 uv 安装(推荐开发环境):

uv pip install czsc

从源码构建(需要 Rust 工具链和 maturin):

# 安装 Rust:https://rustup.rs/
# 安装 maturin
pip install maturin
# 克隆并构建
git clone https://github.com/waditu/czsc.git
cd czsc
maturin develop --release

快速开始

核心缠论分析

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 线合成与多级别分析

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分钟']

信号生成

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)

权重回测

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) # 回测统计汇总

策略研究

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/')

回测可视化

from czsc.utils.plotting.backtest import plot_backtest_stats, plot_cumulative_returns
# 综合回测统计图(含回撤/收益分布/月度热力图)
fig = plot_backtest_stats(dret, ret_col='total', title='策略回测统计')
fig.show()
# 累计收益曲线
fig = plot_cumulative_returns(dret, title='策略累计收益')
fig.show()

核心 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.ta.ema, czsc.ta.sma, ... 技术指标算子(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股历史数据
jq_connector.py 聚宽 A股/期货数据
ccxt_connector.py CCXT 数字货币交易所
research.py 研究数据接口 内部研究数据

Streamlit 组件库(czsc.svc)

czsc.svc 提供即开即用的量化研究可视化组件:

模块 功能
svc.backtest 回测分析(累计收益/回撤/月度热力图)
svc.strategy 策略全貌展示
svc.factor 因子分析
svc.correlation 相关性分析
svc.statistics 统计分析
svc.returns 收益归因
svc.weights 权重管理

开发环境搭建

# 使用 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》,然后在 issues 中报告 Bug

缠论精华

学了本ID的理论,去再看其他的理论,就可以更清楚地看到其缺陷与毛病,因此,广泛地去看不同的理论,不仅不影响本ID理论的学习,更能明白本ID理论之所以与其他理论不同的根本之处。

为什么要去了解其他理论,就是这些理论操作者的行为模式,将构成以后我们猎杀的对象,他们操作模式的缺陷,就是以后猎杀他们的最好武器,这就如同学独孤九剑,必须学会发现所有派别招数的缺陷,这也是本ID理论学习中一个极为关键的步骤。

真正的预测,就是不测而测。所有预测的基础,就是分类,把所有可能的情况进行完全分类。有人可能说,分类以后,把不可能的排除,最后一个结果就是精确的。 这是脑子锈了的想法,任何的排除,等价于一次预测,每排除一个分类,按概率的乘法原则,就使得最后的所谓精确变得越不精确,最后还是逃不掉概率的套子。 对于预测分类的唯一正确原则就是不进行任何排除,而是要严格分清每种情况的边界条件。任何的分类,其实都等价于一个分段函数,就是要把这分段函数的边界条件确定清楚。 边界条件分段后,就要确定一旦发生哪种情况就如何操作,也就是把操作也同样给分段化了。然后,把所有情况交给市场本身,让市场自己去当下选择。 所有的操作,其实都是根据不同分段边界的一个结果,只是每个人的分段边界不同而已。因此,问题不是去预测什么,而是确定分段边界。

原文整理

资料分享

About

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

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

Languages

  • Rust 58.2%
  • Python 39.9%
  • Jupyter Notebook 1.9%

AltStyle によって変換されたページ (->オリジナル) /