简介:包含缠论公式源码的压缩包,面向熟悉缠论理论且具备大智慧或飞狐平台指标编写基础的投资者,用于将缠论的中枢、走势类型与买卖点判断转化为可视化图表信号,提升盯盘与分析效率。包内共16个文件,以cpp与h源码文件为主,并附dsp、dsw等工程配置及说明txt,便于在对应交易软件中导入编译;整个压缩包仅48KB,轻量实用。已有1327人学习下载。该版本源码体现了缠论策略的工程化实现,包含ChanlunCore、ChanlunTools等核心模块,可帮助使用者理解中枢计算与买卖点识别逻辑,并在此基础上二次调整参数或扩展功能,适合希望将缠论落地为量化辅助工具的中高级股民。1. 缠论源码包:先把行情软件里的买卖点信号跑起来在所有股票技术分析体系里,缠论是最难做成指标的——分型、笔、线段、中枢、背驰环环嵌套,一个包含关系没处理好,整张图就全歪了。这份 v1.2 版缠论源码包,就是把当年只能在纸上手画或者对着复盘软件一笔笔标记的缠论结构,完整做成了可以挂在主流行情软件上的公式脚本。装上之后主图直接画分型、连笔、框中枢,副图给出背驰信号,A 股日线、30 分钟、5 分钟级别都能跑。适合三类人:想用缠论选股但没精力每天手工画笔的;看不懂一堆缠论名词、想直接看图找买卖点的;以及已经手工画过一段时间、想拿公式结果和自己判断做对照的。它解决的不是"预测涨跌",而是把缠论的划分规则固化下来,让买卖点信号有一个可复现、可复盘、不掺杂主观情绪的落点。2. 缠论公式化的引擎:分型、笔与线段的代码骨架缠论没法像 MACD 那样两行公式写完,原因在于它的结构是分层的:先由K线合并出分型,再由分型连成笔,再由笔构成线段,最后在线段上定义中枢和背驰。每一层都依赖上一层的输出,且每层都有自己的形态约束。下面把这四层的判定逻辑拆开讲清楚,这也是拆 v1.2 源码包时最值得先读的部分。2.1 K线包含处理:所有后续计算的起点趋势中出现一根最高价高过前一根、最低价低于前一根的K线,或者反过来被完全包裹住的K线,就叫包含关系。缠论原文对包含关系的处理规则是:向上处理时取高高、高低,向下处理时取低低、低高。"向上"指的是当前合并组处于上行状态,不是K线本身的涨跌。很多公式新手第一次写缠论指标就栽在这里,把向上处理写成了"当前K线收阳就向上",结果分型位置全错。这一段是源码里最先执行的核心逻辑,用类 C 公式脚本写出来是这个骨架:// K线包含处理骨架:把原始K线合并为"无包含"K线序列 // 输入: 原始K线 HIGH / LOW // 输出: 合并后的 H2 / L2 方向 = 1; // 1=向上合并,-1=向下合并 FOR i = 1 TO K线总数-1 // 当前K线与上一根存在包含关系 IF (HIGH[i] >= HIGH[i-1] AND LOW[i] <= LOW[i-1]) OR (HIGH[i] <= HIGH[i-1] AND LOW[i] >= LOW[i-1]) THEN // 向上处理取高高、高低 IF (方向 = 1) THEN HIGH2[last] = MAX(HIGH[i], HIGH[i-1]); LOW2[last] = MAX(LOW[i], LOW[i-1]); // 向下处理取低低、低高 ELSE HIGH2[last] = MIN(HIGH[i], HIGH[i-1]); LOW2[last] = MIN(LOW[i], LOW[i-1]); END IF // 方向不变,继续与下一根K线比较 ELSE // 无包含,当前K线直接纳入输出序列 HIGH2[last+1] = HIGH[i]; LOW2[last+1] = LOW[i]; // 用纳入K线的位置刷新合并方向 IF (HIGH[i] > HIGH[i-1]) THEN 方向 = 1; ELSE 方向 = -1; END IF END IF END FOR这段骨架想表达两个关键点。第一,方向是"合并组"的方向,而不是当前那根K线上涨还是下跌;第二,最后一根K线被纳入输出序列之后才刷新方向,这样下一轮合并才能找到正确的"向上还是向下"的基准。源码包里实际用的写法比这个多了缓存数组和边界保护,但核心判断就是这三行。如果你调试时发现分型位置明显不对劲,优先检查方向切换的时机,不要先怀疑后面的笔逻辑。2.2 分型判定:用三根K线锁定局部极值包含处理做完之后,K线序列里就不会再有纠缠不清的重叠,顶分型和底分型就变成了一个非常干净的判断规则:中间K线的最高价高于左右两边就是顶分型,最低价低于左右两边就是底分型。// 顶底分型判定:作用在已经合并过的 H2/L2 序列上 // DING=顶分型蔻件,DI=底分型蔻件 // 顶分型: 中间K线最高价 > 左K线最高价 且 中间K线最高价 > 右K线最高价 DING := H2 > REF(H2, 1) AND H2 > REF(H2, -1); // 底分型: 中间K线最低价 < 左K线最低价 且 中间K线最低价 < 右K线最低价 DI := L2 < REF(L2, 1) AND L2 < REF(L2, -1);注意 REF(H2, -1) 在公式脚本里代表"未来一根K线",这也是缠论公式最容易踩雷的地方。盘中实时跑的时候,当前这根K线还没走完,它的最高价可能继续往上顶,也可能回落;如果你用 REF(H2, -1) 去判断今天是不是顶分型,明天开盘后今天的判定结果可能就变了。源码包里自带一套"收盘确认"开关,实盘时我会强制打开,后面第 5 章专门讲这个坑。2.3 笔与线段的递归构建:从信号到走势有了顶底分型,笔就是交替出现的顶分型和底分型,且中间至少间隔指定数量的K线。老笔规则是间隔 5 根K线,新笔规则是 4 根。间隔太小,笔就画得密,买卖点信号多到没法用;间隔太大,很多关键拐点会被漏掉,信号变得稀疏。v1.2 里把间隔做成了可调参数,默认 4。// 笔连接判定:顶底分型交替出现,且间隔K线数达标 // 输入: DING / DI 分型信号 // 参数: BI_K = 4 // 新笔规则 上次分型是顶 THEN IF (当前是底) AND (距离上次顶分型 >= BI_K) THEN 新笔起点 = 当前K线; 笔方向 = -1; END IF END IF 上次分型是底 THEN IF (当前是顶) AND (距离上次底分型 >= BI_K) THEN 新笔起点 = 当前K线; 笔方向 = 1; END IF END IF比笔再往上一层的是线段,线段由至少三笔构成,且笔的方向要满足交替——上、下、上或者下、上、下,第三笔不能直接破掉第一笔的起点。线段在源码包里是一段独立的递归函数,它会把已经生成的笔序列重新扫描一遍,遇到笔的破坏关系就截断成新线段。这个递归过程在选股模式下跑全市场时会比较吃性能,第 5 章的卡顿问题就出在这一层。缠论指标和其他技术指标最大的差别就在这里:它是结构递归的,每一笔都依赖之前所有K线的划分结果。看懂这三段骨架,后面读完整源码时会快很多,至少你知道包里每个文件在解决哪一层的问题。3. 拆包 v1.2:源码文件怎么认、怎么挂到界面上压缩包解压之后很多人会懵:里面不是单一一个公式文件,而是一组脚本,有的带 .alg 后缀,有的是纯文本,还有一两个可能需要放进特定目录。下面按最常见的缠论公式包布局来拆,拿到手之后你可以对照自己解压出来的文件逐一归位。3.1 RAR 解压后的文件清单与各自职责文件名(常见命名)类型职责挂载位置CHL_MAIN 或 chl_zhutu主图公式分型标记、笔画线、中枢矩形、买卖点箭头主图叠加CHL_MACD 或 chl_macd_bc副图公式MACD 背驰判断、DIF/DEA 柱线副图CHL_FX 或 fenxing_lib中间计算公式包含关系处理与分型判定子过程不直接挂载,被调用CHL_BI 或 bi_fu中间计算公式笔生成与笔破坏判定不直接挂载,被调用CHL_PICK 或 xuanguba选股公式按买点条件筛选股票条件选股使用说明.txt文本参数说明与导入注意事项无这套结构是这类缠论公式包最标准的排布:主图公式负责画出缠论图形,副图公式负责背驰辅助,两个中间层公式不直接上屏而是被主图和选股公式嵌套调用。选股公式只在你想批量筛股票时用,平时不复盘的话可以暂不挂载。3.2 导入公式管理器的完整操作你不用手动去改任何系统文件,所有的公式脚本都能从行情软件的公式管理器里导入。操作流程如下:步骤操作位置动作结果确认1解压目录把 .rar 解压到单独文件夹,确认文本文件编码为 ANSI/GBK文本打开不乱码2菜单-功能-公式系统打开公式管理器能列出已有分组3公式管理器-新建选择新建公式,输入名称(如 CHL_MAIN)空白编辑区出现4编辑区把 CHL_MAIN.txt 源码全选复制粘贴进去源码无截断5公式管理器-编译点击编译/确定下方提示"编译通过"6主图界面输入指标名称或从公式组里选择挂载主图出现分型/笔如果第 5 步编译报错,先看是不是函数名不兼容。不同行情软件的公式函数族有差异,最常出问题的是画线函数 DRAWLINE、DRAWTEXT 这类带界面输出的调用。这类函数在不同版本里拼写略有区别,比如有的版本用 DRAWLINE、有的用 DRAWLONGSLASH,编译不过就全局搜一下包里的函数名,按当前系统的函数手册替换,逻辑本身不用动。3.3 主图、副图、选股公式怎么分配公式挂载有讲究。缠论图形必须挂在主图,而且要选"叠加"模式而不是"独立"模式,否则K线会被指标画线挡住。背驰信号因为要同时显示 DIF/DEA 柱线,必须挂在副图。选股公式不需要上屏,只放在公式组里供条件选股调用。// 主图画线函数示意(以通用公式脚本为例) // 画分型箭头 DRAWTEXT(DING, HIGH, '顶', 1); DRAWTEXT(DI, LOW, '底', 0); // 连接笔 DRAWLINE(上次DING, HIGH, 上次DI, LOW, 0); // 画中枢矩形 STICKLINE(中枢起始, 中枢上沿, 中枢下沿, 8, 1); // 买卖点标记 DRAWTEXT(买点成立, LOW, 'B1', 1); DRAWTEXT(卖点成立, HIGH, 'S1', 1);不同版本对 DRAWTEXT 的第四个参数定义不太一样,有的表示文字方向,有的表示偏移量。你看到编译报错指向这些行时,直接删掉最后一个参数再试,多数时候就能过。导入这件事不复杂,但值得用一张操作表走一遍,省得后面信号画出来一片乱又回来重新折腾导入。4. 参数怎么调:周期、包含处理、背驰阈值v1.2 装好之后默认参数能跑,但直接拿默认值上实盘会很难受——信号太密或太稀,画笔和手工划分对不上。缠论指标没有"万能参数",它和周期选择、个股股性都有关,下面这套调参流程是我自己验证过相对稳的顺序。4.1 周期选择:日线、30 分钟、5 分钟的差异缠论可以套在任意周期上,但每个周期的行为差异很大:日线:走势结构最稳,分型和笔的容错率高,适合做中长线持仓判断,买卖点信号少但准确率相对高。30 分钟:信号密度明显上升,适合做波段,这时候笔的K线间隔参数可以保持默认,但背驰灵敏度要调低一挡。5 分钟:信号非常密集,噪音特别多,不建议新手直接用 5 分钟,容易每个小反弹都被标记成买点,复盘看全是红箭头。实盘里我一般主图挂日线看大方向,再开一个窗口挂 30 分钟看入场时机。同一个股票,日线处于上升笔而 30 分钟刚好出买点的时候,胜率会明显高一些。4.2 核心参数表与调整方向参数名默认值可调范围调大调小的影响笔成立K线数43~6调大→笔画得少,信号少而稳;调小→笔密,信号多但噪音多包含处理方向自动自动/向上/向下自动适合大多数行情;异常强行指定方向只在特定样本用MACD快线128~15调小→背驰敏感,容易提前;调大→背驰确认慢,信号滞后MACD慢线2620~30调小→反应快;调大→趋势判定更平滑DEA 平滑97~12调小→DIF/DEA 交叉频繁;调大→交叉减少,信号更少背驰触发幅度0.050.02~0.20幅度越小越容易触发背驰;越大要求DIF背离越明显这里要说清楚,背驰不是简单的 DIF 和价格背离,缠论里背驰指的是进入线段离开段之后,MACD 的绿柱面积、DIF 低点都比中枢之前那段更弱。v1.2 里的实现是用"当前离开段的 DIF 极值"与"前面离开段的 DIF 极值"做比较,触发幅度参数就是两者差多少才算有效背离。调太小会把一丁点动能衰弱都算成背驰,信号自然扎堆。4.3 一个可抄的调参顺序不要上来就动参数,先用默认值把股票跑一遍,然后用下面这个顺序逐步调:选一只走势标准的历史股票,日线级别跑一年数据,肉眼检查分型和笔画得是否清楚,这个阶段不要关注买卖点。如果笔明显波浪抖动、频繁切换方向,把笔成立K线数从 4 调到 5 或者 6,重新看视图。如果分型位置跟手工划分相差不大,保持包含方向"自动";如果某一段趋势中分型明显偏低或偏高,把这个参数改成"向上"或"向下"再看。MACD 三参数先用 12/26/9 标准值,尽量不要动,它背后是 EMA 平滑逻辑,乱调会把背驰信号完全搅乱。灵敏度从默认挡位开始,逐步加挡直到买卖点密集度自己满意为止;我的习惯是宁可信号少也不让它天天叫。调参的好处是你可以把不同参数配置保存成不同的指标组,比如"日线稳健版""30分钟波段版",想切换的时候直接换挂载公式即可,不用每次手动改。5. 缠论指标避坑实录:信号漂移、未来函数、性能卡顿缠论指标是所有技术指标里最容易"看起来完美"的一类——回看历史图,分型、笔、中枢、买卖点全标得明明白白,走势拐点一个不落。但一旦切到实盘,问题就全冒出来了。下面这些坑不是个别现象,几乎每台新环境都会踩中一两个,我按踩坑频率从高到低列出来。5.1 未来函数导致信号漂移:看静态结果对,实盘对不上现象:用历史K线复盘时,买卖点箭头精准地标在最低点旁边,觉得这是个神器;但盘中跑的时候,刚才出现的买点过一会儿自己消失了,位置还往后挪了几根K线。原因:公式里用到了 REF(H2, -1) 这类引用未来K线的写法,或者直接把当前未走完的K线纳入了分型判定。历史数据是定型的,怎么引用未来都不怕;盘中K线每一秒都在变,引用未来的结果当然不稳定。解决:把分型判定改成"收盘确认模式",也就是分型是否成立,等下一根K线走完再确定。源码包里如果带"确认延迟"参数,把它设为 1。这样买点会比理想位置晚一根K线出现,但信号不会再漂移。5.2 包含关系处理错误:笔画错,线段跟着全错现象:某些股票上分型位置看着别扭,尤其是一字板、长时间横盘后的爆发段,分型和笔的位置明显错位,后面线段全乱。原因:包含处理里方向切换的时机写错了。向上合并时必须取 MAX(HIGH) 和 MAX(LOW),向下合并时取 MIN(HIGH) 和 MIN(LOW)。错写成了按K线收阳收阴判断方向,横盘股会反复翻转方向。解决:回到 2.1 那段骨架,检查方向刷新是不是放在"无包含K线纳入输出序列"之后。方向必须由合并组最后一次纳入的K线决定,不能由当前K线独立决定。5.3 递归循环把行情软件拖死现象:单只股票跑指标很流畅,一旦用选股公式全市场筛选,软件卡死,或者批量跑的时候进度条走不完。原因:线段划分是递归回溯过程,在大量K线和大量股票上叠加时,时间复杂度接近 O(n^2),如果笔的数据缓存没做好,每一笔都重新扫描整段K线,性能直接爆炸。解决:把选股范围只限定在自选股池,不要全市场跑;如果必须全市场,先跑日线,并且把参与计算的K线数量从"全部"改成最近 500 根。500 根日线大概两年数据,对缠论结构判断完全够用。5.4 买卖点信号扎堆:灵敏度设太高现象:几乎每隔三四根K线就出现一个买点,红箭头密密麻麻,完全分不清主次。原因:背驰触发幅度默认值太小,只要 DIF 稍微弱一点就触发;同时笔成立K线数设太密,导致很多小级别波动也被当成了结构。解决:把背驰触发幅度从 0.05 往上调,同时把笔成立K线数调到 5 或 6。判断标准是:走势图里买卖点应该零星出现,一段趋势里最多两三个,多了就不是缠论,是噪音。5.5 盘中信号出现又消失:未走完K线参与计算现象:午盘出现买入信号,尾盘再看信号没了,甚至变成了卖出信号。原因:盘中信号使用的是实时K线,收盘价还在变动,分型和背驰状态自然也在变。这不是 bug,是数据确认机制的问题。解决:把公式运行方式改成"仅在收盘后确认",或者把盘中信号当参考、收盘信号当依据。实盘时我基本都是尾盘看一次收盘信号,盘中很少依赖箭头操作。老实说,缠论指标跑起来之后,画出来的图到底是不是缠论本来的样子,谁也说服不了谁,这本来就是一套带点玄学的技术体系。但"信号稳不稳、能不能复现、敢不敢照着下单"这件事是能检验的,多数翻车案例都逃不脱上面五个原因。6. 用复盘回放验证 v1.2 的买卖点:一套可重复的历史校验方法源码装好、参数调顺,只能说明公式能跑,不能说明它画得对。真正靠谱的验证方法是复盘回放——用历史数据重新走一遍,看信号出现在当时的哪根K线上,之后走势是否真的验证了这个信号。这套方法我自己每次调完参数都会强制走一遍,比任何"参考图"都有说服力。具体操作是这样的:先找一只波动清晰、走出过完整上升和下降段的股票,把两年的日线数据加载进行情软件,切到回放或训练模式,从第一根K线开始逐步推进。每走几步停一下,记录当前是否出现分型、笔的切换是否合理、买点出现的位置。重点观察买点信号之后 5 到 10 根K线内走势表现,统计正确率和错过率。我自己的标准是:买点后 10 根K线内出现明显上涨且没有立刻创新低的,算一次有效信号;反之一买就套的,算无效信号。正确率能到六成以上,这个参数配置就算能用了,再叠加自己的选股偏好才有意义。为了减少回放时的噪音信号,我给 v1.2 的买点输出加了一道过滤条件,你可以在主图公式里加一段类似的逻辑:// 买点二次确认过滤:原始买点信号 + DIF上穿DEA + 3根K线内不重复 DIF := EMA(CLOSE, 12) - EMA(CLOSE, 26); DEA := EMA(DIF, 9); // 原始一买信号来自源码包主图标注 B1_RAW := 源码包内置的一买信号; // 二次过滤条件 B1_CONFIRM := B1_RAW AND CROSS(DIF, DEA); NO_REPEAT := COUNT(B1_RAW, 3) = 0; // 最终输出 最终买点 := B1_CONFIRM AND NO_REPEAT;这里 COUNT(B1_RAW, 3)=0 约束的是最近三根K线内有买点就不重复报,避免扎堆。你可能会觉得收窄了信号数量,但复盘时你会发现剩下的信号质量高很多。把那段时间逐步回放完之后,把正确率记在参数配置旁边,以后换股票池就直接套用当前参数配置,不用每次从头调。现在每次拿到新的指标源码,哪怕是只改了一个灵敏度参数,我也会先拉一只历史股跑一遍回放,确认信号位置和覆盖面都不离谱再考虑实盘。回放画面里信号稳定且合理的感觉,比看一百张截图都踏实,这个习惯帮我躲过好几次"看着完美、实盘翻车"的验货翻车。希望帮到你。本文还有配套的精品资源,点击获取
简介:包含缠论公式源码的压缩包,面向熟悉缠论理论且具备大智慧或飞狐平台指标编写基础的投资者,用于将缠论的中枢、走势类型与买卖点判断转化为可视化图表信号,提升盯盘与分析效率。包内共16个文件,以cpp与h源码文件为主,并附dsp、dsw等工程配置及说明txt,便于在对应交易软件中导入编译;整个压缩包仅48KB,轻量实用。已有1327人学习下载。该版本源码体现了缠论策略的工程化实现,包含ChanlunCore、ChanlunTools等核心模块,可帮助使用者理解中枢计算与买卖点识别逻辑,并在此基础上二次调整参数或扩展功能,适合希望将缠论落地为量化辅助工具的中高级股民。1. 缠论源码包:先把行情软件里的买卖点信号跑起来在所有股票技术分析体系里,缠论是最难做成指标的——分型、笔、线段、中枢、背驰环环嵌套,一个包含关系没处理好,整张图就全歪了。这份 v1.2 版缠论源码包,就是把当年只能在纸上手画或者对着复盘软件一笔笔标记的缠论结构,完整做成了可以挂在主流行情软件上的公式脚本。装上之后主图直接画分型、连笔、框中枢,副图给出背驰信号,A 股日线、30 分钟、5 分钟级别都能跑。适合三类人:想用缠论选股但没精力每天手工画笔的;看不懂一堆缠论名词、想直接看图找买卖点的;以及已经手工画过一段时间、想拿公式结果和自己判断做对照的。它解决的不是"预测涨跌",而是把缠论的划分规则固化下来,让买卖点信号有一个可复现、可复盘、不掺杂主观情绪的落点。2. 缠论公式化的引擎:分型、笔与线段的代码骨架缠论没法像 MACD 那样两行公式写完,原因在于它的结构是分层的:先由K线合并出分型,再由分型连成笔,再由笔构成线段,最后在线段上定义中枢和背驰。每一层都依赖上一层的输出,且每层都有自己的形态约束。下面把这四层的判定逻辑拆开讲清楚,这也是拆 v1.2 源码包时最值得先读的部分。2.1 K线包含处理:所有后续计算的起点趋势中出现一根最高价高过前一根、最低价低于前一根的K线,或者反过来被完全包裹住的K线,就叫包含关系。缠论原文对包含关系的处理规则是:向上处理时取高高、高低,向下处理时取低低、低高。"向上"指的是当前合并组处于上行状态,不是K线本身的涨跌。很多公式新手第一次写缠论指标就栽在这里,把向上处理写成了"当前K线收阳就向上",结果分型位置全错。这一段是源码里最先执行的核心逻辑,用类 C 公式脚本写出来是这个骨架:// K线包含处理骨架:把原始K线合并为"无包含"K线序列 // 输入: 原始K线 HIGH / LOW // 输出: 合并后的 H2 / L2 方向 = 1; // 1=向上合并,-1=向下合并 FOR i = 1 TO K线总数-1 // 当前K线与上一根存在包含关系 IF (HIGH[i] >= HIGH[i-1] AND LOW[i] <= LOW[i-1]) OR (HIGH[i] <= HIGH[i-1] AND LOW[i] >= LOW[i-1]) THEN // 向上处理取高高、高低 IF (方向 = 1) THEN HIGH2[last] = MAX(HIGH[i], HIGH[i-1]); LOW2[last] = MAX(LOW[i], LOW[i-1]); // 向下处理取低低、低高 ELSE HIGH2[last] = MIN(HIGH[i], HIGH[i-1]); LOW2[last] = MIN(LOW[i], LOW[i-1]); END IF // 方向不变,继续与下一根K线比较 ELSE // 无包含,当前K线直接纳入输出序列 HIGH2[last+1] = HIGH[i]; LOW2[last+1] = LOW[i]; // 用纳入K线的位置刷新合并方向 IF (HIGH[i] > HIGH[i-1]) THEN 方向 = 1; ELSE 方向 = -1; END IF END IF END FOR这段骨架想表达两个关键点。第一,方向是"合并组"的方向,而不是当前那根K线上涨还是下跌;第二,最后一根K线被纳入输出序列之后才刷新方向,这样下一轮合并才能找到正确的"向上还是向下"的基准。源码包里实际用的写法比这个多了缓存数组和边界保护,但核心判断就是这三行。如果你调试时发现分型位置明显不对劲,优先检查方向切换的时机,不要先怀疑后面的笔逻辑。2.2 分型判定:用三根K线锁定局部极值包含处理做完之后,K线序列里就不会再有纠缠不清的重叠,顶分型和底分型就变成了一个非常干净的判断规则:中间K线的最高价高于左右两边就是顶分型,最低价低于左右两边就是底分型。// 顶底分型判定:作用在已经合并过的 H2/L2 序列上 // DING=顶分型蔻件,DI=底分型蔻件 // 顶分型: 中间K线最高价 > 左K线最高价 且 中间K线最高价 > 右K线最高价 DING := H2 > REF(H2, 1) AND H2 > REF(H2, -1); // 底分型: 中间K线最低价 < 左K线最低价 且 中间K线最低价 < 右K线最低价 DI := L2 < REF(L2, 1) AND L2 < REF(L2, -1);注意 REF(H2, -1) 在公式脚本里代表"未来一根K线",这也是缠论公式最容易踩雷的地方。盘中实时跑的时候,当前这根K线还没走完,它的最高价可能继续往上顶,也可能回落;如果你用 REF(H2, -1) 去判断今天是不是顶分型,明天开盘后今天的判定结果可能就变了。源码包里自带一套"收盘确认"开关,实盘时我会强制打开,后面第 5 章专门讲这个坑。2.3 笔与线段的递归构建:从信号到走势有了顶底分型,笔就是交替出现的顶分型和底分型,且中间至少间隔指定数量的K线。老笔规则是间隔 5 根K线,新笔规则是 4 根。间隔太小,笔就画得密,买卖点信号多到没法用;间隔太大,很多关键拐点会被漏掉,信号变得稀疏。v1.2 里把间隔做成了可调参数,默认 4。// 笔连接判定:顶底分型交替出现,且间隔K线数达标 // 输入: DING / DI 分型信号 // 参数: BI_K = 4 // 新笔规则 上次分型是顶 THEN IF (当前是底) AND (距离上次顶分型 >= BI_K) THEN 新笔起点 = 当前K线; 笔方向 = -1; END IF END IF 上次分型是底 THEN IF (当前是顶) AND (距离上次底分型 >= BI_K) THEN 新笔起点 = 当前K线; 笔方向 = 1; END IF END IF比笔再往上一层的是线段,线段由至少三笔构成,且笔的方向要满足交替——上、下、上或者下、上、下,第三笔不能直接破掉第一笔的起点。线段在源码包里是一段独立的递归函数,它会把已经生成的笔序列重新扫描一遍,遇到笔的破坏关系就截断成新线段。这个递归过程在选股模式下跑全市场时会比较吃性能,第 5 章的卡顿问题就出在这一层。缠论指标和其他技术指标最大的差别就在这里:它是结构递归的,每一笔都依赖之前所有K线的划分结果。看懂这三段骨架,后面读完整源码时会快很多,至少你知道包里每个文件在解决哪一层的问题。3. 拆包 v1.2:源码文件怎么认、怎么挂到界面上压缩包解压之后很多人会懵:里面不是单一一个公式文件,而是一组脚本,有的带 .alg 后缀,有的是纯文本,还有一两个可能需要放进特定目录。下面按最常见的缠论公式包布局来拆,拿到手之后你可以对照自己解压出来的文件逐一归位。3.1 RAR 解压后的文件清单与各自职责文件名(常见命名)类型职责挂载位置CHL_MAIN 或 chl_zhutu主图公式分型标记、笔画线、中枢矩形、买卖点箭头主图叠加CHL_MACD 或 chl_macd_bc副图公式MACD 背驰判断、DIF/DEA 柱线副图CHL_FX 或 fenxing_lib中间计算公式包含关系处理与分型判定子过程不直接挂载,被调用CHL_BI 或 bi_fu中间计算公式笔生成与笔破坏判定不直接挂载,被调用CHL_PICK 或 xuanguba选股公式按买点条件筛选股票条件选股使用说明.txt文本参数说明与导入注意事项无这套结构是这类缠论公式包最标准的排布:主图公式负责画出缠论图形,副图公式负责背驰辅助,两个中间层公式不直接上屏而是被主图和选股公式嵌套调用。选股公式只在你想批量筛股票时用,平时不复盘的话可以暂不挂载。3.2 导入公式管理器的完整操作你不用手动去改任何系统文件,所有的公式脚本都能从行情软件的公式管理器里导入。操作流程如下:步骤操作位置动作结果确认1解压目录把 .rar 解压到单独文件夹,确认文本文件编码为 ANSI/GBK文本打开不乱码2菜单-功能-公式系统打开公式管理器能列出已有分组3公式管理器-新建选择新建公式,输入名称(如 CHL_MAIN)空白编辑区出现4编辑区把 CHL_MAIN.txt 源码全选复制粘贴进去源码无截断5公式管理器-编译点击编译/确定下方提示"编译通过"6主图界面输入指标名称或从公式组里选择挂载主图出现分型/笔如果第 5 步编译报错,先看是不是函数名不兼容。不同行情软件的公式函数族有差异,最常出问题的是画线函数 DRAWLINE、DRAWTEXT 这类带界面输出的调用。这类函数在不同版本里拼写略有区别,比如有的版本用 DRAWLINE、有的用 DRAWLONGSLASH,编译不过就全局搜一下包里的函数名,按当前系统的函数手册替换,逻辑本身不用动。3.3 主图、副图、选股公式怎么分配公式挂载有讲究。缠论图形必须挂在主图,而且要选"叠加"模式而不是"独立"模式,否则K线会被指标画线挡住。背驰信号因为要同时显示 DIF/DEA 柱线,必须挂在副图。选股公式不需要上屏,只放在公式组里供条件选股调用。// 主图画线函数示意(以通用公式脚本为例) // 画分型箭头 DRAWTEXT(DING, HIGH, '顶', 1); DRAWTEXT(DI, LOW, '底', 0); // 连接笔 DRAWLINE(上次DING, HIGH, 上次DI, LOW, 0); // 画中枢矩形 STICKLINE(中枢起始, 中枢上沿, 中枢下沿, 8, 1); // 买卖点标记 DRAWTEXT(买点成立, LOW, 'B1', 1); DRAWTEXT(卖点成立, HIGH, 'S1', 1);不同版本对 DRAWTEXT 的第四个参数定义不太一样,有的表示文字方向,有的表示偏移量。你看到编译报错指向这些行时,直接删掉最后一个参数再试,多数时候就能过。导入这件事不复杂,但值得用一张操作表走一遍,省得后面信号画出来一片乱又回来重新折腾导入。4. 参数怎么调:周期、包含处理、背驰阈值v1.2 装好之后默认参数能跑,但直接拿默认值上实盘会很难受——信号太密或太稀,画笔和手工划分对不上。缠论指标没有"万能参数",它和周期选择、个股股性都有关,下面这套调参流程是我自己验证过相对稳的顺序。4.1 周期选择:日线、30 分钟、5 分钟的差异缠论可以套在任意周期上,但每个周期的行为差异很大:日线:走势结构最稳,分型和笔的容错率高,适合做中长线持仓判断,买卖点信号少但准确率相对高。30 分钟:信号密度明显上升,适合做波段,这时候笔的K线间隔参数可以保持默认,但背驰灵敏度要调低一挡。5 分钟:信号非常密集,噪音特别多,不建议新手直接用 5 分钟,容易每个小反弹都被标记成买点,复盘看全是红箭头。实盘里我一般主图挂日线看大方向,再开一个窗口挂 30 分钟看入场时机。同一个股票,日线处于上升笔而 30 分钟刚好出买点的时候,胜率会明显高一些。4.2 核心参数表与调整方向参数名默认值可调范围调大调小的影响笔成立K线数43~6调大→笔画得少,信号少而稳;调小→笔密,信号多但噪音多包含处理方向自动自动/向上/向下自动适合大多数行情;异常强行指定方向只在特定样本用MACD快线128~15调小→背驰敏感,容易提前;调大→背驰确认慢,信号滞后MACD慢线2620~30调小→反应快;调大→趋势判定更平滑DEA 平滑97~12调小→DIF/DEA 交叉频繁;调大→交叉减少,信号更少背驰触发幅度0.050.02~0.20幅度越小越容易触发背驰;越大要求DIF背离越明显这里要说清楚,背驰不是简单的 DIF 和价格背离,缠论里背驰指的是进入线段离开段之后,MACD 的绿柱面积、DIF 低点都比中枢之前那段更弱。v1.2 里的实现是用"当前离开段的 DIF 极值"与"前面离开段的 DIF 极值"做比较,触发幅度参数就是两者差多少才算有效背离。调太小会把一丁点动能衰弱都算成背驰,信号自然扎堆。4.3 一个可抄的调参顺序不要上来就动参数,先用默认值把股票跑一遍,然后用下面这个顺序逐步调:选一只走势标准的历史股票,日线级别跑一年数据,肉眼检查分型和笔画得是否清楚,这个阶段不要关注买卖点。如果笔明显波浪抖动、频繁切换方向,把笔成立K线数从 4 调到 5 或者 6,重新看视图。如果分型位置跟手工划分相差不大,保持包含方向"自动";如果某一段趋势中分型明显偏低或偏高,把这个参数改成"向上"或"向下"再看。MACD 三参数先用 12/26/9 标准值,尽量不要动,它背后是 EMA 平滑逻辑,乱调会把背驰信号完全搅乱。灵敏度从默认挡位开始,逐步加挡直到买卖点密集度自己满意为止;我的习惯是宁可信号少也不让它天天叫。调参的好处是你可以把不同参数配置保存成不同的指标组,比如"日线稳健版""30分钟波段版",想切换的时候直接换挂载公式即可,不用每次手动改。5. 缠论指标避坑实录:信号漂移、未来函数、性能卡顿缠论指标是所有技术指标里最容易"看起来完美"的一类——回看历史图,分型、笔、中枢、买卖点全标得明明白白,走势拐点一个不落。但一旦切到实盘,问题就全冒出来了。下面这些坑不是个别现象,几乎每台新环境都会踩中一两个,我按踩坑频率从高到低列出来。5.1 未来函数导致信号漂移:看静态结果对,实盘对不上现象:用历史K线复盘时,买卖点箭头精准地标在最低点旁边,觉得这是个神器;但盘中跑的时候,刚才出现的买点过一会儿自己消失了,位置还往后挪了几根K线。原因:公式里用到了 REF(H2, -1) 这类引用未来K线的写法,或者直接把当前未走完的K线纳入了分型判定。历史数据是定型的,怎么引用未来都不怕;盘中K线每一秒都在变,引用未来的结果当然不稳定。解决:把分型判定改成"收盘确认模式",也就是分型是否成立,等下一根K线走完再确定。源码包里如果带"确认延迟"参数,把它设为 1。这样买点会比理想位置晚一根K线出现,但信号不会再漂移。5.2 包含关系处理错误:笔画错,线段跟着全错现象:某些股票上分型位置看着别扭,尤其是一字板、长时间横盘后的爆发段,分型和笔的位置明显错位,后面线段全乱。原因:包含处理里方向切换的时机写错了。向上合并时必须取 MAX(HIGH) 和 MAX(LOW),向下合并时取 MIN(HIGH) 和 MIN(LOW)。错写成了按K线收阳收阴判断方向,横盘股会反复翻转方向。解决:回到 2.1 那段骨架,检查方向刷新是不是放在"无包含K线纳入输出序列"之后。方向必须由合并组最后一次纳入的K线决定,不能由当前K线独立决定。5.3 递归循环把行情软件拖死现象:单只股票跑指标很流畅,一旦用选股公式全市场筛选,软件卡死,或者批量跑的时候进度条走不完。原因:线段划分是递归回溯过程,在大量K线和大量股票上叠加时,时间复杂度接近 O(n^2),如果笔的数据缓存没做好,每一笔都重新扫描整段K线,性能直接爆炸。解决:把选股范围只限定在自选股池,不要全市场跑;如果必须全市场,先跑日线,并且把参与计算的K线数量从"全部"改成最近 500 根。500 根日线大概两年数据,对缠论结构判断完全够用。5.4 买卖点信号扎堆:灵敏度设太高现象:几乎每隔三四根K线就出现一个买点,红箭头密密麻麻,完全分不清主次。原因:背驰触发幅度默认值太小,只要 DIF 稍微弱一点就触发;同时笔成立K线数设太密,导致很多小级别波动也被当成了结构。解决:把背驰触发幅度从 0.05 往上调,同时把笔成立K线数调到 5 或 6。判断标准是:走势图里买卖点应该零星出现,一段趋势里最多两三个,多了就不是缠论,是噪音。5.5 盘中信号出现又消失:未走完K线参与计算现象:午盘出现买入信号,尾盘再看信号没了,甚至变成了卖出信号。原因:盘中信号使用的是实时K线,收盘价还在变动,分型和背驰状态自然也在变。这不是 bug,是数据确认机制的问题。解决:把公式运行方式改成"仅在收盘后确认",或者把盘中信号当参考、收盘信号当依据。实盘时我基本都是尾盘看一次收盘信号,盘中很少依赖箭头操作。老实说,缠论指标跑起来之后,画出来的图到底是不是缠论本来的样子,谁也说服不了谁,这本来就是一套带点玄学的技术体系。但"信号稳不稳、能不能复现、敢不敢照着下单"这件事是能检验的,多数翻车案例都逃不脱上面五个原因。6. 用复盘回放验证 v1.2 的买卖点:一套可重复的历史校验方法源码装好、参数调顺,只能说明公式能跑,不能说明它画得对。真正靠谱的验证方法是复盘回放——用历史数据重新走一遍,看信号出现在当时的哪根K线上,之后走势是否真的验证了这个信号。这套方法我自己每次调完参数都会强制走一遍,比任何"参考图"都有说服力。具体操作是这样的:先找一只波动清晰、走出过完整上升和下降段的股票,把两年的日线数据加载进行情软件,切到回放或训练模式,从第一根K线开始逐步推进。每走几步停一下,记录当前是否出现分型、笔的切换是否合理、买点出现的位置。重点观察买点信号之后 5 到 10 根K线内走势表现,统计正确率和错过率。我自己的标准是:买点后 10 根K线内出现明显上涨且没有立刻创新低的,算一次有效信号;反之一买就套的,算无效信号。正确率能到六成以上,这个参数配置就算能用了,再叠加自己的选股偏好才有意义。为了减少回放时的噪音信号,我给 v1.2 的买点输出加了一道过滤条件,你可以在主图公式里加一段类似的逻辑:// 买点二次确认过滤:原始买点信号 + DIF上穿DEA + 3根K线内不重复 DIF := EMA(CLOSE, 12) - EMA(CLOSE, 26); DEA := EMA(DIF, 9); // 原始一买信号来自源码包主图标注 B1_RAW := 源码包内置的一买信号; // 二次过滤条件 B1_CONFIRM := B1_RAW AND CROSS(DIF, DEA); NO_REPEAT := COUNT(B1_RAW, 3) = 0; // 最终输出 最终买点 := B1_CONFIRM AND NO_REPEAT;这里 COUNT(B1_RAW, 3)=0 约束的是最近三根K线内有买点就不重复报,避免扎堆。你可能会觉得收窄了信号数量,但复盘时你会发现剩下的信号质量高很多。把那段时间逐步回放完之后,把正确率记在参数配置旁边,以后换股票池就直接套用当前参数配置,不用每次从头调。现在每次拿到新的指标源码,哪怕是只改了一个灵敏度参数,我也会先拉一只历史股跑一遍回放,确认信号位置和覆盖面都不离谱再考虑实盘。回放画面里信号稳定且合理的感觉,比看一百张截图都踏实,这个习惯帮我躲过好几次"看着完美、实盘翻车"的验货翻车。希望帮到你。本文还有配套的精品资源,点击获取