
📦 福利分享
本期给大家拆解一款实战型指标——实战MACD买卖信号副图指标。如果你一直觉得传统MACD信号滞后、容易洗出去,这个副图或许能给你新思路。完整源码我已整理好,有需要的朋友文末自取。
🔬 指标原理(讲透逻辑)
拆解:这个副图如何让MACD"开口说话"?
大伙都知道,MACD本质是两条均线的差,反映趋势动能。金叉死叉是经典用法,但实战中常遇到两个问题:一是信号滞后,等金叉出现,行情可能已涨了一段;二是震荡市中假信号多,容易被反复洗盘。
这个副图指标的核心思路,不是简单看金叉死叉,而是结合价格在关键位置的突破确认,过滤掉一部分噪音。它主要做了三件事:
第一,画一条"动态多空分界线"。
代码里的UDGLINE就是这条线。它不像传统支撑压力线那样固定,而是根据前期高点低点动态生成。当价格突破这条线,同时满足条件,才可能触发"买入确认"信号(代码中JDU0);跌破时则触发"卖出确认"(JUD0)。这就像给行情划了个"警戒区",价格真站稳了才相信它要动。
第二,要求"唯一确认",避免骗线。
指标里设置了JDU1和JUD1,要求某个方向的突破信号,在最近一段周期内必须是"第一次出现"。换句话说,如果价格反复上下穿越那条动态线,指标会保持沉默,直到它认为这是一次"有效突破"。这对应咱们常说的"事不过三",第三次再突破,才更可信。

