缠论技术分析库 — Rust 高性能实现
Project description
chanlun — 缠论技术分析 Python 绑定
基于 chanlun Rust 核心库的 PyO3 高性能 Python 绑定,API 参考 chan.py 设计,高度兼容。
安装
pip install chanlun
快速开始
import chanlun
# 创建配置(全部默认值)
config = chanlun.缠论配置()
# 读取 K 线数据文件(文件名需遵循 `符号-周期-起始时间戳-结束时间戳.nb` 格式,如 `btcusd-300-1631772074-1632222374.nb`)
obs = chanlun.观察者.读取数据文件("path/to/btcusd-300-1631772074-1632222374.nb", config)
# 查看各层级序列
print(f"K线数量: {len(obs.普通K线序列)}")
print(f"笔数量: {len(obs.笔序列)}")
print(f"线段数量: {len(obs.线段序列)}")
print(f"中枢数量: {len(obs.中枢序列)}")
# 或使用立体分析器进行多周期分析
analyzer = chanlun.立体分析器("BTCUSD", [60, 60*5, 60*5*6], config)
# 逐根投喂 K 线...
从源码构建
pip install maturin
# 开发模式(直接安装到当前 venv)
maturin develop
# 或构建 wheel
maturin build --release
pip install target/wheels/chanlun-*.whl
也可使用项目内的 build.sh:
./build.sh develop # 开发安装
./build.sh wheel # 构建 wheel
导出类
| 类别 | 类名 | 说明 |
|---|---|---|
| 枚举 | 买卖点类型, 相对方向, 分型结构 |
缠论基础枚举 |
| 数据 | 缺口, K线, 缠论K线 |
K 线数据结构 |
| 结构 | 分型, 虚线, 线段特征, 特征分型 |
分析层级结构 |
| 指标 | 平滑异同移动平均线, 相对强弱指数, 随机指标 |
MACD/RSI/KDJ |
| 算法 | 笔, 线段, 中枢, 背驰分析 |
识别算法 |
| 业务 | 缠论配置, 基础买卖点, 买卖点, 观察者, K线合成器, 立体分析器 |
分析框架 |
兼容性
- Python 3.9+
- 类名 / 方法名 / 字段名与
chan.py保持一致 - 支持
.nb二进制文件格式(大端字节序)
性能配置
缓存模式
Python 对象缓存有两种模式,通过环境变量 CHANLUN_CACHE_MODE 或函数调用切换:
from chanlun._chanlun import set_cache_mode, get_cache_mode
# 默认:thread_local,每线程独立缓存,零锁,多线程场景最佳
print(get_cache_mode()) # "thread_local"
# 全局:dashmap 分片哈希表,跨线程 Python `is` 身份一致
set_cache_mode("global") # 必须在创建任何观察者之前调用
# 环境变量方式
CHANLUN_CACHE_MODE=global python main.py # 全局缓存
python main.py # 默认:线程局部缓存
| 模式 | 性能 | Python is 跨线程 |
适用场景 |
|---|---|---|---|
thread_local(默认) |
零锁,最快 | 否 | 批量回测、多线程独立分析 |
global |
dashmap 分片锁 | 是 | 测试验证、跨线程对象共享 |
日志模式
日志输出有三种模式,通过环境变量 CHANLUN_LOG_MODE 或函数调用切换:
from chanlun._chanlun import set_log_mode, set_log_level, get_log_mode
# 默认:off,不输出,零开销
print(get_log_mode()) # "off"
# 简单模式:直接 eprintln/println
set_log_mode("simple")
set_log_level("debug") # 必需:设置日志级别启用输出
# Tracing 模式:带时间戳和文件位置格式化输出
set_log_mode("tracing")
set_log_level("debug")
# 环境变量方式
CHANLUN_LOG_MODE=simple python main.py # 简单输出
CHANLUN_LOG_MODE=tracing python main.py # 格式化输出
python main.py # 默认:静默
| 模式 | 输出方式 | 性能 | 格式 |
|---|---|---|---|
off(默认) |
无 | 零开销 | — |
simple |
eprintln! / println! |
极轻 | 纯文本 |
tracing |
tracing-subscriber | 稍重 | 2026-06-12 01:57:59.942 WARN file.rs:line |
观察者直传(避免 Python list 转换)
背驰分析新增 _OBS 后缀方法,直接接受观察者引用,跳过 list[K线] ↔ Vec<Arc<K线>> 转换:
# 旧方式:构建 Python 列表
result = 背驰分析.MACD背驰(进入段, 离开段, obs.普通K线序列, "总")
# 新方式:直接传观察者
result = 背驰分析.MACD背驰_OBS(进入段, 离开段, obs, "总")
许可
本项目主体采用 MIT 许可。包含以下第三方开源代码:czsc(Apache 2.0)、parse(MIT)、termcolor(MIT)。
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file chanlun-2606.73.tar.gz.
File metadata
- Download URL: chanlun-2606.73.tar.gz
- Upload date:
- Size: 1.3 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
67061a6713483243e1d89798a7179828f3a5995e8efcd94cbed1cfc310454134
|
|
| MD5 |
1263c59e93114bf193eeb50da39afe43
|
|
| BLAKE2b-256 |
a3a0f657fbd27a2f7c3b9959b5eda0f2a566586f95d1d0f1e98ef78de3a0271f
|
Provenance
The following attestation bundles were made for chanlun-2606.73.tar.gz:
Publisher:
publish.yml on YuYuKunKun/chanlun.rs
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
chanlun-2606.73.tar.gz -
Subject digest:
67061a6713483243e1d89798a7179828f3a5995e8efcd94cbed1cfc310454134 - Sigstore transparency entry: 1801164182
- Sigstore integration time:
-
Permalink:
YuYuKunKun/chanlun.rs@1477cde86bf473d708b0587c6512297ba8f5a578 -
Branch / Tag:
refs/tags/v26.6.73 - Owner: https://github.com/YuYuKunKun
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@1477cde86bf473d708b0587c6512297ba8f5a578 -
Trigger Event:
push
-
Statement type:
File details
Details for the file chanlun-2606.73-cp312-cp312-win_amd64.whl.
File metadata
- Download URL: chanlun-2606.73-cp312-cp312-win_amd64.whl
- Upload date:
- Size: 1.4 MB
- Tags: CPython 3.12, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
10c5239fe5aab9dea1dd70312ff7cd0bdf392e0e2dbf2f067af81f18674e5b3b
|
|
| MD5 |
bb9256edd48cc29396a9a18d6b358b9c
|
|
| BLAKE2b-256 |
01fae5b6428595b66def88ad891036f250ff5c46dd2efcdf46fb18c09c6e3034
|
Provenance
The following attestation bundles were made for chanlun-2606.73-cp312-cp312-win_amd64.whl:
Publisher:
publish.yml on YuYuKunKun/chanlun.rs
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
chanlun-2606.73-cp312-cp312-win_amd64.whl -
Subject digest:
10c5239fe5aab9dea1dd70312ff7cd0bdf392e0e2dbf2f067af81f18674e5b3b - Sigstore transparency entry: 1801164931
- Sigstore integration time:
-
Permalink:
YuYuKunKun/chanlun.rs@1477cde86bf473d708b0587c6512297ba8f5a578 -
Branch / Tag:
refs/tags/v26.6.73 - Owner: https://github.com/YuYuKunKun
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@1477cde86bf473d708b0587c6512297ba8f5a578 -
Trigger Event:
push
-
Statement type:
File details
Details for the file chanlun-2606.73-cp312-cp312-macosx_11_0_arm64.whl.
File metadata
- Download URL: chanlun-2606.73-cp312-cp312-macosx_11_0_arm64.whl
- Upload date:
- Size: 1.5 MB
- Tags: CPython 3.12, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1011e5dd8cbcc8a0f3256c1ed2b7ed38c98088d526bec286ebec71a52d203ecf
|
|
| MD5 |
4ac7db6c1f3490bf205061d8146b3789
|
|
| BLAKE2b-256 |
8ea07cc7e50dfb3c4b69d4da24129ce65b56649da224e52bb31d5129c682839a
|
Provenance
The following attestation bundles were made for chanlun-2606.73-cp312-cp312-macosx_11_0_arm64.whl:
Publisher:
publish.yml on YuYuKunKun/chanlun.rs
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
chanlun-2606.73-cp312-cp312-macosx_11_0_arm64.whl -
Subject digest:
1011e5dd8cbcc8a0f3256c1ed2b7ed38c98088d526bec286ebec71a52d203ecf - Sigstore transparency entry: 1801164434
- Sigstore integration time:
-
Permalink:
YuYuKunKun/chanlun.rs@1477cde86bf473d708b0587c6512297ba8f5a578 -
Branch / Tag:
refs/tags/v26.6.73 - Owner: https://github.com/YuYuKunKun
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@1477cde86bf473d708b0587c6512297ba8f5a578 -
Trigger Event:
push
-
Statement type:
File details
Details for the file chanlun-2606.73-cp312-cp312-macosx_10_12_x86_64.whl.
File metadata
- Download URL: chanlun-2606.73-cp312-cp312-macosx_10_12_x86_64.whl
- Upload date:
- Size: 1.6 MB
- Tags: CPython 3.12, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
45254e250447d893a21087c4ca1ee91765e3899786e14493533572fc06eb5ff8
|
|
| MD5 |
64cdfbd143247ee8b761c0a31177c478
|
|
| BLAKE2b-256 |
057a67cd7f0ec6d6082a573ec4ed3c4740cb49b79ca7571a1c053695cf16fb07
|
Provenance
The following attestation bundles were made for chanlun-2606.73-cp312-cp312-macosx_10_12_x86_64.whl:
Publisher:
publish.yml on YuYuKunKun/chanlun.rs
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
chanlun-2606.73-cp312-cp312-macosx_10_12_x86_64.whl -
Subject digest:
45254e250447d893a21087c4ca1ee91765e3899786e14493533572fc06eb5ff8 - Sigstore transparency entry: 1801165167
- Sigstore integration time:
-
Permalink:
YuYuKunKun/chanlun.rs@1477cde86bf473d708b0587c6512297ba8f5a578 -
Branch / Tag:
refs/tags/v26.6.73 - Owner: https://github.com/YuYuKunKun
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@1477cde86bf473d708b0587c6512297ba8f5a578 -
Trigger Event:
push
-
Statement type:
File details
Details for the file chanlun-2606.73-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: chanlun-2606.73-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 1.7 MB
- Tags: CPython 3.9, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
66358c735ba17ebddc8e3f831dab812c2f26e60f167e3657b827207900214874
|
|
| MD5 |
4f06a2cc3b53cb57adc70b28e8efb386
|
|
| BLAKE2b-256 |
ca66ddf3ac03b5d4b315b29b013bd9303e1ed867d0a458502ee5bd417c6513fe
|
Provenance
The following attestation bundles were made for chanlun-2606.73-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
publish.yml on YuYuKunKun/chanlun.rs
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
chanlun-2606.73-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
66358c735ba17ebddc8e3f831dab812c2f26e60f167e3657b827207900214874 - Sigstore transparency entry: 1801165778
- Sigstore integration time:
-
Permalink:
YuYuKunKun/chanlun.rs@1477cde86bf473d708b0587c6512297ba8f5a578 -
Branch / Tag:
refs/tags/v26.6.73 - Owner: https://github.com/YuYuKunKun
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@1477cde86bf473d708b0587c6512297ba8f5a578 -
Trigger Event:
push
-
Statement type: