从零开始构建缠论交易系统:chan.py框架全面实用指南
2026-04-19 09:45:00作者:戚魁泉Nursing
chan.py是一个开放式的缠论Python实现框架,提供形态学/动力学买卖点分析计算、多级别K线联立、区间套策略、可视化绘图等核心功能,支持多种数据接入与交易系统对接,帮助投资者快速实现从市场分析到智能决策的全流程解决方案。
环境部署指南
系统要求与依赖安装
chan.py框架基于Python 3.11开发,建议使用该版本以获得最佳性能。通过以下步骤完成环境部署:
git clone https://gitcode.com/gh_mirrors/ch/chan.py
cd chan.py
pip install -r Script/requirements.txt
项目结构解析
框架采用模块化设计,核心功能分布在以下关键目录:
| 模块路径 | 功能说明 | 核心文件 |
|---|---|---|
| [ChanModel/] | 缠论核心计算模块 | Features.py |
| [KLine/] | K线数据处理 | KLine.py, KLine_List.py |
| [Seg/] | 线段划分算法 | Seg.py, SegListChan.py |
| [ZS/] | 中枢计算模块 | ZS.py, ZSList.py |
| [BuySellPoint/] | 买卖点识别 | BS_Point.py, BSPointList.py |
缠论核心概念与实现
基础数据结构
缠论分析的基础是K线数据,框架通过KLine类封装了价格数据与时间序列:
from KLine.KLine import CKLine
from KLine.KLine_Unit import CKLineUnit
# 创建K线单元
kl_unit = CKLineUnit(
open=150.0,
close=155.0,
high=156.0,
low=149.0,
vol=10000,
datetime="2023-01-01 09:30:00"
)
# 构建K线列表
kl_list = CKLine([kl_unit])
笔与线段计算
笔和线段是缠论分析的基础构件,框架提供多种计算模式:
from Seg.Seg import CSeg
from Common.CEnum import SegAlgo
# 初始化线段计算
seg = CSeg(
kl_list=kl_list,
config={
"bi_strict": True, # 严格笔模式
"seg_algo": SegAlgo.CHAN # 缠论线段算法
}
)
# 执行线段划分
seg.calc()
bi_list = seg.bi_list # 获取笔列表
seg_list = seg.seg_list # 获取线段列表
图:60分钟K线图上的笔、线段与中枢标记,绿色线表示线段,黄色框表示中枢区域
中枢算法全解析
三种中枢计算模式
框架实现了三种中枢算法,适应不同的市场分析场景:
| 算法类型 | 实现路径 | 特点 | 适用场景 |
|---|---|---|---|
| 段内中枢 | [ZS/ZS.py] | 完全包含在线段内,笔数为奇数 | 标准走势分析 |
| 跨段中枢 | [ZS/ZS.py] | 可跨越多个线段,笔数灵活 | 复杂震荡走势 |
| 自动算法 | [ZS/ZSList.py] | 智能选择最优算法 | 自动化分析系统 |
中枢计算代码示例
from ZS.ZS import CZS
from ZS.ZSConfig import CZSConfig
# 配置中枢计算参数
zs_config = CZSConfig({
"zs_algo": "normal", # 段内中枢算法
"combine": True # 允许中枢合并
})
# 计算中枢
zs = CZS(seg_list, zs_config)
zs_list = zs.calc_zs() # 获取中枢列表
图:不同中枢算法对比,上半部分为段内中枢(normal),下半部分为跨段中枢(over_seg)
多级别联立分析实战
区间套策略实现
缠论的区间套思想通过多级别K线联立实现,框架支持从年线到分钟线的全周期覆盖:
from Chan import CChan
from Common.CEnum import KL_TYPE
# 定义分析级别列表
lv_list = [
KL_TYPE.K_DAY, # 日线:趋势方向
KL_TYPE.K_30M, # 30分钟:波段节奏
KL_TYPE.K_5M # 5分钟:精确买卖点
]
# 初始化多级别分析
chan = CChan(
code="US.AAPL",
begin_time="2022-01-01",
lv_list=lv_list
)
# 获取各级别分析结果
day_zs = chan[KL_TYPE.K_DAY].zs_list # 日线中枢
min30_bi = chan[KL_TYPE.K_30M].bi_list # 30分钟笔
min5_bsp = chan[KL_TYPE.K_5M].bsp_list # 5分钟买卖点
图:日线与30分钟线区间套分析,绿色虚线为趋势线,红色标记为买卖点
买卖点识别系统
形态学与动力学买卖点
框架实现了完整的买卖点识别系统,包括基础买卖点(bsp)和自定义买卖点(cbsp):
from BuySellPoint.BS_Point import CBS_Point
from BuySellPoint.BSPointConfig import CBSPConfig
# 配置买卖点参数
bsp_config = CBSPConfig({
"bsp_back_ratio": 0.9, # 背驰比例
"cbsp_enable": True # 启用自定义买卖点
})
# 计算买卖点
bsp = CBS_Point(
kl_type=KL_TYPE.K_DAY,
bi_list=bi_list,
seg_list=seg_list,
zs_list=zs_list,
config=bsp_config
)
bsp_list = bsp.calc_bsp() # 基础买卖点
cbsp_list = bsp.calc_cbsp() # 自定义买卖点
图:日线图上的买卖点标记,实线为基础买卖点(bsp),虚线为自定义买卖点(cbsp)
策略开发与回测
策略模板与实现
基于框架开发自定义策略的基础模板:
from Debug.strategy_demo import CStrategyDemo
# 初始化策略
strategy = CStrategyDemo(
code="HK.00700",
kl_type=KL_TYPE.K_DAY,
config={
"stop_loss": 0.05, # 止损比例
"take_profit": 0.15 # 止盈比例
}
)
# 运行策略回测
result = strategy.backtest(
start_date="2020-01-01",
end_date="2023-01-01"
)
# 输出回测结果
print(f"策略收益: {result['return']:.2%}")
print(f"最大回撤: {result['max_drawdown']:.2%}")
项目优势与学习路径
核心优势总结
chan.py框架凭借以下特性在缠论实现工具中脱颖而出:
- 模块化设计:各功能模块解耦,便于扩展与定制
- 多数据源支持:通过[DataAPI/]模块无缝对接多种行情接口
- 高效计算引擎:针对缠论计算特点优化的算法实现
- 完整可视化:基于[Plot/]模块的专业图表绘制功能
- 策略生态:丰富的策略模板与回测工具
进阶学习路径
- 基础阶段:掌握K线、笔、线段、中枢的基本概念与计算
- 中级阶段:学习多级别联立分析与买卖点识别
- 高级阶段:开发自定义策略与机器学习模型集成
- 实战阶段:通过[Debug/]目录下的策略示例进行实盘测试
通过本指南,您已了解chan.py框架的核心功能与使用方法。无论是缠论初学者还是专业交易员,都能通过该框架快速构建属于自己的缠论分析系统。建议从基础示例开始实践,逐步深入复杂策略开发,充分发挥缠论在市场分析中的独特价值。
登录后查看全文
热门项目推荐
相关项目推荐
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0126- DDeepSeek-V4-ProDeepSeek-V4-Pro(总参数 1.6 万亿,激活 49B)面向复杂推理和高级编程任务,在代码竞赛、数学推理、Agent 工作流等场景表现优异,性能接近国际前沿闭源模型。Python00
MiMo-V2.5-ProMiMo-V2.5-Pro作为旗舰模型,擅⻓处理复杂Agent任务,单次任务可完成近千次⼯具调⽤与⼗余轮上 下⽂压缩。Python00
GLM-5.1GLM-5.1是智谱迄今最智能的旗舰模型,也是目前全球最强的开源模型。GLM-5.1大大提高了代码能力,在完成长程任务方面提升尤为显著。和此前分钟级交互的模型不同,它能够在一次任务中独立、持续工作超过8小时,期间自主规划、执行、自我进化,最终交付完整的工程级成果。Jinja00
MiniCPM-V-4.6这是 MiniCPM-V 系列有史以来效率与性能平衡最佳的模型。它以仅 1.3B 的参数规模,实现了性能与效率的双重突破,在全球同尺寸模型中登顶,全面超越了阿里 Qwen3.5-0.8B 与谷歌 Gemma4-E2B-it。Jinja00
MiniMax-M2.7MiniMax-M2.7 是我们首个深度参与自身进化过程的模型。M2.7 具备构建复杂智能体应用框架的能力,能够借助智能体团队、复杂技能以及动态工具搜索,完成高度精细的生产力任务。Python00
项目优选
收起
暂无描述
Dockerfile
720
4.62 K
Ascend Extension for PyTorch
Python
594
742
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
424
372
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
982
974
Claude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed.
Get Started
Rust
865
126
deepin linux kernel
C
29
16
暂无简介
Dart
966
244
Oohos_react_native
React Native鸿蒙化仓库
C++
345
390
昇腾LLM分布式训练框架
Python
157
187
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
1.64 K
964