第三,结合MACD柱状图状态,给出明确操作提示。
最直观的就是图上直接写的"建仓""空仓"四个字。它不只是看DIF和DEA的交叉,还结合了MACD柱(MACD2)的正负和变化节奏。比如:
"建仓":通常出现在DIF在0轴下方、且MACD柱由绿转红或缩短时,提示下跌动能衰竭,可能迎来反弹。
"空仓":多出现在DIF在0轴上方、MACD柱由红转绿或缩短时,提示上涨动能减弱,需警惕回调。
这些文字提示,相当于把复杂的曲线关系,翻译成了你能一眼看懂的"操作指令"。但记住,它只是辅助,不能替代你对大盘环境和个股逻辑的判断。
最后说适配范围:
这个指标更适合震荡市和趋势转换阶段,能帮你捕捉一些波段起点。在单边暴涨或暴跌的极端行情里,信号可能会频繁闪烁,这时候就要结合更大周期和量能来综合看了。
【📉 完整源码】
DIFF:=(EMA(CLOSE,12) - EMA(CLOSE,26));
DEA:=EMA(DIFF,9);
MACD2:=(2 * (DIFF - DEA));
DU0:=CROSS(DIFF,0);
UD0:=CROSS(0,DIFF);
TDU0:=BARSLAST(DU0);
TUD0:=BARSLAST(UD0);
DU3:=REF(DU0,1);
UD3:=REF(UD0,1);
TDU3:=BARSLAST(DU3);
TUD3:=BARSLAST(UD3);
UDGLINE:=IF((TDU3 < TUD3),REF(HHV(HIGH,2),TDU3),REF(LLV(LOW,2),TUD3));
JDU0:=(((REF(CLOSE,1) <= REF(UDGLINE,1)) AND (CLOSE > UDGLINE)) AND (TDU0 < TUD0));
JUD0:=(((REF(CLOSE,1) >= REF(UDGLINE,1)) AND (CLOSE < UDGLINE)) AND (TUD0 < TDU0));
JDU1:=(JDU0 AND (COUNT(JDU0,TDU0) = 1));
JUD1:=(JUD0 AND (COUNT(JUD0,TUD0) = 1));
JDU2:=(JDU1 AND (REF(BARSLAST(JUD1),1) < REF(BARSLAST(JDU1),1)));
JUD2:=(JUD1 AND (REF(BARSLAST(JUD1),1) > REF(BARSLAST(JDU1),1)));
JDU3:=(JDU1 AND (REF(BARSLAST(JUD1),1) > REF(BARSLAST(JDU1),1)));
JUD3:=(JUD1 AND (REF(BARSLAST(JUD1),1) < REF(BARSLAST(JDU1),1)));
BSLINE:=IF((BARSLAST(JDU2) < BARSLAST(JUD2)),IF(REF(CROSS(0,MACD2),1),LLV(LOW,2),REF(LLV(LOW,2),BARSLAST(REF(CROSS(0,MACD2),1)))),IF(REF(CROSS(MACD2,0),1),HHV(HIGH,2),REF(HHV(HIGH,2),BARSLAST(REF(CROSS(MACD2,0),1)))));
STICKLINE((MACD2>=0),0,MACD2,1,1),COLOR0000FF;
STICKLINE(((MACD2>=0) AND (MACD2 < REF(MACD2,1))),0,MACD2,1,0),COLORRED;
STICKLINE((MACD2<0),0,MACD2,1,0),COLORFFFF00;
STICKLINE(((MACD2<0) AND (MACD2 > REF(MACD2,1))),0,MACD2,1,1),COLORCYAN;
DIF:DIFF,LINETHICK2,COLOR00FFFF;
DEF:DEA,COLOR00FF00;
MACD:MACD2,LINETHICK0,COLORFFFF00;
DEFUT:=BARSLAST(CROSS(MACD2,0));
DEFDT:=BARSLAST(CROSS(0,MACD2));
DEFUL:=IF((MACD2 >= 0),HHV(MACD2,(DEFUT + 1)),REF(HHV(MACD2,(DEFUT + 1)),(DEFDT + 1)));
DEFDL:=IF((MACD2 < 0),LLV(MACD2,(DEFDT + 1)),REF(LLV(MACD2,(DEFDT + 1)),(DEFUT + 1)));
DEFU2L:=REF(DEFUL,(DEFUT + 1));
DEFD2L:=REF(DEFDL,(DEFDT + 1));
DRAWICON(((((LLV(MACD2,4) > 0) AND (MACD2 < REF(MACD2,1))) AND (REF(MACD2,1) > REF(MACD2,2))) AND (REF(MACD2,2) > REF(MACD2,3))),MACD2,2);
DRAWICON(((((HHV(MACD2,4) < 0) AND (MACD2 > REF(MACD2,1))) AND (REF(MACD2,1) < REF(MACD2,2))) AND (REF(MACD2,2) < REF(MACD2,3))),MACD2,1);
DRAWICON(((((JUD1 OR (BARSLAST(JDU1) > BARSLAST(JUD1))) AND (MACD2 >= 0)) AND (REF(MACD2,1) < REF(DEFU2L,1))) AND (MACD2 > DEFU2L)),MACD2,1);
DRAWICON(((((JDU1 OR (BARSLAST(JDU1) < BARSLAST(JUD1))) AND (MACD2 < 0)) AND (REF(MACD2,1) > REF(DEFD2L,1))) AND (MACD2 < DEFD2L)),MACD2,2);
DRAWTEXT(CROSS(DIF,DEA),DIF-0.1,'建仓'),COLORRED;
DRAWTEXT(CROSS(DEA,DIF),DIF+0.1,'空仓'),COLORGREEN;
建仓:IF(DIF<0,DIF,0),COLORYELLOW,LINETHICK2;
加仓:IF(DIF<0,0,DIF),COLORRED,LINETHICK2;
白线破仓:IF(DIF<DEA,DIF,DEA),COLORWHITE,LINETHICK2;
趋势强弱:IF(DIF>DEA,DEA,DEA),COLORFF937F,LINETHICK2;
指标逻辑就像老中医把脉——既要看脉象(MACD形态),也要结合病人的气色(价格位置),最后才敢下结论。多琢磨几遍,你就能明白它想帮你避开哪些坑、抓住哪些机会。
