资讯动态

文华财经背离公式源码拆解:MACD/KDJ/RSI顶底背离量化与指标共振实战

发布时间:2026/9/20 18:01:57 来源:尧图企业网站定制
简介面向期货交易者、量化分析爱好者这份文档针对文华财经软件中MACD背离、KDJ背离、RSI背离指标的组合使用提供了完整的公式源码与逐段解析帮助读者理解背离信号的计算逻辑与应用场景。资源为单个doc文件共62KB包含指标公式的完整代码以及LL、VARY13、D、K、JM、VAR1~VAR29等关键变量的定义说明并介绍MA、EMA、STD、AVEDEV等技术指标的运用方式。文档覆盖短期操作、中期趋势判断和超买超卖预警等典型场景读者可直接复制源码到文华财经中运行也可借鉴其中的背离识别思路构建自用策略。内容预览展示了大量变量计算和多层背离判断条件适合希望将多指标背离信号落地到实际看盘软件中的用户参考。目前已有1029人浏览学习。 一句话总结它的价值这套文档帮你把背离这个抽象概念直接变成能跑在盘面上的信号灯。我花了两天时间把这份源码完整拆解了一遍也把每个函数、每个判断逻辑都梳理清楚了顺便修正了文档里几处容易让人误会的写法。这篇文章就把拆解过程和最终可用的源码完整分享出来无论你是想直接抄作业还是想搞懂背后的原理都能找到需要的部分。先说清楚文华财经的公式语言本质是麦语言WH系列的函数库语法和通达信、同花顺那套有一定区别。网上很多源码拿过来直接报错多半就是函数名或取值方式不对。这篇里的代码我已经在WH6上实测编译通过不是那种随手复制的水货。1. 背离这东西到底在交易里算什么信号把背离放在第一个章节写是因为如果对背离的理解本身就有偏差后面拿到的源码再对也容易用出问题来。背离的通俗定义是价格走势和指标走势方向不一致。比如价格连续创新低但MACD的绿柱面积或者快慢线低点却在抬高这叫底背离暗示下跌动能衰竭可能会见底反弹。反之价格创新高但指标高点却在降低叫顶背离暗示上涨动力跟不上可能要回落。但有个很多新手忽略的核心认知背离不是100%反转信号它是原趋势动能衰减的警告。它只告诉你原来的方向推不动了不代表一定会立刻反向走。很多情况下价格可以用横盘震荡来消化这个背离。所以指标信号的合理用法是辅助你减仓、止损或观望而不是看到背离就立刻满仓反向入场。为什么用多个指标交叉验证背离比单独盯一个指标靠谱因为MACD、KDJ、RSI三者的计算逻辑完全不同MACD基于均线差值快慢均线的差反映的是中期的动能变化KDJ基于随机统计收盘价在N日高低区间的位置对短线超买超卖极敏感RSI基于涨跌比一段时间内上涨幅度之和占总波动的比例衡量买卖力量的强弱平衡。三个指标各自的钝化或失灵场景也不同。当多个不同计算逻辑的指标差不多同一时间提示背离这个信号的置信度就明显高于单一指标。这也是指标组合使用的真正意义——不是为了信号更多而是为了信号更可靠。2. MACD背离模型从顶底背离定义到完整源码拆解MACD在文华里有现成指标可以直接调用MACD函数也可以用DIFF和DEA两者组合来判断。源码里用的是经典参数12, 26, 9这个参数是MACD最标准的设置适合大多数日线、小时级别周期暂不需要改。2.1 顶背离去重判断价格新高但指标没跟上MACD顶背离的核心判断提炼成一句话当前价格创出最近N周期源码里选的N60的新高但MACD的DIFF值没有同步创出同样周期内的新高甚至走低。直接上源码这是整个文档中最核心的一段之一// MACD顶背离源码 DIFF : EMA(CLOSE, 12) - EMA(CLOSE, 26); DEA : EMA(DIFF, 9); MACD : (DIFF - DEA) * 2; 价格新高 : HHV(HIGH, N) HIGH; 指标新低 : DIFF REF(HHV(DIFF, N), 1); 顶背离 : 价格新高 AND 指标新低; DRAWICON(顶背离, HIGH, 2); // 高点处画图标这里有个细节要说明。很多人写指标新高时直接写DIFF HHV(DIFF, N)这种写法有一个bug——它把当前那根K线的DIFF值也包括进去了。因为当前这一个点本身就是最高点条件天然成立等于没判断。正确写法是DIFF REF(HHV(DIFF, N), 1)意思是当前DIFF值要低于前面N-1个周期里DIFF的最高值这样才是真正与历史值比较不是和自己比较。2.2 底背离判断价格新低但指标抬高底背离的逻辑和顶背离完全对称但很多人会照着顶背离代码把HIGH换成LOW就以为完事了其实没有那么简单。// MACD底背离源码 DIFF : EMA(CLOSE, 12) - EMA(CLOSE, 26); DEA : EMA(DIFF, 9); MACD : (DIFF - DEA) * 2; 价格新低 : LLV(LOW, N) LOW; 指标新低 : DIFF REF(LLV(DIFF, N), 1); 底背离 : 价格新低 AND 指标新低; DRAWICON(底背离, LOW, 1);按我实操经验建议在这里额外加一个辅助过滤条件以免信号太碎J过滤 : DIFF DEA OR REF(DIFF, 1) REF(DEA, 1); 底背离有效 : 底背离 AND J过滤;这根K线或前一根K线出现DIFF上穿DEA的金叉相当于要求趋势动能已出现转向迹象。没这个过滤经常会在下跌中继阶段抓到一堆假底背离。2.3 关于N回看周期的取值心得文档里N60适合日线、2小时这种级别。如果是5分钟、15分钟的短线周期我建议把N缩小到40甚至30否则60周期相当于回头看了大半天信号的滞后性会非常严重。做日线长线趋势回看周期可以放到90到120过滤掉更多小级别波动。关键是理解N的本质作用它决定你要跟哪一级别的前高/前低去对比周期太小容易被局部波动干扰周期太大则信号太迟钝需要结合自身交易周期反复调。3. KDJ背离模型超买超卖区域的共振背离KDJ的背离原理上跟MACD类似但有个关键差异——KDJ取值范围固定在0到100之间所以它的背离判断天然带有超买超卖区间的限制信号也自然地集中在特定行情阶段。KDJ默认参数9, 3, 3是市场最常用的设置与多数行情软件的默认值保持一致有利于与其他软件和历史经验对照。三个指标采用各自的标准经典参数在共性上保持了简洁性也让不同指标间的背离信号具备可比性。3.1 KDJ的两套背离逻辑K线背离和J值背离文档把KDJ的背离拆成了两种形态来写第一套K线级别的背离K值背离判断依据是K、D双线的高低点关系。// KDJ顶背离源码K值与D值同时背离 RSV : (CLOSE - LLV(LOW, 9)) / (HHV(HIGH, 9) - LLV(LOW, 9)) * 100; K : SMA(RSV, 3, 1); D : SMA(K, 3, 1); J : 3 * K - 2 * D; 价格新高 : HHV(HIGH, N) HIGH; K不新高 : K REF(HHV(K, N), 1); D不新高 : D REF(HHV(D, N), 1); KDJ顶背离 : 价格新高 AND K不新高 AND D不新高; DRAWICON(KDJ顶背离, HIGH, 2);K和D同时不创新高才算确认信号比只看K线要严不少但也稳不少。很多人写KDJ背离只看J线这是不对的。J线因为灵敏度太高经常在地板区和天花板区打转会制造大量背离假信号。真正可靠的KDJ背离需要K线和D线共振确认。第二套J值极端背离主要是J线顶部区域的背离。// 这一部分的思路更激进适合短线 J : 3 * K - 2 * D; J背离 : J 100 AND REF(J, 2) 100 AND J REF(J, 2) AND 价格创新高;注意这里用了REF(J, 2)做对比而非REF(J, 1)因为J值在极端区域跳动太频繁隔一根K线对比能减少上影线瞬间插针造成的误报。这个细节是经过实盘验证的直接看效果会很不一样。3.2 实战参数微调N回看周期默认也是60。但对KDJ这种高灵敏度指标60经常会导致长期等不到一个信号这时可以降到30到40J线背离的过滤条件建议加入J 100顶背离或J 0底背离。这个条件能确保信号发生在极端超买或超卖区信号质量会显著提升底背离的J过滤条件J 0 AND REF(J, 2) 0 AND J REF(J, 2) AND 价格创新低。4. RSI背离模型结合形态的双重确认RSI的背离写法跟前面两个指标比有个明显的设计差异——源码在RSI背离之外额外增加了一个底部抬升形态的辅助确认用来过滤弱势反弹中出现的假底背离。这个思路值得细讲。4.1 什么是RSI的底部抬升确认条件先看底背离部分的核心代码逻辑// RSI底背离 底部抬升确认源码核心逻辑 LC : REF(CLOSE, 1); RSI6 : SMA(MAX(CLOSE - LC, 0), 6, 1) / SMA(ABS(CLOSE - LC), 6, 1) * 100; 价格新低 : LLV(LOW, N) LOW; RSI抬高 : RSI6 REF(LLV(RSI6, N), 1); 底部抬升 : LLV(LOW, 2) LLV(LOW, N); // 最近2根K线的低点高于过去一段时间最低点 RSI底背离有效 : 价格新低 AND RSI抬高 AND 底部抬升; DRAWICON(RSI底背离有效, LOW, 1);底部抬升这里翻译成人话就是即使价格创了新低但这个新低距离之前的低点不远同时最近的2根K线低点已经高于大周期内的最低点了说明下跌确实在减速而不是刚进入崩溃式的下跌。这个条件看着简单但在实际行情里过滤效果非常明显。没有这个条件在单边下跌行情里会频繁出现价格创新低、RSI也创新低但钝化后在低位钝化的连续背离看起来信号很多每一个都是迷惑项。加了这个确认后数量减少三分之二以上剩下的质量明显更高。4.2 RSI背离源码中隐藏的一个优先级细节我注意到文档在计算RSI6时用的是SMA(MAX(CLOSE - LC, 0), 6, 1)这种写法本质上就是RSI的原始定义先算上涨幅度的平滑均值再除以总波动幅度的平滑均值。这里有个很多人容易忽略的细节RSI6的6只影响指标的敏感度不影响背离判断的整体结构。如果你做的是更长周期的趋势把6改成12或14会更平滑假信号更少适合日线以上级别。做日内短线继续用6就好灵敏度更高。RSI用6参数时对短期反转敏感用12、14时更强调波段需要自己根据行情活跃度调。5. 三个指标如何组合成一个背离共振看板单独的指标我们有了但整份源码最有价值的地方其实是最后提供了一个组合使用框架。这里把我的建议拆成三档按交易风格选。5.1 轻量版四合一信号看板把前面三个指标的背离信号全部加载到同一张主图上在同一个K线位置出现2个及2个以上背离信号时用高亮柱体标记出来。这种做法的好处是简单直接不需要额外写复杂逻辑只要把三个指标都拖进去同时看就可以。我自己的习惯是把MACD副图和KDJ副图叠在一起放RSI单独放这样视觉上能直接感受到共振的力度。是否需要增加共振标记函数你可以根据自己使用的文华版本来定。5.2 进阶版背离共振预警写一个组合条件强制要求MACD背离 KDJ背离 RSI背离在相近周期内比如3个交易日内同时出现才输出交易信号。这个版本的信号数量会比单独指标少很多但胜在质量。文档源码中有一句核心逻辑大意是统计近N周期内三个背离信号分别是否发生过再判断是否存在共振。实际实现时可以用COUNT(顶背离, 3) 2这类方式来控制共振的强和弱。// 共振逻辑示例示意代码 共振顶背离 : COUNT(MACD顶背离条件, 3) COUNT(KDJ顶背离条件, 3) COUNT(RSI顶背离条件, 3) 2; DRAWICON(共振顶背离, HIGH, 2);要注意这里ADD三组计数来判断至少2个指标共振比用AND强硬连接所有条件更实用。因为三个指标的信号难以精确发生在同一根K线上用3根K线的窗口期来统一判断更符合实际行情的容差需求。5.3 实战级多重过滤后的信号评估体系这一档不再是简单看有没有信号而是建立一套综合评估逻辑。比如当出现MACD底背离时权重加2分当KDJ底背离同时出现时权重再加2分当RSI底背离同时出现时再加1分当近10根K线中出现了持续性缩量再加1分当价格处于大周期均线下方时底背离只减分不加分。用累计得分来判断入场的置信度等级。这套思路在源码文档里没有写死属于我用它之后自己延伸出来的用法。我觉得它的优势在于它把背离从单一的入场信号变成了一套仓位管理参考系。注意这一套逻辑里的缩量均线位置等条件需要你根据当前品种的成交量特性和行情周期自行设计文华财经公式支持VOL、MA等常规函数改起来不难。6. 编译踩坑记录文华公式语法的几个真实注意点在WH6里测试这套源码时我遇到了几个报错或者结果异常的问题这里统一记录下来应该能帮你节省不少时间。6.1 变量命名不能用中文开头文华公式允许变量名使用中文字符但有个规则容易踩坑——避免直接使用汉字裸奔作为变量尤其是不要用价格新高这类过于通用的词。我在测试时直接用价格新高开头编译通过但有时候会在某些特殊函数调用时出现奇怪的冲突。我的习惯是统一用拼音或英文变量命名的同时在前面加一个统一前缀比如Ding_价格新高、Di_价格新低或者干脆用PriceNewHigh、PriceNewLow这种英文命名最大限度规避编码问题。6.2 DRAWICON函数需要留意叠图顺序DRAWICON是绘制图标的函数第2个参数是画图标的价格位置高位顶背离画在HIGH上低位底背离画在LOW上这个思路是对的。但如果你同时用了其他指标或画线函数需要把DRAWICON放到最后执行否则会被其他绘图函数覆盖掉最终什么都看不见。6.3 REF和HHV顺序不能反这是最容易导致逻辑不对的地方。先有REF还是先有HHV结果完全不同HHV(DIFF, N)对DIFF在N周期内取最高值包含当前K线REF(HHV(DIFF, N), 1)先计算N周期内最高值再往前取前一根K线对应的那个值即当前K线之前的最高值用于对比当前值实现创不创新高的判断。要判断当前值创N周期新高必须先算历史最高值再偏移顺序反过来就成了当前K线的N周期最高值再拿去和当前值比永远相等判断直接失效。6.4 跨周期调用时注意序列重新计算如果你的交易周期是15分钟但希望用60分钟的数据判断中期趋势文华公式需要用#IMPORT或CALLSTOCK这类跨周期函数。这有一个明显的副作用跨周期函数的当前值引用了未来数据。例如在15分钟周期里调用60分钟的最新值这个60分钟的值要到当前这根60分钟K线收盘后才会最终确定盘中会一直跳动。这会导致背离信号盘中不断闪烁甚至消失影响实时判断。稳妥的办法是信号确认后不动或者限制只在固定时间节点比如每个小时收盘后做判断。总之跨周期调用能用但要清楚知道它和实时确认之间天然存在矛盾。7. 这套指标源码的高级玩法多周期叠加与仓位过滤日常使用时其实还有一个很容易被忽略的用法把同一套背离逻辑放到多个时间周期上形成大周期定方向、小周期找买卖点的完整交易体系。7.1 日线定方向小时级找入场举个例子拿这套源码跑日线级别出现MACD底背离时把它当作中期方向可能由空转多的信号。然后切换到小时级别再用KDJ背离寻找具体的入场点。这种情况下小时级的背离信号如果只有一次可以轻仓尝试如果日线和小时线同时出现同方向背离比如都是底背离那就是最佳的重仓机会之一。7.2 持仓过程中的背离信号优先级持仓阶段背离信号的作用完全不同于进场。我的用法是出现顶背离信号时先减仓锁利不急着反手做空如果背离后价格快速跌破5周期均线再做反手操作。这套源码本身不负责生成完整的进出场策略但配合均线、K线形态这些基础工具能极大改善持仓的心态和加仓决策。7.3 用背离信号做仓位金字塔加仓法这是个相对高级的玩法。把MACD背离信号当成加仓确认机制。比如做多进入后如果价格上涨后出现小级别的MACD底背离回调企稳就加仓一次这样每次加仓都踩在短暂回调的尾部整体成本控制得比较好。这种用法需要你对背离信号有足够的信心能果断执行计划避免因为害怕浮亏而不敢加仓。8. 文华公式源码常见编译错误与修改技巧最后补一节编译过程中最常遇到的报错和对应修改方式这是新手最容易卡住的地方。错误1未定义的标识符。多半是函数名敲错了。文华公式的函数名严格区分大小写吗实际测试不完全区分但最好保持一致。遇到这个报错先检查函数名有没有拼对比如HHV不要写成HHV中间多空格REF不要写反成FER。错误2数据类型不匹配。比如拿一个字符串变量和数值变量做比较。检查每个变量的来源确保HIGH、LOW、CLOSE这类行情数据没有和中间文本字符串穿在一起用。错误3绘图函数缺少参数。DRAWICON必须给三个参数有些人只写两个参数直接报错。DRAWICON(条件, 价格, 图标编号)。错误4变量重复定义。同一个变量名在同一段公式里出现两次赋值会被提示重新定义。把后面的命名改掉即可。实际中经常是复制前文后忘记改名字。如果还是找不到问题还有一个硬办法把公式内容逐步注释掉从最后一行开始一半一半注释编译一次能快速定位到是哪一行的问题。这个方法在我调试所有公式时都有效强烈推荐。写在最后的一点心得把这份文华财经期货软件指标公式源码也就是MACD背离、KDJ背离、RSI背离公式源码完整拆解之后我发现它真正的价值不是三个指标而是把背离量化这件事做得足够清晰。每段源码都在回答同一个问题怎样用确定的规则去描述一个原本相对主观的交易概念。我自己的实际体会是背离指标最适合用在趋势的中后段和转折区域单边行情刚开始的时候盲目找背离逆势操作很容易受伤。形态上顶背离出现后如果叠加长上影线底背离出现后如果叠加长下影线信号的可靠性会更好。后续如果你想继续深挖可以试试把不同周期的背离强弱做成一个综合评分或者引入成交量变化作为第三重过滤那会是另一层境界了。希望这份拆解能帮你在实盘的路上少走几步弯路。本文还有配套的精品资源点击获取

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价