缠论量化分析框架:Python实现的完整技术分析系统
缠论量化分析框架:Python实现的完整技术分析系统
缠论量化框架chan.py是一个开放式的缠论Python实现系统,专为技术分析爱好者和量化交易开发者设计。这个开源框架将复杂的缠论理论转化为可编程的算法组件,支持形态学与动力学买卖点分析、多级别K线联立、区间套策略和可视化绘图,为金融市场分析提供了一套完整的解决方案。
系统架构解析:模块化设计的工程思维
chan.py采用高度模块化的架构设计,将缠论的核心概念分解为独立的计算单元,每个模块负责特定的分析功能,通过清晰的接口进行协作。这种设计不仅提高了代码的可维护性,也为用户提供了灵活的扩展能力。
核心架构组件关系
主要模块功能对比
| 模块类别 | 核心文件 | 主要功能 | 可定制性 |
|---|---|---|---|
| 数据接入层 | DataAPI/CommonStockAPI.py | 统一数据接口抽象 | 支持自定义数据源 |
| K线处理层 | KLine/KLine_List.py | 多级别K线管理 | 支持增量更新 |
| 笔识别系统 | Bi/Bi.py | 分形识别与笔划分 | 多种笔算法可选 |
| 线段分析引擎 | Seg/SegListChan.py | 特征序列线段划分 | 支持三种算法 |
| 中枢计算模块 | ZS/ZSList.py | 中枢区间识别 | 支持跨段中枢 |
| 买卖点分析 | BuySellPoint/BS_Point.py | 形态学买卖点计算 | 可配置背驰算法 |
| 技术指标库 | Math/ 目录下各文件 | MACD/RSI/KDJ等指标 | 支持自定义指标 |
| 可视化系统 | Plot/PlotDriver.py | 多元素绘图引擎 | 可扩展绘图后端 |
| 策略框架 | CustomBuySellPoint/ | 动力学买卖点策略 | 完全可定制 |
三步快速启动:从零到分析
第一步:环境配置与安装
确保系统已安装Python 3.11+环境,然后执行以下命令:
git clone https://gitcode.com/gh_mirrors/ch/chan.py
cd chan.py
pip install -r Script/requirements.txt
第二步:基础配置与数据加载
创建基础的缠论分析配置,并加载股票数据:
from Chan import CChan
from ChanConfig import CChanConfig
from Common.CEnum import KL_TYPE, DATA_SRC
# 创建分析配置
config = CChanConfig({
"seg_algo": "chan", # 使用缠论原文线段算法
"zs_combine": True, # 启用中枢合并
"bi_strict": True, # 使用严格笔定义
"cal_demark": True # 启用德马克指标
})
# 初始化分析器
analyzer = CChan(
code="000001.SZ", # 股票代码
begin_time="2024-01-01",
end_time="2024-12-31",
data_src=DATA_SRC.BAO_STOCK, # 使用Baostock数据源
lv_list=[KL_TYPE.K_DAY, KL_TYPE.K_60M], # 日线与60分钟线联立
config=config
)
第三步:结果可视化与分析
框架展示的多级别K线分析界面,绿色趋势线清晰展示价格走势方向
通过简单的绘图配置,即可将分析结果可视化:
from Plot.PlotDriver import CPlotDriver
# 配置绘图元素
plot_config = {
"plot_kline": True, # 绘制K线
"plot_bi": True, # 绘制笔
"plot_seg": True, # 绘制线段
"plot_zs": True, # 绘制中枢
"plot_bsp": True, # 绘制买卖点
"plot_trendline": True # 绘制趋势线
}
# 生成分析图表
plotter = CPlotDriver(analyzer, plot_config=plot_config)
四大核心功能模块详解
1. 多级别联立分析系统
缠论的核心思想之一就是"区间套"原理,即大级别趋势决定方向,小级别寻找精确买卖点。chan.py通过创新的多级别数据处理架构,实现了真正的级别联立分析。
多级别K线联立分析界面,上方为日线图,下方为30分钟线,通过区间套原理精确定位买卖点
关键特性:
- 支持从年线到1分钟线的全周期分析
- 自动处理级别间的数据对齐与时间映射
- 实时同步更新各级别分析结果
- 提供级别间关系查询接口
2. 动态买卖点识别引擎
框架提供两种类型的买卖点分析:形态学买卖点(bsp)和动力学买卖点(cbsp)。形态学买卖点基于缠论原文定义,而动力学买卖点则允许用户基于自定义策略生成。
缠论买卖点识别结果展示,红色标记为卖点(S1/S2),蓝色标记为买点(B1/B2),虚实线分别表示不同级别的信号
买卖点类型支持:
- 一类买卖点(趋势背驰)
- 二类买卖点(回调确认)
- 三类买卖点(中枢突破)
- 类二买卖点(特殊形态)
- 盘整背驰买卖点
3. 技术指标集成系统
除了缠论自身的分析元素,框架还集成了多种经典技术指标,为分析提供辅助验证:
| 指标名称 | 计算模块 | 主要应用场景 | 配置参数 |
|---|---|---|---|
| MACD | Math/MACD.py | 趋势动量分析 | 快慢线周期可调 |
| RSI | Math/RSI.py | 超买超卖判断 | 计算周期可配置 |
| KDJ | Math/KDJ.py | 随机指标分析 | 默认9周期 |
| 布林线 | Math/BOLL.py | 波动率通道 | 标准差倍数可调 |
| 德马克 | Math/Demark.py | 序列计数分析 | Setup/Countdown参数 |
4. 可扩展的策略开发框架
框架提供了完整的策略开发接口,用户可以通过继承基础策略类实现自己的交易逻辑:
from CustomBuySellPoint.Strategy import CStrategy
class MyTradingStrategy(CStrategy):
def bsp_signal(self, kl_type, last_klu_idx):
"""自定义买卖点信号生成"""
# 获取当前分析状态
current_level = self.kl_datas[kl_type]
# 基于缠论元素判断
if self.check_trend_divergence():
return {"action": "BUY", "confidence": 0.85}
elif self.check_overbought_condition():
return {"action": "SELL", "confidence": 0.75}
return None
三大典型应用场景
场景一:股票趋势跟踪系统
基于框架构建的自动化趋势跟踪系统,可以实时监控股票走势,自动识别趋势转折点:
def trend_monitoring_system(symbol, timeframes=["day", "60min"]):
"""多级别趋势监控系统"""
# 配置多级别分析
config = CChanConfig({
"seg_algo": "chan",
"zs_algo": "auto",
"cal_demark": True,
"cal_rsi": True
})
# 初始化多级别分析器
analyzer = CChan(
code=symbol,
lv_list=[KL_TYPE.K_DAY, KL_TYPE.K_60M, KL_TYPE.K_15M],
config=config
)
# 趋势状态判断
trend_status = analyze_multi_level_trend(analyzer)
# 生成交易信号
signals = generate_trading_signals(trend_status)
return signals
场景二:加密货币量化分析
结合CCXT数据接口,框架可以无缝对接主流加密货币交易所:
from DataAPI.ccxt import CCXTAPI
# 加密货币数据接入
crypto_data = CCXTAPI(exchange="binance")
btc_data = crypto_data.get_kl_data("BTC/USDT", "4h")
# 缠论分析应用
crypto_analyzer = CChan(
code="BTC/USDT",
data_src=DATA_SRC.CCXT,
lv_list=[KL_TYPE.K_4H, KL_TYPE.K_1H],
config=config
)
场景三:期货跨品种套利
利用框架的多合约分析能力,开发跨品种套利策略:
def futures_arbitrage_strategy(main_contract, hedge_contract):
"""期货跨品种套利策略"""
# 分析主力合约
main_analysis = CChan(code=main_contract, lv_list=[KL_TYPE.K_DAY])
# 分析对冲合约
hedge_analysis = CChan(code=hedge_contract, lv_list=[KL_TYPE.K_DAY])
# 计算价差特征
spread_features = calculate_spread_features(main_analysis, hedge_analysis)
# 基于缠论判断套利时机
if check_arbitrage_signal(spread_features):
return generate_arbitrage_signals(main_analysis, hedge_analysis)
return None
性能优化与扩展开发指南
计算性能优化策略
缠论分析涉及大量计算,框架针对性能进行了多重优化:
- 增量计算机制:支持逐根K线更新,避免全量重算
- 缓存系统:通过Common/cache.py实现计算结果缓存
- 并行处理:多级别分析可并行计算
- 内存优化:采用惰性计算和引用计数管理
自定义扩展开发路径
框架采用插件式架构设计,支持多个维度的功能扩展:
1. 自定义数据源接入 继承CCommonStockApi类,实现get_kl_data方法,即可接入任意数据源。
2. 自定义线段算法 继承CSegListComm类,实现自己的线段划分逻辑,支持多种算法并存。
3. 自定义买卖点策略 继承CStrategy类,实现bsp_signal方法,创建个性化交易策略。
4. 自定义技术指标 在Math/目录下添加新的指标计算类,遵循统一的接口规范。
机器学习集成方案
虽然开源版本不包含完整的机器学习模块,但框架的特征计算能力为机器学习集成提供了良好基础:
# 特征提取示例
def extract_chan_features(analyzer):
"""从缠论分析中提取机器学习特征"""
features = {}
# 笔级别特征
features['bi_count'] = len(analyzer.bi_list)
features['bi_length_stats'] = calculate_bi_statistics(analyzer)
# 线段级别特征
features['seg_direction'] = analyze_seg_direction(analyzer)
features['seg_length_ratio'] = calculate_seg_length_ratio(analyzer)
# 中枢级别特征
features['zs_count'] = len(analyzer.zs_list)
features['zs_size_distribution'] = analyze_zs_size_distribution(analyzer)
# 买卖点特征
features['bsp_distribution'] = extract_bsp_distribution(analyzer)
return features
常见疑问解答
Q1:需要多少编程经验才能使用这个框架?
A:具备基础Python编程知识即可上手。框架提供了完整的示例代码和详细的配置说明,即使你是编程新手,也能通过修改示例代码快速开始分析工作。核心功能通过配置即可使用,无需深入理解底层实现。
Q2:框架的计算准确性如何验证?
A:框架提供了丰富的可视化工具,你可以将自动分析结果与手工绘制的缠论图进行对比验证。同时,所有计算逻辑都是透明的,你可以通过调试模式逐步跟踪每个分析步骤,确保计算过程符合缠论原理。
Q3:支持哪些金融市场和品种?
A:框架设计为市场无关的,理论上支持任何提供K线数据的金融市场。目前已预置对接A股、港股、美股、加密货币、商品期货等多种市场的数据接口。只要你能获取到时间、开盘、最高、最低、收盘、成交量这六个基本数据,就可以进行分析。
Q4:实时分析性能如何?
A:经过优化,单只股票日线级别分析(约1000根K线)在普通电脑上仅需几秒钟。支持增量更新机制,新增K线时只重新计算受影响的部分,实时分析性能优秀,适合盘中监控。
Q5:能否处理高频数据?
A:框架支持从1分钟到年线的全周期数据。对于高频数据(如1分钟、5分钟线),建议合理配置分析参数,并注意计算资源消耗。框架提供了缓存机制和性能优化选项,可以有效处理高频数据分析需求。
Q6:如何保证策略的回测准确性?
A:框架提供了严格的时间序列处理机制,确保分析过程中不会使用未来数据。通过trigger_step模式,你可以模拟真实交易环境,逐根K线推进分析,确保回测结果的可信度。同时,框架支持将分析状态序列化保存,便于回测结果的复现和验证。
下一步学习路径
第一阶段:基础掌握(1-2周)
- 运行示例代码,熟悉基本配置
- 学习核心配置参数的含义和影响
- 掌握基本的数据加载和可视化操作
第二阶段:深入理解(2-4周)
- 研究笔、线段、中枢的计算原理
- 理解多级别联立的工作机制
- 学习买卖点识别算法和参数调节
第三阶段:策略开发(1-2个月)
- 基于现有策略模板开发自定义策略
- 实现数据源对接和实时分析
- 构建完整的回测和评估系统
第四阶段:高级应用(长期)
- 集成机器学习模型进行信号优化
- 开发复杂的多品种组合策略
- 构建完整的量化交易系统
框架的核心价值在于将缠论这一复杂的技术分析理论转化为可编程、可测试、可扩展的软件系统。无论你是想学习缠论原理,还是希望将缠论应用于实际交易,这个框架都能为你提供强大的技术支持。
立即开始:克隆仓库,运行示例代码,开启你的缠论量化之旅!通过实践逐步深入,你将能够构建出符合自己交易理念的自动化分析系统。
更多推荐




所有评论(0)