公司动态

chan.py 完全指南:5分钟自动化缠论笔、线段、中枢与买卖点分析

📅 2026/8/23 11:10:26
chan.py 完全指南:5分钟自动化缠论笔、线段、中枢与买卖点分析
chan.py 完全指南5分钟自动化缠论笔、线段、中枢与买卖点分析【免费下载链接】chan.py开放式的缠论python实现框架支持形态学/动力学买卖点分析计算多级别K线联立区间套策略可视化绘图多种数据接入策略开发交易系统对接项目地址: https://gitcode.com/gh_mirrors/ch/chan.py一根日K收盘后开源的缠论 Python 分析框架 chan.py 能在约 0.8 秒内完成 1000 根日线的全部运算笔、线段、中枢、买卖点逐一算出再配上 MACD 自动画出分析图手工划线的过程被彻底替代。快速上手5分钟跑通第一个缠论分析chan.py 是一套缠论分析的 Python 实现喂入 K 线数据它返回笔、线段、中枢、买卖点的结构化结果并支持直接绘图、逐帧回放、接入自定义策略。它适合两类人想验证自己走势判断的缠论学习者和需要一个可重复、可验证的行情结构解析引擎的量化开发者。环境要求只有一个硬门槛Python 3.11作者实测比 3.8.5 快约 16%。克隆仓库并运行git clone https://gitcode.com/gh_mirrors/ch/chan.py cd chan.py pip install -r Script/requirements.txt python3 main.py默认脚本从 BaoStock 拉取平安银行sz.0000012018 年以来的日K算完所有元素后输出图表。核心逻辑其实只有两个类from Chan import CChan from ChanConfig import CChanConfig from Common.CEnum import AUTYPE, DATA_SRC, KL_TYPE from Plot.PlotDriver import CPlotDriver config CChanConfig({bi_strict: True, seg_algo: chan}) chan CChan( codesz.000001, begin_time2018-01-01, data_srcDATA_SRC.BAO_STOCK, lv_list[KL_TYPE.K_DAY], configconfig, autypeAUTYPE.QFQ, ) CPlotDriver(chan, plot_config{plot_bi: True, plot_seg: True, plot_zs: True, plot_bsp: True})运行后你会看到 K 线上叠加了笔、线段、中枢与买卖点标记的完整图表上图为 60 分钟静态分析结果绿色粗线是线段黑色细线是笔橙色矩形是中枢下方子图是用于背驰判断的 MACD。框架内置的数据源与最常调的配置项如下数据源说明适用场景BAO_STOCK默认A股历史行情日线级别分析开箱即用AkShareA股 / 港股 / 美股 / 加密货币品种覆盖最全FutuA股 / 港股 / 美股实时行情、实盘交易CSV本地文件历史数据回测custom:文件名.类名自己开发接入任意私有数据源配置项默认值作用bi_strictTrue是否只按严格定义成笔seg_algochan划段算法可换 11都业华版或 breakzs_algonormal中枢算法段内 / 跨段 / auto 混合divergence_rate0.91类买卖点的 MACD 背驰比例阈值min_zs_cnt11类买卖点最少经过的中枢数macd_algopeak背驰度量方式可换 area、slope、volumn 等 多级别K线自动对齐是怎么做到的解决什么问题缠论要求日线、30分钟线同时观察而真实数据里两个级别的K线根数不同、时间点无法逐根对齐人工对位几乎不可行。怎么实现lv_list按从大到小传入如[KL_TYPE.K_DAY, KL_TYPE.K_30M]框架按时间把次级别K线挂到父级别K线上。每根单根K线klu都持有两个指针sub_kl_list取到它包含的全部次级别K线sup_kl取到它所属的父级别K线。数据校验默认开启次级别缺失超过max_kl_misalgin_cnt默认 2 根或父子级别日期不一致超过max_kl_inconsistent_cnt默认 5 处会给出警告获取失败的级别可用auto_skip_illegal_sub_lv自动剔除。你最终能拿到什么任意级别通过chan[lv]即达区间套策略从此可以落地——次级别的买卖点落在哪根父级别K线上一查便知上图为日线上与 30 分钟下的联动结果浅色区域标示出次级别的确认区间次级别背驰确认后父级别图上产生带 S1! 标记的区间套卖点。 笔、线段、中枢、买卖点是怎么算出来的解决什么问题人工画笔划线段因人而异、结论不一致1类买卖点依赖背驰比较人工难以给出统一标准。怎么实现K线先经合并去重再依顶底分形算出笔笔连接成线段算法有三选默认chan基于特征序列最贴近原文、11都业华的 11 终结、break线段破坏定义。线段内部再聚合成中枢zs_algo决定用段内、跨段还是混合算法。买卖点分两条线bsp形态学买卖点只依据图形本身判定位置确定、一定正确cbsp自定义动力学买卖点由你的策略在每根新K线到来时判断会有滞后、也不保证成立。你最终能拿到什么图上同时出现两套标注——实线箭头是 bsp虚线箭头是 cbsp事后验证成立的 cbsp 还会打上对勾上图为日线买卖点标注蓝色实线箭头是形态学 bspb1a、b2s、b3红色虚线是策略产出的 cbsp√ 表示该信号最终兑现。若想在图上叠加趋势线辅助观察只需在plot_para[seg]中打开plot_trendline上图展示了日线线段黑、绿虚线叠加红色趋势线的效果用于快速比较线段与趋势的方向强度。买卖点信号消失了怎么办这是你使用 chan.py 时最先产生怀疑的现象但它是设计使然。框架永远在计算当前帧——截至当前K线的、当下成立的元素集合。一段单边下跌中每来一根新低K线一买标记就顺延到新低点一旦开始反弹最低点会被持续标记为一买直到形态证明它不成立才取消。上图 6 格演示了一买从出现、随跌破更新、到被证伪的全过程。所有元素都有is_sure属性确定的元素画实线且永不再变未确定的元素虚笔、虚段只会出现在K线序列的首尾。写策略时要么只用 is_sureTrue 的元素要么自己定义对虚元素的取舍规则。对应的运行开关是trigger_stepTrue此时CChan变成一个生成器每次调用step_load()喂入一根K线并返回当前帧结果增量计算只重算未确定部分速度可以接受。Debug/strategy_demo.py里有一份完整的逐帧回测示例照着改就能跑自己的逻辑。 进阶玩法自定义策略与机器学习集成自定义策略继承CStrategy实现try_open判断当下是否开仓和try_close判断是否平仓把类名赋给CChanConfig的cbsp_strategy即完成注册。策略收到chan与当前级别lv两个入参用chan[lv1]就能直接拿到次级别全部数据写区间套逻辑通常只需 20 行左右实盘场景再补一个bsp_signal方法即可让信号自动入库。Debug/下的 6 个 demo 覆盖了逐帧回测、外部喂K线、小级别触发大级别重算等典型场景。机器学习集成计算 cbsp 时框架会同步产出 400 个内置特征和五种标签。演示位于machinelearning分支strategy_demo5.py涵盖特征添加、模型训练、买卖点打分全流程接入点只有一个——实现一个继承CCommModel的类注册到CChanConfig的model参数每个 cbsp 就会自动获得分数。 避坑指南三个高频问题main.py 运行完看不到图就关了不是程序出错是部分系统下画图窗口随进程退出自动关闭。解法代码末尾加一句input()或者整体在 Jupyter 里运行图就能留下来。序列化或深拷贝 CChan 报递归溢出原因是每个缠论元素内部都持有指向前后元素的指针Python 导出时会沿指针链递归。解法执行sys.setrecursionlimit(0x100000)提高递归上限或使用框架提供的chan.chan_dump_pickle(chan.pkl)与CChan.chan_load_pickle(...)存读快照。画出来的线段看着不对先在plot_config里打开plot_eigen把特征序列画出来对照顶底分型判断算法的确认逻辑是否符合预期仍不接受结果时换一种seg_algo三种算法划出不同线段是正常现象。从今天开始动手chan.py 把笔、线段、中枢、买卖点从看图说话变成了可验证、可回测的代码。运行python3 main.py把code换成一只你熟悉的股票对照自己手划的结果在lv_list中加入KL_TYPE.K_30M看两级联动的区间套图表通读quick_guide.md取出bi_list和bs_point_lst写出第一条简易策略【免费下载链接】chan.py开放式的缠论python实现框架支持形态学/动力学买卖点分析计算多级别K线联立区间套策略可视化绘图多种数据接入策略开发交易系统对接项目地址: https://gitcode.com/gh_mirrors/ch/chan.py创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考