ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

文华财经MACD/KDJ/RSI背离公式源码详解与实战调参

文华财经MACD/KDJ/RSI背离公式源码详解与实战调参 简介针对文华财经期货软件中背离类指标公式的源码资料适合在行情软件里研究MACD、KDJ、RSI三类背离信号的量化交易者与程序化策略初学用户。文档以指标公式源码为主围绕背离判断和趋势强弱筛选给出完整变量定义与计算逻辑涉及EMA、SMA、STD、AVEDEV等统计函数以及低点移动平均、随机指标与相对强弱指标的联动用法同时涵盖DIFF、DEA、MACD金叉死叉、BIAS乖离率、KDJ随机指标、RSI超买超卖等常见研判维度可辅助使用者理解背离识别、预警条件和买卖参考场景。资源为单个doc文档仅62KB内容紧凑源码中还包含颜色绘制、预警提示与条件输出语句便于在软件中直接观察信号变化也方便逐行核对并迁移修改。已有1029人浏览学习适合希望通过源码解析掌握背离公式写法、自行调整参数或拓展多周期预警逻辑的期货软件用户。 行情波动大的时候群里总有人问“文华财经的MACD背离怎么写公式”“KDJ背离源码有没有现成的”。这个需求确实高频但真正能讲清楚“背离怎么用代码表达”“为什么这么写”“参数怎么调”的内容少之又少。这篇文章就围绕文华财经WH6/WH8里MACD、KDJ、RSI三类背离公式的源码展开把判断逻辑、代码实现、实操调参和常见坑一次讲透。适合正在写交易公式的量化新手也适合想优化自己指标的老手直接参考。1. 背离公式的整体设计思路为什么把MACD、KDJ、RSI放在一起做1.1 背离的本质与三类指标各自的侧重点技术分析里的“背离”指的是价格走势与指标走势方向不一致。比如价格创新低但MACD的绿柱或快慢线没有同步创新低这就是底背离暗示下跌动能衰竭可能反转向上。反过来是顶背离暗示上涨动能不足可能转跌。但不同指标对“动能”的定义完全不同所以背离信号的触发节奏和可靠性也不同。MACD看的是趋势动能基于均线差离值适合判断中波段的反转KDJ看的是随机摆动灵敏度高适合找短线拐点但假信号也多RSI看的是买卖力量对比在极端超买超卖区域的背离参考价值更高。所以比较好的做法是三者独立计算、独立出信号再通过人工或公式二次组合来做共振确认。共振不是必须的但胜率通常比单一指标高。1.2 文华财经公式语言的基础表达方式文华财经的WH6、WH7、WH8都支持麦语言WH语言编写指标公式。核心语法有几个要点用:定义中间变量用:输出指标线引用前一根K线值用REF(参数, N)判断金叉死叉有CROSS(A, B)价格新高新低可以用HHV、LLV函数取最高值、最低值。写背离公式的核心思路就一句话找两个点前一个极值点和当前极值点比较价格与指标的变动方向。关键是“极值点”怎么定义——是用固定周期高低点还是用动态拐点这直接决定公式的适用范围。2. 三类背离指标的源码拆解与实现2.1 MACD底背离与顶背离源码MACD背离最常用的定义是价格创新低但DIF或MACD柱没有创新低。实际写公式时我习惯用DIF线的背离来判断因为柱状线MACD柱太灵敏连续绿柱缩小时经常出现“假背离”。{——MACD底背离源码——} DIFF : EMA(CLOSE,12) - EMA(CLOSE,26); DEA : EMA(DIFF,9); MACDCOL : (DIFF-DEA)*2, COLORSTICK; {前低点与当前低点判断} 前低价格 : REF(LLV(LOW,20),1); 当前低点 : LLV(LOW,20); 前低DIF : REF(DIFF,1); 当前DIF : DIFF; 底背离 : 当前低点 前低价格 AND 当前DIF 前低DIF; DRAWTEXT(底背离, LOW*0.98, 底背离), COLORYELLOW;这个公式的含义是用20周期的最低价来判断价格是否创新低同时DIF值要比前一个20周期低点对应的DIF值更高。注意我这里用REF(LLV(LOW,20),1)来表示“前一个20周期极值”而不是用REF(LLV(LOW,20),20)。两者的差别是前者是紧邻的极值后者是20个周期之前的低点前者更适合做短线背离判断。顶背离原理对称{——MACD顶背离源码——} 前高价格 : REF(HHV(HIGH,20),1); 当前高点 : HHV(HIGH,20); 前高DIF : REF(DIFF,1); 当前DIF : DIFF; 顶背离 : 当前高点 前高价格 AND 当前DIF 前高DIF; DRAWTEXT(顶背离, HIGH*1.02, 顶背离), COLORYELLOW;这里需要注意DIF值通常有正有负直接比较数值大小没问题但有些朋友会把DIF和DEA的值搞混。背离比较的是DIF线本身不是DEA也不是MACD柱值。柱值受快慢线差值影响在某些钝化阶段会产生两次甚至三次背离实战意义反而减弱。2.2 KDJ背离源码与金叉死叉确认KDJ指标基于随机摆动原理RSV反映当前价格在N日高低区间中的位置K、D是RSV的平滑值J值是K、D的偏离度。KDJ背离的写法与MACD类似但要注意J线不够稳定一般用K线或D线做背离对比。{——KDJ底背离源码——} 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; 前低价格 : REF(LLV(LOW,20),1); 当前低点 : LLV(LOW,20); 前低K : REF(K,1); 当前K : K; KDJ底背离 : 当前低点 前低价格 AND 当前K 前低K; KDJ金叉确认 : CROSS(K,D) AND KDJ底背离; DRAWTEXT(KDJ金叉确认, LOW*0.96, KDJ底背离金叉), COLORYELLOW;这里我加了金叉确认条件目的很明确底背离只是“动能减弱”但价格不一定马上反转可能继续底部钝化。金叉出现代表短线动能开始向上信号质量好很多。如果你只想要背离提示去掉CROSS(K,D)就行。KDJ背离最容易出现的问题是KDJ本身在0到100之间摆动非常高或非常低时容易连续两次触发背离信号。所以建议加入超卖区域过滤比如当K值低于20时才允许出现底背离信号当K值高于80时才允许出现顶背离信号。这样可以过滤掉大量震荡行情中的噪音。2.3 RSI背离源码与超买超卖过滤RSI是基于涨幅和跌幅统计的相对强弱指标它的背离判断更直接——价格创新高但RSI未能同步创新高。默认周期通常取14但文华公式里可以直接用系统函数RSI也可以手写。{——RSI底背离源码——} LC : REF(CLOSE,1); RSI14 : SMA(MAX(CLOSE-LC,0),14,1) / SMA(ABS(CLOSE-LC),14,1) * 100; 前低价格 : REF(LLV(LOW,20),1); 当前低点 : LLV(LOW,20); 前低RSI : REF(RSI14,1); 当前RSI : RSI14; RSI底背离 : 当前低点 前低价格 AND 当前RSI 前低RSI AND RSI14 30; DRAWTEXT(RSI底背离, LOW*0.94, RSI底背离), COLORYELLOW;注意LC和REF(CLOSE,1)是一样的都是取昨收。RSI的默认周期14但在短线交易中周期可以调到6到10灵敏度会提升。跟KDJ同理RSI底背离也应该加一个超卖区过滤一般取30顶背离取70。另外RSI背离有一个细节RSI在超卖区反复钝化时信号会非常密集。我的建议是同一波连续低点中只取第一次背离信号后面的重复信号不再画出来。这个可以用文华的COUNT函数配合BARSLAST来写避免模板图上出现一堆重复标记。3. 完整公式的整合与参数调整策略3.1 同时显示三类背离信号的综合模板实际使用中不建议在同一个窗口里叠加太多线图会很乱。我一般把MACD、KDJ、RSI各自写在独立的副图指标里再单独建一个“共振信号”指标只输出符合条件的文字提示。{——多指标共振背离提示——} DIFF : EMA(CLOSE,12) - EMA(CLOSE,26); DEA : EMA(DIFF,9); RSV : (CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100; K : SMA(RSV,3,1); D : SMA(K,3,1); LC : REF(CLOSE,1); RSI14 : SMA(MAX(CLOSE-LC,0),14,1) / SMA(ABS(CLOSE-LC),14,1) * 100; 前低价格 : REF(LLV(LOW,20),1); 当前低点 : LLV(LOW,20); MACD底背 : 当前低点 前低价格 AND DIFF REF(DIFF,1); KDJ底背 : 当前低点 前低价格 AND K REF(K,1) AND K 30; RSI底背 : 当前低点 前低价格 AND RSI14 REF(RSI14,1) AND RSI14 30; 共振底背 : MACD底背 AND KDJ底背 AND RSI底背; DRAWTEXT(共振底背, LOW*0.92, 三指标共振底背离), COLORYELLOW;三指标共振信号出现的频率会明显低于单独任一指标但一旦出现往往是级别比较大的转折点。我自己复盘下来共振底背离在商品期货日线级别的胜率明显高于小时线可能是因为日线级别趋势更稳定、噪音更少。3.2 参数调整的经验值周期与极值窗口的匹配极值窗口LLV/HHV的周期决定了背离信号的“跨度”。很多人一上来就套默认20但在不同品种上表现差别很大。我的经验是品种周期极值窗口说明1分钟/5分钟10-15短线噪音大窗口太大会错过信号15分钟/30分钟20-30比较均衡的区间60分钟/日线30-40捕捉中期波段转折周线级别40-60过滤大部分假信号但信号非常少KDJ和RSI的周期也需要同步调整。比如把KDJ的9改到12或15钝化情况会减少但灵敏度下降。RSI从14改到10更容易触发超卖区信号更适合高抛低吸策略从14改到21信号更稳定更适合趋势跟踪。参数没有绝对最优关键是“极值窗口与指标周期之间的比例”要协调。比如极值窗口选30指标周期选9这种组合会让KDJ频繁进出超卖区背离信号就会变多。想要少而精就把窗口和周期同步放大。3.3 如何用文华的“未来函数”检测避免假信号文华公式里没有专门的未来函数检测按钮但你自己写公式时要注意几个坑第一REF的周期参数如果是变量可能会出现“动态引用未来”的问题。极值点判断尽量用固定周期别用REF(LLV(LOW, BARSLAST(...)))这种动态回溯写法容易在历史K线上“拿着答案做题”。第二DRAWTEXT和DRAWICON这类绘图函数不会影响信号计算但如果你在条件里嵌套了未来函数画出来的提示在历史图上会很完美实盘却完全匹配不上。第三有些人在公式里用ZIG函数判断拐点来做背离。ZIG本身在文华里就是未来函数不建议用于出实盘信号。如果只是复盘找历史转折点可以参考但别直接用于自动交易。4. 实际运用中的注意事项与常见问题排查4.1 为什么我的公式在盘后和盘中信号不一致这个问题的根源通常在于K线尚未收完时的浮动值。文华WH6在盘中计算指标时当前K线的最高价、最低价、收盘价都在实时变化LLV(LOW,20)取到的20周期最低价可能就是当前这根还没走完的K线。所以盘中会出现背离信号收盘后K线定型信号又消失。解决办法有三个一是设置“K线收盘后出信号”文华WH6可以在“指标公式”或“预警条件”里找相关选项二是公式里强制用REF跳过当前K线比如把当前低点改成REF(LLV(LOW,20),1)把前低改成REF(LLV(LOW,20),2)这样盘中信号只基于已完成的K线三是用ISLASTBAR函数做判断最后一根K线不输出信号。我个人偏向第二种方案虽然信号会晚一个K线出现但胜在稳定复盘图不会出现“信号来回漂”的问题。4.2 信号太频繁怎么过滤信号频繁的典型原因是背离定义的“比较点”太近。比如当前低点比前一根K线低一点DIF比前一根K线高一点这样几乎每根创新低的K线都会触发背离。这时候应该拉大比较跨度。把“前低价格”定义为“过去N个周期的最低点”同时要求当前低点必须比那个最低点更低而不是仅仅比前一周期低。用文华代码表示就是{改进版底背离——拉开比较距离} 前低价格 : REF(LLV(LOW,20),1); 当前低点 : LLV(LOW,20); DIF当前 : DIFF; DIF前低 : REF(DIFF, LLVBARS(LOW,20)1);这里用LLVBARS函数找到20周期最低点所在的位置再用REF取那根K线的DIF值。这样做比简单REF(DIFF,1)更合理因为它真正比较的是“当前低点对应DIF”与“前一个低点对应DIF”而不是当前与前一根K线的差值。这个改进之后大多数伪信号会被过滤掉代价是信号数量会明显减少。4.3 公式编译报错和常见排查思路在文华WH6里粘贴公式后报错大部分是以下原因中英文标点混用。麦语言要求全角符号和半角符号严格一致最常踩坑的是括号、逗号、分号。建议直接在文华编辑器里写别从Word或网页复制带格式的文本。变量名重复。比如既定义了DIFF又在另一行用DIFF :赋值系统会提示变量重复定义。函数参数错误。LLV、HHV、REF、SMA等函数的参数个数、顺序必须完全正确。比如SMA(X, N, M)是三个参数少了M就报错。刻意保留字。尽量别用CROSS、BACKSET、DRAWKLINE这些系统保留字做变量名。遇到报错时建议采用“逐段注释法”先在公式开头加{把后半段全部注释掉编译通过后逐步放开。这个习惯能快速定位问题段比盯着整个公式瞎猜高效得多。4.4 实盘中的背离失效场景再完美的背离公式也不是万能信号。实际操作中有几类行情要特别注意强趋势行情中价格不断创新高指标也在高位僵持不容易触发顶背离。但一旦指标从高位快速回落、突破前低支撑位就是“趋势衰竭”信号这时候再结合K线形态判断比单纯等背离更可靠。震荡行情中背离信号非常频繁但反转不反转都看不懂胜率不高。这种行情下我一般放弃背离改用布林带或均线回归策略。数据跳空或者涨跌停时价格和指标会出现极端乖离背离公式也可能计算出失真值。遇到这种情况建议停用公式人工判断或者等下一根K线确认。5. 我对这套背离公式的实际使用体会写这套公式并不难难的是理解每个参数的“脾气”。我最早用MACD背离源码时直接把网上拷来的代码扔进WH6信号多到密密麻麻几乎每根K线都画箭头后来才发现问题是极值窗口设太小、且没有加DIF前低对应值的定位。改成LLVBARS和REF结合的方式之后信号质量明显上了一个台阶。另外想说一个比较容易被忽略的经验背离信号出来之后别急着立刻进场。我习惯等信号出现后的下一根K线做确认比如看是否出现放量阳线、是否站上关键均线。公式负责筛选人工负责确认这样配合起来胜率会稳定很多。你也可以把这几段背离公式分别存为独立指标在WH6里叠加展示复盘时切换周期观察不同参数下的表现慢慢找到适合自己的品种和周期组合。本文还有配套的精品资源点击获取
返回列表