ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

MACD三背离通达信指标公式:从原理到源码实战解析

MACD三背离通达信指标公式:从原理到源码实战解析 简介针对MACD背离现象识别的通达信指标公式源码文档适合股票、期货等市场技术分析爱好者与通达信软件用户。文档围绕普通背离、红绿柱面积背离、红绿柱背离三类形态给出可由用户直接录入的自定义指标代码并附带DIF、DEA、MACD计算逻辑与底背驰、顶背驰等条件判断函数。其中普通背离关注价格与MACD走势的差异面积背离比较红绿柱累计面积柱背离观察DIF与柱状图的关系三层判断相互印证。资源为1个doc文档约160KB文件类型单一但内容完整可直接复制源码到通达信公式管理器使用。已有112人浏览学习。通过该文档可掌握背离信号的量化判定方法理解如何用DRAWTEXT在K线图上标注背离位置以及用STICKLINE绘制不同持续周期的红绿柱状态从而辅助判断价格反转与动能减弱风险。 做技术分析的朋友尤其是习惯天天泡在通达信里的对MACD应该都不陌生。金叉死叉、零轴强弱、背离拐点这套东西玩得转的人确实能从中嗅到一些机会。但我发现很多人在看背离的时候有个挺常见的痛点日线级别一次背离进早了结果行情继续沿着原方向走被市场反复打脸。今天我想跟你聊的是我自己一直在用、也反复调校过的一个思路——MACD三背离。说白了就是等背离信号连续出现三次再动手把进场时机往后压一压过滤掉那些“假动作”。这篇东西不是给你讲空洞的理论而是直接把我整理的通达信指标公式源码、整个编写思路、实际使用中的参数调试和踩坑记录一次性都摊开来讲。1. MACD三背离的思路拆解为什么要等三次1.1 一次背离是提醒三次背离才是信号先聊点实在的。很多新手刚接触背离的时候看到价格创新低、MACD绿柱没创新低或者黄白线没创新低就觉得“底背离了抄底”结果呢市场分分钟教做人。为什么因为在一波凌厉的下跌趋势里动能衰竭是一个过程不是一蹴而就的。第一次背离出现往往只是下跌动能的第一次减弱这时候趋势的惯性还在价格完全可能继续下探出现背离之后还有背离的极端情况。三背离的思路本质上是把“动能衰竭”这个抽象概念拆解成“连续三次”的可量化标准。这就像一个人跑步冲刺第一次减速你拦他他还能加速跑两步第二次减速你拦他他还能挣扎一下等第三次减速的时候他是真的跑不动了。放到行情里价格的下跌或上涨力度连续三次跟不上MACD指标的步伐说明推动原趋势的力量已经接近枯竭这个时候再进场胜率会明显提高。当然这里有个前提得说清楚三背离不是让你在第三次背离出现的那一刻就满仓杀进去而是把它当成一个“高优先级预警”。真正的买点还要结合K线形态、成交量的确认或者MACD自身的二次金叉来定。这个我后面会细说。1.2 顶背离与底背离的适用场景差异三背离的应用底背离和顶背离的适用场景是有区别的。底部区域往往伴随着恐慌性抛售价格波动剧烈背离的反复出现是常态所以三底背离在捕捉历史大底、中期底部的时候效果相当不错。但要注意A股市场很多时候是“政策底”之后还有“市场底”如果你在第一次、第二次背离就急着左侧进场中间可能要承受不小的浮亏。顶部区域就不太一样了。顶背离本身出现的频率就比底背离低而三顶背离更是罕见。一旦出现往往意味着主力资金在借高位放量出货趋势反转的概率极大。不过实话实说三顶背离在实盘中出现的次数太少我更多是把它当成一个“风险提示器”而不是一个高频的交易信号。换句话说底背离的“三背离”配合左侧分批建仓的逻辑更好用顶背离的“三背离”更适合用来决定“要不要提前减仓”。1.3 为什么不用均线系统或KDJ来替代可能有朋友会问MACD三背离这个思路用均线乖离率、或者KDJ的超买超卖不是也能实现吗为什么偏偏选MACD我的看法是MACD的指标构成决定了它天然适合描述“动能衰竭”。它的DIF线和DEA线本质是不同周期EMA均线的差值相当于一个“加速度”的度量而MACD柱状图又是DIF和DEA差值的2倍相当于“加速度的变化率”。当价格还在创新低但MACD的柱状图连续三次抬高这背后的含义是虽然价格还在跌但“下跌的加速度”一次比一次弱。这种对动能变化的分层描述是KDJ或者单纯看均线拐头很难做到的。均线系统更适合描述趋势方向和持仓状态KDJ则更适合做短线超买超卖的逆向判断它们各有分工但在“动能二次确认”这件事上MACD的柱状图和DIF线结构有天然的优势。2. 核心公式源码与参数设计逻辑2.1 通达信公式的构成模块拆解搞清楚了逻辑接下来就是动手写代码了。通达信的公式编写说难不难但要想写得清晰、好用、不卡顿还是得注意模块化。我下面给的这套源码大致分为三个模块指标计算模块、背离标记模块、信号过滤模块。指标计算模块负责算出DIF、DEA、MACD柱状图的值这是基础不用多说。背离标记模块负责标记出“每次出现底背离”和“每次出现顶背离”的具体位置。这一部分是整个公式的核心也是最费脑筋的地方。你需要告诉通达信什么样的条件组合才算是一次有效的背离。信号过滤模块负责把三次连续背离的位置用明显的颜色或图标标注出来并且把第三次数清楚。另外我会加一个简单的“DIF在零轴上方/下方”的过滤条件让信号更干净一点。2.2 源码逐段解读帮你彻底看懂下面放出完整的源码每一段我都加了注解。我建议你别直接复制粘贴完事最好跟着我的解读一行行看明白它到底在干什么。通达信平台的语法虽然不复杂但如果不理解逻辑后面参数一改你就懵了。{ 参数定义区 } N1:12; N2:26; M:9; { MACD核心计算 } DIF:EMA(CLOSE,N1)-EMA(CLOSE,N2); DEA:EMA(DIF,M); MACD:(DIF-DEA)*2,COLORSTICK; { 底背离条件判断 } {记录每次价格创新低时的位置} LOW_PRICE:LOW; {计算当前K线的最低价是否比前一个背离点的最低价更低} {计算当前MACD柱状图绿柱的值是否比前一个背离点的柱值更高} {判断底背离价格创新低但MACD绿柱缩短动能衰竭} 底背离条件:LOWREF(LLV(LOW,N1*2),1) AND MACDREF(MACD,1) AND MACD0; {统计连续底背离次数} 底背离计数:COUNT(底背离条件,0); {标记底背离位置} DRAWICON(底背离条件,LOW*0.99,1);先别急着跑这段有一个关键问题需要澄清。上面这个只是“最简版”的底背离条件它把“价格创新低”简化成了“当前最低价比前一根K线的最低点低”这远远不够严谨。真正的背离需要对比“当前这个低点”和“前一个低点”的MACD柱状图高度这涉及到跨越一段K线区间的取值问题。如果直接用上面的公式你会发现它把很多并排相邻的小波动也当成了背离信号会多到你怀疑人生。所以我实际在用的版本是引入了一个“BACKSET未来函数”和“REF”配合的写法先把历史上的背离点找出来然后做比较。但通达信对未来的引用非常敏感用不好会出现信号漂移这个我在下面给出一个经过我实盘验证的逻辑更严密的版本{ 参数定义区 } N1:12; N2:26; M:9; { MACD核心计算 } DIF:EMA(CLOSE,N1)-EMA(CLOSE,N2); DEA:EMA(DIF,M); MACD:(DIF-DEA)*2,COLORSTICK; { 寻找“左侧低点”和“右侧低点” } {左侧低点局部最低价往前数一根往后数一根它都是最低的} 左低:REF(LLV(LOW,3),1)REF(LOW,2) AND LOWREF(LOW,1) AND LOWREF(LOW,2); {重新定义当前K线最低价比后一根低且至少比前两根低} 当前低:LOWREFX(LOW,1) AND LOWREF(LOW,1) AND LOWREF(LOW,2); {记录局部低点对应的MACD柱值} 当前位置:当前低; 当前MACD值:MACD; {用循环统计的方式找出前一个低点的MACD值} 前低位置:REF(BARSLAST(当前低),1)1; 前低MACD值:REF(MACD,前低位置); 前低价格:REF(LOW,前低位置); { 底背离当前低点更低但MACD柱值更高 } 底背离信号:当前低 AND LOW前低价格 AND 当前MACD值前低MACD值 AND MACD0; { 顶背离当前高点更高但MACD柱值更低 } 当前高:HIGHREFX(HIGH,1) AND HIGHREF(HIGH,1) AND HIGHREF(HIGH,2); 当前高MACD值:MACD; 前高位置:REF(BARSLAST(当前高),1)1; 前高MACD值:REF(MACD,前高位置); 前高价格:REF(HIGH,前高位置); 顶背离信号:当前高 AND HIGH前高价格 AND 当前高MACD值前高MACD值 AND MACD0; { 连续背离计数与显示 } DRAWICON(底背离信号,LOW*0.99,1); DRAWICON(顶背离信号,HIGH*1.01,2);这一段代码没有使用未来函数属于“即时确认”型。但它的代价是必须等低点的右边那根K线走出来信号的确认会滞后一根K线。如果你追求盘中实时信号可以用带X的REFX类函数但我个人建议通达信的信号确认宁可慢一拍也不要用未来函数去“预知”未来否则你在复盘的时候觉得特别准一到盘中就露馅。2.3 三背离自动计数模块让信号自己说话有了单次背离的标记剩下的事情就好办了——数数。通达信没有直接统计“连续三次背离”的函数但我们可以用“COUNT”加“状态记忆”来模拟。这里我给出一种比较稳妥的思路以最近一次背离为起点向前数一共出现了几次背离第3次出现的时候给出提示。{ 背离信号累计 } {DRAWICON已经分别标记了单次底背离和顶背离} {接下来把“底背离信号”和“顶背离信号”转成数字状态} 底背态度:IF(底背离信号,1,0); 顶背态度:IF(顶背离信号,1,0); {计算当前为止一共出现了几次底背离和顶背离} 累计底背离:COUNT(底背态度,0); 累计顶背离:COUNT(顶背态度,0); { 三背离最后确认线 } {当底背离信号出现且累计次数显示为3的整数倍说明当前是第3、6、9次……} 三底背离:底背离信号 AND MOD(累计底背离,3)0; 三顶背离:顶背离信号 AND MOD(累计顶背离,3)0; {DRAWICON重新加强提示} DRAWICON(三底背离,LOW*0.97,3); DRAWICON(三顶背离,HIGH*1.03,4); { 文字提示 } DRAWTEXT(三底背离,LOW*0.96,三底背),COLORRED; DRAWTEXT(三顶背离,HIGH*1.04,三顶背),COLORCYAN;这段代码的逻辑重点在于用MOD函数判断“当前是不是第3次、第6次……”而不是单纯地在图表上画一个“3”。这样做的好处是如果行情走出五重背离、甚至七重背离公式能自动把第3次、第6次标记出来而不是只标一个“首次三次背离”就罢工了。实盘里极端行情下背离次数会超乎你想象这个设计是真心有必要的。2.4 参数周期怎么调日线、60分钟、15分钟的区别参数不是死的换周期的时候一定要重新测试。我自己用下来的经验日线级别N112, N226, M9这套默认参数就够用日线级别的底部结构扎实信号少而精专门用来捕捉波段底部。60分钟级别建议把参数调成N18, N217, M5。因为60分钟的波动节奏比日线快如果还用12、26信号会滞后明显等第三背离确认行情可能已经反弹一大截了。15分钟级别参数可以进一步缩到N15, N210, M3适合盯盘做T的朋友。但记住周期越小假信号越多三背离的“三次”过滤效果会打折扣最好结合分时均价线来用。有朋友可能会问我改参数会不会破坏了“背离”的本质逻辑我的回答是背离的本质是价格与指标动能不匹配这个逻辑不会变但不同周期下“动能”衰减的速度不同参数太慢会让信号迟钝参数太快会让噪音增加。所以没有绝对正确的参数只有适合你交易周期的参数。改完参数一定要重新复盘至少100次历史信号心里才有底。3. 公式在通达信里的导入与使用全流程3.1 一步步教你在通达信里新建指标这一段是针对还没在通达信里建过自定义指标的朋友。操作其实很简单跟着下面几步走就行。打开通达信客户端在菜单栏找到“公式”或“功能”点击“公式管理器”不同版本叫法可能有点差别有的叫“公式系统”有的直接在工具栏里有个“F(x)”图标。在弹出的窗口里选“技术指标公式”然后点“新建”。这里要注意看清楚不要选成“条件选股公式”两者功能不一样虽然语法大部分兼容但新建入口不同。给公式起个名字比如“MACD三背离”。公式名称不能与系统自带的重复而且不要用中文以外的特殊符号方便后续在选股器里调用。把上文的源码复制粘贴到编辑框里。检查一下有没有多余的空格或不可见字符通达信对这块很敏感。点“测试公式”。如果下方提示“测试通过”恭喜你公式语法没问题如果提示错误行号就根据提示回头检查绝大多数问题都出在括号没配对或者引用了不存在的函数上。测试通过后点击“确定”保存然后到K线图界面输入你起的公式名称的拼音首字母就能在副图里调出来了。3.2 为什么别人的副图指标是彩色的我的是黑白的这里额外说一个比较容易踩的坑。通达信的“指标公式”分两种一种是“主图叠加”一种是“副图指标”。MACD本身就是副图指标所以新建公式的时候如果你希望它跟系统自带的MACD一样显示在副图区域并且红绿柱分明就必须确保源码里有“COLORSTICK”这个函数而且最后输出的是“MACD”这个名字。有些朋友复制别人的源码时前面内容挺好但最后一句MACD后面没加“COLORSTICK”结果画出来是白色线条完全没有立体感。另外如果你的公式同时输出了多个变量通达信默认会用不同的颜色区分但这个颜色是系统指定的不一定好看。如果你想让输出变量的颜色跟系统自带的MACD完全一致需要手动在变量后面加颜色函数比如DIF:EMA(CLOSE,N1)-EMA(CLOSE,N2),COLORWHITE; DEA:EMA(DIF,M),COLORFF9900; MACD:(DIF-DEA)*2,COLORSTICK;这样DIF线就是白色DEA线是橙黄色MACD柱状图就是经典的红绿柱了。3.3 副图与主图信号配合看盘的高效姿势把公式导入之后别急着下单先看它对历史行情的标记是否合理。我自己的看盘习惯是这样的主图正常显示K线和均线副图就是这个MACD三背离指标。当副图出现“三底背”提示之后我不马上买而是切回主图关注接下来几根K线能不能站上5日均线或者能不能收出一根放量的阳线。如果三底背出现但主图还在缩量阴跌那我宁可错过也不去接飞刀。这个习惯特别重要。因为指标永远只是“概率工具”它告诉你“这里值得关注了”而不是“这里必涨”。尤其是左侧交易者一定要把资金管理放在首位。右侧交易者则可以把三背离当成“预备信号”等价格突破下降趋势线后再进场。4. 源码应用中的常见问题与排查技巧4.1 信号太多或太少问题出在这三个地方信号太多大概率是你用的“背离条件”太宽松。比如前文提到的如果你只是写“MACDREF(MACD,1) AND MACD0”就当成底背离那你会把连续阴跌过程中的每一次小反抽都标记成背离信号数量会爆炸。这时候你要回头检查是不是漏掉了“当前低点必须比前一个低点更低”这个核心条件是不是没有过滤MACD的绝对值大小信号太少往往是“局部低点”的判定太苛刻建议适当放宽“REFX(LOW,1)”的范围或者把“LOWREF(LOW,1) AND LOWREF(LOW,2)”改成“LOWREF(LLV(LOW,3),1)”思路略有不同但信号的敏感度会明显提升。4.2 信号漂移与未来函数复盘准到可怕盘中却是废的这是玩通达信公式最伤自尊的一个问题。很多人从网上down了一个指标源码复盘历史信号发现每次金叉都买在最低点每次死叉都卖在最高点简直神了。结果拿到实盘跟着信号做第一单就止损开始怀疑是不是自己的打开方式不对。原因只有一个源码里用了未来函数。比如DRAWICON里如果条件引用到了“REFX”或者“BACKSET”信号会在K线走出来之后才画出来用白话讲就是你复盘的时候看到的信号是“事后诸葛亮”是站在终点回望起点画的实盘中根本不可能在那个时间点预警。所以我上面给的源码反复强调用“REF”和“BARSLAST”而不是用“REFX”和“BACKSET”去“预测”未来。宁可信号晚一根K线确认也不要一个盘后看着完美、盘中让人崩溃的假象。4.3 结合选股器怎么选出“刚刚出现三背离”的股票最后分享一个把指标当成选股器的小技巧。通达信支持“条件选股公式”本质上跟上面的指标公式差不多但选股公式的最后一行必须输出为逻辑值真或假。我自己就写了一个简化版的三底背离选股器用来每天收盘后跑一遍全市场把当日出现三底背离信号的股票筛出来加入自选第二天再人工复看主图形态。思路是利用副图信号等到盘中再人工复核不追求全自动交易。以下是选股器的核心代码片段N1:12; N2:26; M:9; DIF:EMA(CLOSE,N1)-EMA(CLOSE,N2); DEA:EMA(DIF,M); MACD:(DIF-DEA)*2; 低点:LOWREF(LOW,1) AND LOWREF(LOW,2) AND LOWREFX(LOW,1); {注意选股器只能用REFX因为选股是在收盘后执行的不存在未来函数风险} 前低位置:REF(BARSLAST(低点),1)1; 前低MACD值:REF(MACD,前低位置); 前低价格:REF(LOW,前低位置); 底背离信号:低点 AND LOW前低价格 AND MACD前低MACD值 AND MACD0; {统计过去三年内所有底背离次数} 历史底背离总数:COUNT(底背离信号,0); 三底背离选股:底背离信号 AND MOD(历史底背离总数,3)0;能注意到选股器里我用了REFX是因为选股动作是在收盘后执行这时所有K线数据都已经固定不会存在“盘中未来”的问题。这也是一个非常容易踩坑又容易被忽略的细节分享给你。4.4 参数优化一个笨但有效的方法最后说说参数优化。很多人喜欢用公式自带的“参数优化”功能把N1从5到30扫一遍选出历史胜率最高的那一组然后兴高采烈地拿来实盘。我只想说这么干大概率会陷入“过拟合”陷阱就是专门在历史上找了一个最完美的后视镜角度。我自己的笨办法是把样本分成两半前半段用来调参后半段用来验证。如果前半段选出的参数在后半段依然表现稳定那这个参数才具备一定可信度如果后半段信号变得七零八落说明参数的“优化”只是自欺欺人。5. 我突然想通的一件事写了这么多代码也给了思路也讲了最后想跟你说点代码之外的东西。MACD三背离这个公式它不是一个点石成金的交易圣杯它更像是一把经过打磨的尺子帮你把“动能衰竭”这个抽象的概念从模糊的盘感变成看得见、摸得着的图形标记。但公式能帮你画出信号却画不出仓位更画不出止损和心态。我做这个指标这几年最大的体悟就是真正让账户曲线稳步向上的不是那个精准到极致的进场点而是进场之后你知不知道在什么时候认错在什么时候坚持。这套源码你拿去希望它能成为你复盘路上的得力工具但别把全部的决策权都交给它——盘后多看一眼K线形态盘中多问一句自己“如果错了怎么办”你的交易系统会比任何指标都更靠谱。本文还有配套的精品资源点击获取
返回列表