缠论量化框架chan.py:从手工分析到程序化交易的革命性突破

发布时间:2026/6/19 19:48:27

缠论量化框架chan.py:从手工分析到程序化交易的革命性突破 缠论量化框架chan.py从手工分析到程序化交易的革命性突破【免费下载链接】chan.py开放式的缠论python实现框架支持形态学/动力学买卖点分析计算多级别K线联立区间套策略可视化绘图多种数据接入策略开发交易系统对接项目地址: https://gitcode.com/gh_mirrors/ch/chan.py你是否曾为手工缠论分析的效率低下而烦恼面对海量K线数据传统方法需要数小时才能完成多级别分析而高频交易场景下分钟级别的决策延迟就可能错失良机。更令人头疼的是不同分析师对同一走势的划分结果常常大相径庭主观判断的差异让策略回测和验证变得异常困难。chan.py开源框架正是为解决这些量化交易中的核心痛点而生。这是一个完全工程化的缠论Python实现将复杂的缠论理论转化为可量化、可验证、可执行的算法系统。无论你是个人交易者希望自动化分析还是机构团队需要构建专业级交易系统这个框架都能为你提供从数据处理到策略执行的全栈解决方案。架构设计模块化分层实现专业级分析能力chan.py采用清晰的分层架构设计每一层都有明确的职责边界既保证了系统的灵活性又确保了计算的高效性。数据层多源数据无缝接入框架内置了丰富的数据接口支持从多种数据源获取K线数据from Chan import CChan from Common.CEnum import DATA_SRC, KL_TYPE # 从不同数据源加载数据 chan CChan( codeHK.00700, # 股票代码 data_srcDATA_SRC.BAO_STOCK, # 支持BAO_STOCK、FUTU、AKSHARE、CCXT等 lv_list[KL_TYPE.K_DAY, KL_TYPE.K_60M], # 多级别联立分析 begin_time2020-01-01, end_timeNone # None表示获取最新数据 )数据层不仅支持实时数据接入还提供了高性能的本地离线数据缓存机制。这意味着你可以一次性下载历史数据后续分析完全在本地进行大幅提升计算速度并降低对网络接口的依赖。计算层缠论核心算法的工程化实现计算层是框架的核心实现了缠论的所有基础元素计算笔识别引擎支持严格笔、宽松笔等多种算法可配置分型检查方法线段划分系统提供原文特征序列法、都业华11终结算法等多种实现中枢计算模块支持段内中枢、跨段中枢等不同算法买卖点识别完整的1、2、3类买卖点计算支持背驰度自定义多级别K线联立分析界面上方为日线图下方为30分钟线通过区间套原理精确定位买卖点策略层形态学与动力学双重分析框架不仅提供标准的形态学买卖点bsp更重要的是支持自定义动力学买卖点策略cbsp。你可以基于框架计算出的缠论元素开发自己的交易逻辑from CustomBuySellPoint.Strategy import CStrategy class MyCustomStrategy(CStrategy): def bsp_signal(self, bsp, last_klu): 实现自定义买卖点判断逻辑 # 获取当前技术指标 rsi_value self.calc_rsi(last_klu) macd_value bsp.get_macd_value() # 多因子决策 if bsp.is_buy() and self.validate_buy_signal(rsi_value, macd_value): return {signal: BUY, price: last_klu.close} return None可视化层静态与动态图表支持框架内置了强大的可视化能力支持绘制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_mean: True, # 绘制均线 plot_macd: True, # 绘制MACD } plot_driver CPlotDriver(chan, plot_configplot_config) plot_driver.plot(save_pathanalysis_result.png)缠论买卖点识别结果展示红色标记为卖点(S1/S2)蓝色标记为买点(B1/B2)虚实线分别表示不同级别的信号三分钟快速上手从零到第一个分析结果环境安装与配置# 克隆项目仓库 git clone https://gitcode.com/gh_mirrors/ch/chan.py cd chan.py # 安装依赖包 pip install -r Script/requirements.txt # 验证安装 python main.py基础缠论分析示例让我们从一个最简单的例子开始分析腾讯控股HK.00700的日线级别走势from Chan import CChan from ChanConfig import CChanConfig from Common.CEnum import AUTYPE, DATA_SRC, KL_TYPE # 1. 创建配置对象 config CChanConfig({ bi_strict: True, # 使用严格笔模式 seg_algo: chan, # 使用原文特征序列法划分线段 zs_algo: normal, # 使用段内中枢算法 bs_type: 1,2,3a,3b, # 关注所有买卖点类型 }) # 2. 创建缠论分析实例 chan CChan( codeHK.00700, # 股票代码 begin_time2020-01-01, # 开始时间 end_time2024-12-31, # 结束时间 data_srcDATA_SRC.BAO_STOCK, # 使用baostock数据源 lv_list[KL_TYPE.K_DAY], # 分析日线级别 configconfig, autypeAUTYPE.QFQ, # 前复权 ) # 3. 获取分析结果 bi_list chan[KL_TYPE.K_DAY].bi_list # 笔列表 seg_list chan[KL_TYPE.K_DAY].seg_list # 线段列表 zs_list chan[KL_TYPE.K_DAY].zs_list # 中枢列表 bsp_list chan[KL_TYPE.K_DAY].bs_point_lst # 买卖点列表 print(f识别到 {len(bi_list)} 笔, {len(seg_list)} 线段, {len(zs_list)} 个中枢) print(f发现 {len([p for p in bsp_list if p.is_buy])} 个买点, {len([p for p in bsp_list if not p.is_buy])} 个卖点)常见问题快速解决问题1运行后没有显示图表某些系统会在程序结束后自动关闭绘图窗口。解决方法是在代码最后添加input()等待用户输入或者在Jupyter Notebook中运行。问题2线段划分结果不符合预期可以打开特征序列显示功能辅助分析plot_config {plot_eigen: True} # 显示特征序列问题3需要分析分钟级别数据但数据源不支持框架支持自定义数据源只需继承CCommonStockApi类并实现get_kl_data方法即可。核心功能深度解析多级别联立与区间套策略缠论的精髓在于多级别联立分析chan.py框架完美实现了这一功能# 同时分析日线、60分钟、15分钟三个级别 chan CChan( codeHK.00700, lv_list[KL_TYPE.K_DAY, KL_TYPE.K_60M, KL_TYPE.K_15M], configconfig ) # 获取不同级别的分析结果 day_analysis chan[KL_TYPE.K_DAY] # 日线级别 hour_analysis chan[KL_TYPE.K_60M] # 60分钟级别 minute_analysis chan[KL_TYPE.K_15M] # 15分钟级别 # 区间套分析在日线级别找到买点后到60分钟级别确认 for bsp in day_analysis.bs_point_lst: if bsp.is_buy and bsp.type.contains(BSP_TYPE.B1): # 找到对应时间区间的60分钟级别分析 hour_bsp find_corresponding_bsp(hour_analysis, bsp) if hour_bsp and hour_bsp.is_buy: print(f发现区间套买点日线级别{bsp}60分钟级别确认)缠论趋势线自动绘制功能通过算法识别价格走势中的关键支撑与压力位辅助判断趋势方向与强度实时增量计算与动态更新与传统一次性计算不同chan.py支持逐根K线投喂的增量计算模式特别适合实时交易场景# 启用逐步回放模式 config CChanConfig({trigger_step: True}) # 创建分析实例 chan CChan( codeHK.00700, lv_list[KL_TYPE.K_DAY], configconfig ) # 逐根K线投喂分析 for frame in chan.step_load(): # 每投喂一根K线frame包含当前所有缠论元素 current_bi frame.bi_list[-1] if frame.bi_list else None current_seg frame.seg_list[-1] if frame.seg_list else None # 实时判断买卖点 if frame.bs_point_lst: latest_bsp frame.bs_point_lst[-1] if latest_bsp.is_buy: print(f发现买点信号{latest_bsp})这种增量计算模式不仅节省计算资源更重要的是能够模拟真实交易中的当下判断过程。自定义策略开发框架框架提供了完整的策略开发接口你可以基于缠论元素构建自己的交易系统from CustomBuySellPoint.Strategy import CStrategy from Common.CEnum import BSP_TYPE class TrendFollowingStrategy(CStrategy): def __init__(self, kl_type, is_stockTrue): super().__init__(kl_type, is_stock) self.trend_confirmation_period 5 # 趋势确认周期 def bsp_signal(self, bsp, last_klu): 基于趋势跟踪的买卖点策略 # 检查是否为1类买点 if bsp.type.contains(BSP_TYPE.B1): # 验证趋势条件 if self.check_trend_confirmation(bsp): # 计算止损止盈位 stop_loss self.calculate_stop_loss(bsp) take_profit self.calculate_take_profit(bsp) return { signal: BUY, price: last_klu.close, stop_loss: stop_loss, take_profit: take_profit, confidence: self.calc_confidence(bsp) } return None def check_trend_confirmation(self, bsp): 检查趋势确认条件 # 获取最近几笔的方向 recent_bis self.get_recent_bi(bsp.bi, self.trend_confirmation_period) # 判断是否形成上升趋势 up_count sum(1 for bi in recent_bis if bi.is_up()) return up_count 3 # 最近5笔中至少有3笔上涨Demark指标与缠论结合分析示例通过多指标融合提升信号可靠性高级应用场景实战场景一高频量化交易系统构建对于高频交易场景计算效率至关重要。chan.py通过缓存机制和增量计算优化能够实现秒级响应class HighFrequencyTradingSystem: def __init__(self, symbol, timeframes[1m, 5m, 15m]): self.symbol symbol self.timeframes timeframes self.analyzers {} self.cache {} def initialize(self): 初始化多级别分析器 for tf in self.timeframes: # 使用缓存避免重复计算 cache_key f{self.symbol}_{tf} if cache_key in self.cache: self.analyzers[tf] self.cache[cache_key] else: config self._get_config_for_timeframe(tf) self.analyzers[tf] CChan( codeself.symbol, lv_list[self._convert_timeframe(tf)], configconfig ) self.cache[cache_key] self.analyzers[tf] def process_realtime_data(self, new_klines): 处理实时数据流 signals [] for tf, analyzer in self.analyzers.items(): # 增量更新分析 analyzer.trigger_load(new_klines[tf]) # 获取最新信号 tf_signals self._analyze_timeframe(analyzer, tf) signals.extend(tf_signals) # 多级别共振过滤 resonance_signals self._filter_resonance_signals(signals) return self._generate_trade_orders(resonance_signals)场景二机器学习特征工程集成框架内置了400技术特征为机器学习模型提供丰富的数据基础from ChanModel.Features import CFeatures # 特征提取 features CFeatures(chan) all_features features.get_all_features() # 获取所有特征 # 特征分类使用 price_features features.get_price_features() # 价格相关特征 volume_features features.get_volume_features() # 成交量特征 technical_features features.get_technical_features() # 技术指标特征 pattern_features features.get_pattern_features() # 形态特征 # 构建特征数据集 feature_data [] for bsp in chan[KL_TYPE.K_DAY].bs_point_lst: feature_vector features.extract_at_point(bsp) feature_data.append(feature_vector) # 可用于机器学习模型训练 X np.array([f[values] for f in feature_data]) y np.array([1 if f[is_profitable] else 0 for f in feature_data])场景三自动化交易系统对接框架支持与主流交易平台对接实现完整的自动化交易流程from Trade.TradeEngine import CTradeEngine from Common.CEnum import TrdMarket class AutomatedTradingBot: def __init__(self, config_pathtrade_config.yaml): self.engine CTradeEngine( marketTrdMarket.HK, # 港股市场 config_pathconfig_path ) self.chan_analyzer None def trading_session(self): 交易会话主循环 self.engine.connect() # 连接交易接口 while self.market_is_open(): # 1. 获取实时数据 realtime_data self.fetch_realtime_data() # 2. 缠论分析 if not self.chan_analyzer: self.chan_analyzer CChan( codeself.symbol, lv_list[KL_TYPE.K_5M, KL_TYPE.K_1M], configself.trading_config ) self.chan_analyzer.trigger_load(realtime_data) # 3. 生成交易信号 signals self.generate_signals(self.chan_analyzer) # 4. 风险管理 filtered_signals self.risk_management.filter(signals) # 5. 执行交易 if filtered_signals: self.engine.execute_batch(filtered_signals) # 等待下一个周期 time.sleep(self.config[interval])缠论买点动态更新逻辑展示通过动态调整买点标记适应市场变化性能优化与最佳实践计算性能优化技巧缓存机制利用框架内置了LRU缓存对频繁调用的计算函数进行缓存增量计算模式使用trigger_stepTrue模式进行增量计算避免重复计算并行处理多股票分析时可以使用多进程并行计算from Common.cache import lru_cache_time import concurrent.futures # 使用缓存装饰器优化性能 lru_cache_time(ttl3600, maxsize1024) def compute_heavy_analysis(data): 复杂计算函数结果缓存1小时 return heavy_computation(data) # 并行处理多个股票 def analyze_stocks_parallel(stock_codes): with concurrent.futures.ProcessPoolExecutor() as executor: futures { executor.submit(analyze_single_stock, code): code for code in stock_codes } results {} for future in concurrent.futures.as_completed(futures): code futures[future] results[code] future.result() return results内存管理策略对于大规模数据分析合理的内存管理至关重要class MemoryEfficientProcessor: def __init__(self, batch_size50): self.batch_size batch_size def batch_process(self, stock_list): 分批处理避免内存溢出 results [] for i in range(0, len(stock_list), self.batch_size): batch stock_list[i:iself.batch_size] batch_results self.process_batch(batch) results.extend(batch_results) # 及时清理内存 del batch_results import gc gc.collect() return results扩展与定制开发指南自定义数据源接入如果你有自己的数据源可以轻松接入框架from DataAPI.CommonStockAPI import CCommonStockApi from Common.CEnum import KL_TYPE, AUTYPE from KLine.KLine_Unit import CKLine_Unit class MyCustomDataSource(CCommonStockApi): def __init__(self, code, k_typeKL_TYPE.K_DAY, begin_dateNone, end_dateNone, autypeAUTYPE.QFQ): super().__init__(code, k_type, begin_date, end_date, autype) def get_kl_data(self): 实现数据获取逻辑 # 从你的数据源获取数据 raw_data self.fetch_from_your_source() for row in raw_data: # 转换为框架需要的格式 klu CKLine_Unit({ time: CTime(row.year, row.month, row.day), open: row.open, close: row.close, high: row.high, low: row.low, volume: row.volume, turnover: row.amount }) yield klu自定义指标添加框架支持轻松添加新的技术指标# 1. 在Math目录下创建新指标类 class MyCustomIndicator: def __init__(self, period14): self.period period self.values [] def add(self, price): 计算指标值 self.values.append(price) if len(self.values) self.period: self.values.pop(0) # 计算指标逻辑 indicator_value sum(self.values) / len(self.values) return indicator_value # 2. 在CChanConfig中注册指标 config CChanConfig({ custom_indicator: MyCustomIndicator(period20), # ... 其他配置 })社区贡献与生态建设chan.py作为一个开源项目欢迎开发者参与贡献代码贡献修复bug、优化性能、添加新功能文档完善补充使用教程、API文档、案例分享策略分享在社区分享你的交易策略实现问题反馈提交Issue报告问题或提出改进建议项目采用模块化设计各个组件之间耦合度低便于独立开发和测试。无论你是想修复某个具体bug还是添加全新的功能模块都可以快速上手。学习路径与资源入门学习路径基础掌握阅读quick_guide.md运行main.py示例核心理解研究Bi、Seg、ZS模块理解笔、线段、中枢的计算逻辑策略开发参考Debug目录下的demo策略实现自己的交易逻辑高级应用学习多级别联立、特征工程、机器学习集成等高级功能关键模块学习重点KLine模块理解K线合并与多级别对齐机制Bi模块掌握笔的识别算法与配置参数Seg模块深入学习线段划分的多种实现ZS模块理解中枢的计算与合并逻辑BuySellPoint模块学习买卖点识别与背驰计算调试与问题排查当遇到问题时可以按照以下步骤排查检查数据源确认数据格式正确时间序列连续验证配置参数特别是笔和线段的算法参数使用可视化工具通过绘图确认分析结果查阅社区讨论项目有活跃的Telegram讨论组开启你的缠论量化之旅chan.py框架将复杂的缠论理论转化为可执行的代码让技术分析从手工劳动升级为自动化过程。无论你是想要自动化交易信号生成摆脱手工画图的繁琐策略回测验证系统化验证买卖点有效性多级别联立分析实现真正的区间套策略机器学习集成基于400特征构建智能模型实时交易系统对接实盘交易接口这个框架都为你提供了完整的基础设施。现在就开始你的缠论量化之旅git clone https://gitcode.com/gh_mirrors/ch/chan.py cd chan.py python main.py通过实践探索你将发现缠论量化的无限可能。框架的模块化设计让你可以从小处着手逐步构建复杂的交易系统。从简单的笔段识别开始到完整的自动化交易策略每一步都有清晰的路径和丰富的示例。记住量化交易的核心不是寻找圣杯而是建立可重复、可验证的交易流程。chan.py为你提供了这样的工具剩下的就是你的策略智慧和市场洞察力了。【免费下载链接】chan.py开放式的缠论python实现框架支持形态学/动力学买卖点分析计算多级别K线联立区间套策略可视化绘图多种数据接入策略开发交易系统对接项目地址: https://gitcode.com/gh_mirrors/ch/chan.py创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