>_ DevTrendszh

语言

首页

语言

板块

前端 后端 移动端 DevOps AI / ML 游戏开发 区块链 嵌入式 安全
Rust

一个中国股票分析理论如何迁移到 Rust

在亚洲量化交易中,有一个流行的技术分析概念叫做缠论(Chan Lun,或称"缠中说禅"理论)。剥开禅和东方智慧等哲学外衣,其核心是一个严格的几何模型,将价格图表分形分解为各种形态:顶、底、线段,以及所谓的中枢。

czsc 库将这些算法带入了代码世界。这个项目最初是用纯 Python 编写的,但当需要遍历逐笔数据并实时处理数百个信号时,解释器无法跟上。在 1.0 分支中,作者用 Rust 重写了整个数学核心,在外部保留了熟悉的 Python 绑定,通过 PyO3 实现。

让我们深入了解这个工具的工作原理,以及它在中国市场之外的有趣之处。

底层架构

项目架构清晰地分为两层:Rust 中的快速计算层和 Python 中的用户界面。

Rust 层 (czsc._native) 处理繁重的工作:

  • 基础数据结构以及将 K 线合并到更高时间周期
  • 缠论的几何形态识别(分型 FX、线段 BI、中枢 ZS
  • 超过 220 个现成信号函数的库
  • 技术指标(SMA、EMA、布林带)

Python 层组织工作流程:

  • 通过 CCXT 连接 Tushare、TQSdk 等数据源以及加密货币交易所
  • 策略构建和交易事件组合
  • 生成带交互式图表的独立 HTML 报告

这种方法带来了显著的速度提升:解析数万根 K 线并生成信号时,不会出现典型的 Python 延迟。

快速入门

需要 Python 3.10 或更高版本。如果从 PyPI 安装,则不需要 Rust 编译器,因为作者为流行平台构建了现成的 wheel 包:

如果从源码构建,需要一个较新的 cargomaturin 工具:

图表处理和形态识别

该库接受标准 pandas.DataFrame 格式的行情数据,然后将其转换为 RawBar 结构并计算价格走势几何形态:

CZSC 对象自动过滤包含关系(一个价格范围包含另一个的机制),找到局部极值,并从中组装方向线段。

高级时间周期合成和信号生成

库内有一个实用的工具是 BarGenerator。它允许你以流式方式输入分钟 K 线,并实时获得 5 分钟、30 分钟或日线的同步 K 线:

合成时间周期后,你可以附加现成的信号。仓库中内置了超过 200 个形态,全部在 Rust 中实现:

可视化和回测

查看原始点数组很不方便。czsc 有一个基于 plotlylightweight-charts 的内置可视化模块。它生成一个独立的自包含 HTML 文件,K 线图上叠加了线段和入场点:

为了验证策略,作者将收益计算提取到一个名为 wbt(加权回测)的独立包中,这是一个硬依赖。该模型基于目标投资组合权重随时间的变化而非离散订单来运作,这简化了向一篮子工具的扩展。

细节和不足之处

项目有一些值得在开始前了解的特点:

  • 几乎所有文档、代码注释和信号名称都是中文的。要理解某些函数的逻辑,你需要手边有翻译工具。
  • 与亚洲数据源(Tushare、天勤)高度耦合,尽管 CCXT 的可用性为加密货币交易者平滑了这一点。
  • 1.0 版本破坏了与 0.9 分支的向后兼容性。如果你之前使用过 czsc,你需要为新 API 重写代码。

谁会发现这个项目有用

这个库对寻找 RSI 或 MACD 等经典指标替代品的量化开发者和交易者很有用。缠论提供了支撑位和趋势结构的严格形式化,而 czsc 内部的 Rust 核心消除了从头编写繁重图表几何计算的需要。入门只需要基本的 Python 知识和对价格时间序列工作原理的理解。

相关项目