简介:这是一份面向期货与股票交易者、量化初学者的文华财经指标公式源码文档,针对MACD指标进行深度优化,在原版指标之上加入主图多空分界、50周期均线参考等维度,专门解决趋势方向模糊、买卖点判断困难的问题。压缩包内仅含一个doc文件,大小约64KB,完整展示公式源码及计算流程,覆盖DIF、DEA、MACD核心参数设置,以及金叉死叉信号、DIF拐头价、柱变向价、金死叉价、MACD走平时股价等关键价位算法,其中DIF由短期与长期指数移动平均线差值得到,DEA为DIF的平滑均值,MACD以两倍差值柱状显示。公式以SHORT=12、LONG=26、M=9为默认参数,并借助FILLRGN填充区域和多种颜色区分上升与下降趋势,直观呈现多空转换的临界状态,同时补充黄铢消失见顶、金叉条件等辅助函数,便于提前识别顶部风险与潜在买入机会。当前已有384人学习下载,适合希望完善MACD交易系统、提升文华财经公式编写能力的用户参考。
1. 文华财经指标公式源码里,MACD主图多空分界到底解决什么问题
打开一个标注“文华财经指标公式源码”的 .doc 文件,里面十有八九写的就是 MACD 主图多空分界。这个指标做的事情很直接:把原本挤在副图里的 MACD 逻辑搬到 K 线主图上来,用 K 线颜色、文字标记和信号图标告诉你当前处于多头还是空头,省掉你低头扫副图、抬头找 K 线的来回切换。对于每天要看上百个合约、做日内节奏的交易者来说,这种“一眼定多空”的呈现不是锦上添花,而是真正的提效。这篇文章会从原理、源码、加载到踩坑,把一个能跑的主图 MACD 分界指标讲透,让你拿到手就能用,遇到毛病也知道去哪排查。
2. 理解MACD主图多空分界:从副图搬到主图的逻辑与选型
2.1 为什么要把MACD搬上主图:看盘习惯与多空分界的可视化
常规 MACD 指标在副图里有三条东西:DIFF 快线、DEA 慢线和红绿柱。你在主图上看到一根突破阳线,还要低头确认 MACD 是不是刚好金叉或者红柱放大,这个动作在快速波动时非常容易漏。把 MACD 搬上主图,不是简单把副图框拖上来,而是要把“多空状态”这个结论映射到 K 线本身。
我见过不少开发者自己改过这种指标,核心思路是:DIFF 在 DEA 之上,定义成多头状态;DIFF 在 DEA 之下,定义成空头状态。主图上用颜色、图标或文字把这个状态输出。这样你看到 K 线是红的,就知道 DIFF 在 DEA 上;看到绿的,就知道 DIFF 在 DEA 下。如果还能配合金叉死叉图标,主图上的信息密度会非常高,基本不需要再低头确认。
这种做法的好处是避免了两个视图之间的视觉错位。副图和主图的横坐标虽然能对齐,但人眼扫描需要时间,价格跳太快时容易看串行。把状态直接画在主图坐标里,等于把结论贴在价格旁边,错误率自然降低。另外一个实际好处是截图复盘时,一张图就能完整表达当时的多空结构,不需要把主图和副图拼在一起。
2.2 多空分界的核心:零轴、柱线方向与颜色映射
要写出不跑偏的主图 MACD 分界,必须先理清三个概念的分工。第一个是零轴,它把 DIFF 的正负区间切成强弱区,零轴上方是多头强势区,下方是空头弱势区。第二个是柱线方向,也就是 DIFF 减去 DEA 的两倍值,红柱表示多头动能占据主动,绿柱表示空头动能反扑。第三个是金叉死叉,它是多空分界切换的瞬间信号。
在主图化时,大多数人会犯一个错误:试图把 MACD 柱线照搬到主图上画成小柱子。这个想法很诱人,但实际做的时候会撞上价格尺度和 MACD 数值尺度不匹配的问题。比如某品种价格在 4000 附近,MACD 柱的数值可能是 5 到 15,如果直接乘系数画在主图坐标里,柱子要么短得看不见,要么长得刺穿 K 线。所以成熟的做法是“用状态代替数值”:把 DIFF 与 DEA 的相对关系转成 K 线着色或背景颜色,把柱线粗细留给副图。
我一般给出的多空分界逻辑是这样:DIFF 大于 DEA,K 线主体染成红色,标题文字标“多”;DIFF 小于 DEA,K 线主体染成绿色,标“空”。同时保留金叉和死叉图标,作为分界切换的信号点。这样既不破坏原始 MACD 的数学计算,又能让主图视觉干净。
2.3 适合哪种周期和品种:参数选型参考
MACD 的默认参数 12、26、9 是周线级别打磨出来的经典值,但并不适配所有周期和品种。做 1 分钟或 5 分钟日内交易时,12 和 26 显得太钝,信号少但胜率也许高;做 10 秒级短线时,又需要更快的参数组合。常见做法是把默认参数作为基准,然后针对品种的波动特性做微调。
以某商品期货为例,日内波动大,我习惯用 6、13、5 这样的快参数,因为价格在 5000 点上下波动时,12、26 反应太慢,等柱线翻身可能已经错过一小段行情。而做股指日线波段时,我会保留 12、26、9,反而更稳定。这里没有黄金参数,只有测试出来的适配参数。
选型上还要考虑一个关键点:主图分界指标更适合趋势行情,不适合横盘震荡。因为 K 线颜色会频繁变换,如果盘面在一个窄幅区间内来回洗,红色绿色交替会让人误判。所以正式使用前,最好先拿历史数据复盘几段震荡和趋势行情,看看这个指标的表达是否真的能帮你在混乱中定方向。
3. 手写MACD主图多空分界指标:完整源码与关键函数拆解
3.1 直接可用的文华财经指标源码
下面这段代码是我在文华财经软件里常用的主图分界版本,它没有强行在价格坐标里画假柱子,而是用 DIFF 和 DEA 线条做主视,用 K 线着色和文字标记做多空分界。你可以直接复制到公式管理器里编译。
{文华财经 MACD 主图多空分界 完整源码} DIFF:EMA(CLOSE,12)-EMA(CLOSE,26),COLORWHITE,LINETHICK1; DEA:EMA(DIFF,9),COLORYELLOW,LINETHICK1; MACD:(DIFF-DEA)*2,NODRAW; {多空分界文字提示} DRAWTEXT(DIFF>DEA,LOW*0.99,'多'),COLORRED; DRAWTEXT(DIFF<DEA,HIGH*1.01,'空'),COLORGREEN; {金叉死叉图标} DRAWICON(CROSS(DIFF,DEA),LOW*0.98,1),RED; DRAWICON(CROSS(DEA,DIFF),HIGH*1.02,2),GREEN; {K线着色,直观表达分界状态} STICKLINE(DIFF>=DEA,OPEN,CLOSE,8,1),COLORRED; STICKLINE(DIFF<DEA,OPEN,CLOSE,8,1),COLORGREEN;在文华财经的公式语法中,DIFF和DEA是变量名,也可以写成 DIF 和 DEA。EMA(CLOSE,12)表示对收盘价取 12 周期指数移动平均,EMA(CLOSE,26)同理。MACD用NODRAW修饰,表示这个值只参与计算,不在主图上绘制任何形状。DRAWTEXT在满足条件时于指定坐标写文字,DRAWICON在指定坐标画买入或卖出图标。最后两行STICKLINE用红色和绿色重新绘制 K 线实体,从而把多空状态刷到 K 线身上。
3.2 逐段拆解:均线计算、柱线绘制、分界条件
先看 DIFF 和 DEA 的计算。DIFF 是快慢均线的差值,数学上等于 EMA(CLOSE,12) - EMA(CLOSE,26)。它反映的是短期相对长期的偏离程度。DEA 是 DIFF 的 9 周期平滑值,相当于 DIFF 的慢线。在多头行情中,DIFF 通常在 DEA 之上,且两者在零轴上方运行;空头行情则相反。
MACD:(DIFF-DEA)*2是标准的柱线值。为什么乘 2?这是为了视觉上放大柱线高度,在副图里红绿柱更明显。但在主图里我们不画它,所以这里直接加上NODRAW。如果你还是想看柱线,可以把这个值用副图方式叠加,但我不推荐在主图里硬画。
多空分界条件很简单:DIFF>DEA成立,就是多头,文字“多”画在 K 线最低点的下方一点;DIFF<DEA成立,就是空头,文字“空”画在最高点的上方一点。这里的LOW*0.99和HIGH*1.01是为了让文字离开 K 线本体,避免遮挡价格。如果觉得距离不够,可以改成 0.98 和 1.02。
最后的STICKLINE是主图化的核心视觉。STICKLINE(COND,PRICE1,PRICE2,WIDTH,EMPTY)在条件满足时从 PRICE1 画到 PRICE2 形成一个实体柱。我选择OPEN到CLOSE,宽度设为 8,空芯设为 1。这样会重新画一个半透明的 K 线实体叠加在原有 K 线上。红色代表 DIFF>=DEA,绿色代表 DIFF<DEA,多空力量一目了然。
3.3 关键参数说明:快线、慢线、平滑周期怎么调
代码里的 12、26、9 是三个核心参数。快线参数 12 控制 DIFF 的敏感度,调小会让 DIFF 更快反应价格变化,调大则变钝。慢线参数 26 控制 DEA 的背景周期,调小会让 DEA 更贴近 DIFF,金叉死叉更多;调大则会减少信号数量。平滑参数 9 是对 DIFF 做移动平均的周期,越小越灵敏,越大越稳定。
在文华财经里,你可以直接把这三个数定义成参数变量,方便后续用软件自带的参数优化功能扫描最佳值。常见定义方式如下:
N1:12; N2:26; M:9; DIFF:EMA(CLOSE,N1)-EMA(CLOSE,N2),COLORWHITE; DEA:EMA(DIFF,M),COLORYELLOW;将参数写成变量后,在指标属性里把 N1、N2、M 设置为“外部参数”,就能在加载指标时通过界面直接拖拽调整,不需要反复进公式管理器改代码。我习惯把 N1 设在 5 到 20 之间,N2 设在 20 到 40 之间,M 设在 3 到 12 之间做网格扫描。需要注意,参数越小信号越多,但误判也会增加,必须结合品种波动特性来判断。
在实际使用中,我还会给代码加一个零轴参考线,方便判断强弱区。在主图上可以画一条水平直线:
零轴:0,COLORGRAY,NODRAW;虽然这条线在主图上不一定能直接显示,但如果你在主图叠加了副图 MACD,它会有参考作用。零轴之上做多更顺,零轴之下做空更顺,这个原则在任何周期都适用。
4. 把指标加载到主图:加载步骤与显示优化
4.1 在文华财经软件中新建指标的完整步骤
拿到源码后,第一件事是新建一个空白指标。文华财经软件中,打开主菜单的“公式系统”,找到“公式管理器”,点“新建”按钮。在弹出窗口里选“主图指标”,因为我们要把结果直接画在 K 线图上。如果是副图指标,加载到主图时会被软件强制放进一个独立窗口,达不到我们用 K 线着色的目的。
接着把上面的源码粘贴到编辑区,保存并编译。编译通过后,在 K 线图上右键,选择“叠加其他指标”,在列表里找到你刚才保存的指标名,双击或点确认加载。加载后你会看到 K 线被重新着色,同时 DIFF 和 DEA 线像两条丝带一样包住价格,下方出现文字图标。
如果加载出来只有线没有颜色,先检查主图是否为“价格”模式,某些模板会把默认 K 线颜色强制覆盖。再检查STICKLINE的宽度参数,如果设为 0 或太小,肉眼可能看不清。我常用宽度 8,空芯 1,颜色用纯色保证醒目。
4.2 主图叠加的显示设置与常见冲突
主图指标叠加越多,越容易打架。比如你已经加载了布林带,布林带本身也是用带颜色区域填充的,这时候 MACD 分界的红绿 K 线会被布林带的阴影干扰。我的建议是,MACD 分界指标最好作为主图的唯一叠加成分,最多再配一个均线指标,再多就会乱。
在显示设置上,DIFF 和 DEA 线的颜色我一般用白和黄,线宽 1,这样不会抢 K 线风头。如果你觉得两条线仍然影响看盘,可以把它们也改成NODRAW,只保留 K 线颜色和文字:
DIFF:EMA(CLOSE,12)-EMA(CLOSE,26),NODRAW; DEA:EMA(DIFF,9),NODRAW;这样图面非常干净,只有被染色的 K 线和多空文字。但代价是你看不到均线缠绕的状态,也就是失去了金叉死叉前的预兆。我通常保留这两条线,因为金叉死叉在形成前,DIFF 和 DEA 的斜率变化能提前给你提示。
另一个常见冲突是“自动切换周期”。当你从 5 分钟切到 1 分钟时,指标会自动重新计算并重新绘制,红绿 K 线的切换会非常频繁。这不是代码 bug,而是参数没适配当前周期。建议在切换周期时,同步调整参数组,或者给指标绑定不同的参数模板。
5. 避坑指南:MACD主图指标的5个常见问题与排查
5.1 现象:加载后主图上没有任何颜色和文字
原因往往是公式类型选错了。文华财经的公式管理器区分“主图指标”和“副图指标”,如果你把代码建到了副图指标里,加载时默认会分配到副图窗口,主图上自然什么都看不到。另一个原因是NODRAW用多了,连文字和图标也被吞掉。
解决方法是重新在公式管理器里确认类型,选择“主图指标”,并把DRAWTEXT和DRAWICON加上条件。写完后点编译,确认状态是“编译成功”,再加载到主图。
5.2 现象:K线红色绿色交替太频繁,像是在闪屏
这个现象在 1 分钟图和 5 分钟图上特别明显。原因是 DIFF 在 DEA 上下反复穿越,也就是金叉死叉连续出现。这不是程序出错了,而是市场处于震荡状态。解决方案有两个:一是调大参数,比如把快线从 12 改成 18,慢线从 26 改成 34,让趋势更稳定;二是增加一个过滤条件,只在柱线绝对值大于某个阈值时才画红色绿色:
FILTER:ABS(MACD)>0.5; STICKLINE(DIFF>=DEA AND FILTER,OPEN,CLOSE,8,1),COLORRED; STICKLINE(DIFF<DEA AND FILTER,OPEN,CLOSE,8,1),COLORGREEN;用这种方法可以减少小幅度波动导致的频繁换色。
5.3 现象:文字“多”“空”的位置漂移,有时候跑出屏幕
文字坐标用的是LOW*0.99或HIGH*1.01,当 K 线高低点特别大时,文字会离 K 线很远,甚至超出视图范围。我建议把坐标改成以当前 K 线为基准的绝对偏移,比如使用LOW-20的思路,但不同品种价格尺度不一样,硬编码不合适。更好的做法是用ATR动态偏移:
ATR14:ATR(14); DRAWTEXT(DIFF>DEA,LOW-ATR14*0.3,'多'),COLORRED; DRAWTEXT(DIFF<DEA,HIGH+ATR14*0.3,'空'),COLORGREEN;这样不论价格高低,文字始终贴在 K 线附近固定距离,不会因为价格绝对值不同而离谱。
5.4 现象:信号比副图MACD晚,金叉和死叉对应不上
这是因为主图分界指标用DIFF>DEA作为条件,而标准副图 MACD 的金叉死叉在交点的当根 K 线才出现,两者时点其实一致。但如果你在源码里对 DIFF 或 DEA 做了额外平滑处理,就会产生延迟。我见过有人为了颜色好看,给 DIFF 追加了一次MA(DIFF,3),这会导致金叉死叉晚 2 到 3 根 K 线,非常致命。排查时先审视自己是否加了额外平滑,如果有就删掉。
5.5 现象:同一个指标在不同合约上信号差异巨大
原因是不同品种的价格尺度和波动幅度不同。比如说某品种价格 3000,另一个品种价格 20,同样的 12、26、9 参数下,DIFF 数值的绝对值差了几十上百倍。如果你还在代码里用了固定阈值,比如FILTER:ABS(MACD)>0.5,那价格高的品种颜色变化少,价格低的品种颜色变化频繁。解决方法是把阈值改成基于价格的相对值,比如ABS(MACD)>ATR(14)*0.05,这样就会自适应不同品种的波动。
6. 进阶:用多空分界做主图信号过滤与预警技巧
主图分界不只是用来看着舒服,它可以作为一套独立的过滤系统。我常用的一个进阶功能是“零轴合体”:要求 DIFF 在零轴上方时,金叉信号才有效;DIFF 在零轴下方时,死叉信号才有意义。这等于把趋势方向和动能方向叠加,能过滤掉很多逆势的假信号。实现起来只需在绘制图标的条件里加上DIFF>0和DIFF<0:
DRAWICON(CROSS(DIFF,DEA) AND DIFF>0,LOW*0.98,1),RED; DRAWICON(CROSS(DEA,DIFF) AND DIFF<0,HIGH*1.02,2),GREEN;另一个技巧是使用柱线斜率和 MACD 柱的缩短来做预警。当 K 线还是红色,但 MACD 柱已经连续两根缩短,说明多头动能开始减弱,这个信号比死叉更早。我通常会把这个状态用箭头画在主图收盘价旁边:
SHRINK:MACD>0 AND MACD<REF(MACD,1) AND REF(MACD,1)<REF(MACD,2); DRAWICON(SHRINK,HIGH*1.03,5),COLORYELLOW;把这个条件做成预警品种的过滤条件,就能在盘中自动找到“红柱收缩”的品种,提前准备离场点。这种用法把主图分界从“事后看”变成了“事前盯”,价值完全不同。
最后一个落地习惯:每改完参数,我都会在文华财经的“历史回放”功能里压十几段不同行情,一段趋势一段震荡挨着跑。不看盈利,只看红绿切换的频率和文字标注是否和肉眼判断一致。只有图面表达符合直觉,系统才敢下决心用。
这套 MACD 主图多空分界指标不难写,难的是让它适应你自己的品种和周期。如果你刚接触,我建议先用默认参数跑两周,把你看到的每一次闪色和跳字都记下来,再决定调参数还是换逻辑。别人给的源码永远是起点,改到顺手才是自己的东西。希望帮到你。
本文还有配套的精品资源,点击获取