首页
/ 从零开始构建缠论交易系统:chan.py框架全面实用指南

从零开始构建缠论交易系统: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  # 获取线段列表

缠论K线分析示例 图: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/]模块的专业图表绘制功能
  • 策略生态:丰富的策略模板与回测工具

进阶学习路径

  1. 基础阶段:掌握K线、笔、线段、中枢的基本概念与计算
  2. 中级阶段:学习多级别联立分析与买卖点识别
  3. 高级阶段:开发自定义策略与机器学习模型集成
  4. 实战阶段:通过[Debug/]目录下的策略示例进行实盘测试

通过本指南,您已了解chan.py框架的核心功能与使用方法。无论是缠论初学者还是专业交易员,都能通过该框架快速构建属于自己的缠论分析系统。建议从基础示例开始实践,逐步深入复杂策略开发,充分发挥缠论在市场分析中的独特价值。

登录后查看全文
热门项目推荐
相关项目推荐