这是一个基于MACD指标进行深度优化的交易系统公式。其核心是在传统MACD基础上,增加了多空分界线和买卖点判断逻辑。
指标构成:
1. 基础MACD:使用12日、26日、9日标准参数计算DIFF、DEA和MACD柱(公式中为MACD2)。
2. 多空分界线(UDGLINE):这是一个动态关键价位线。它根据DIFF线最近一次上穿或下穿零轴的位置,取对应K线的高点或低点来定义。具体为:若最近一次是DIFF上穿零轴,则取该上穿点前两根K线的最高价作为压力参考线;若最近一次是DIFF下穿零轴,则取该下穿点前两根K线的最低价作为支撑参考线。
3. 突破信号(JDU0, JUD0):定义价格对上述多空分界线的突破。JDU0为向上突破(买入条件初筛),JUD0为向下跌破(卖出条件初筛)。
4. 过滤后的买卖点(JDU1, JUD1):对初步突破信号进行过滤,确保在最近一个同向信号周期内是首次出现。
5. 买卖点类型(JDU2/JDU3, JUD2/JUD3):进一步将买卖点区分为不同类型(如趋势延续型或反转型),其逻辑基于前一个相反信号与当前信号的时间先后关系。
6. BSLINE(买卖基准线):这是一个用于确定具体买卖价位或止损价位的动态基准线。其逻辑与MACD柱状图(MACD2)是否上穿或下穿零轴挂钩。当处于多头状态(最后一次信号为JDU2)时,若MACD2下穿零轴,则取最近两根K线的最低价作为基准;若未下穿,则沿用上一次下穿零轴时记录的最低价。空头状态(最后一次信号为JUD2)时逻辑相反,与最高价挂钩。
7. MACD柱状图着色:用红色和黄色区分MACD柱的正负,并用实心/空心区分其是增长还是缩短,直观显示动能变化。
8. 图标信号:
顶底背离预警图标:在MACD柱连续3日上升后出现缩短(顶部),或连续3日下降后出现增长(底部)时,在柱状图相应位置标记图标,提示可能的动能衰竭。
买卖点确认图标:在特定组合条件下(如出现JUD1信号后,MACD柱上穿其前一个峰值;或出现JDU1信号后,MACD柱下穿其前一个谷值),在柱状图上标记明确的买入或卖出图标。
核心应用逻辑:
该指标旨在识别基于MACD零轴和动态价格分界线的趋势转换点及买卖时机。交易者主要关注:
1. 价格与UDGLINE的关系:结合JDU1/JUD1信号,判断是否发生有效突破。
2. MACD柱状图的变化:观察其颜色、长短变化以及图标信号,判断动能强弱和潜在的背离。
3. 综合决策:将价格突破信号(JDU1/JUD1)、MACD柱的图标信号(如背离预警、买卖点确认)以及BSLINE提供的基准价位结合起来,形成入场、出场或止损的决策依据。例如,一个伴随买入图标出现的JDU1信号,其可靠性更高。
SHORT:=12;
LONG:=26;
M:=9;
DIFF:=EMA(CLOSE,SHORT)-EMA(CLOSE,LONG);
DEA:=EMA(DIFF,M);
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,2,1),COLOR0000FF;
STICKLINE(MACD2>=0 AND MACD2<REF(MACD2,1),0,MACD2,2,0),COLOR0000FF;
STICKLINE(MACD2<0,0,MACD2,2,0),COLORFFFF00;
STICKLINE(MACD2<0 AND MACD2>REF(MACD2,1),0,MACD2,2,1),COLORFFFF00;
DIF:DIFF,LINETHICK2,COLOR0000FF;
MACD:DEA,COLORFF0000;
DEF:MACD2,LINETHICK0,COLORFFFF00;
STICKLINE(CLOSE>0,0,0,2,0),COLOR808080;
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,5);
DRAWICON((JDU1 OR BARSLAST(JDU1)<BARSLAST(JUD1)) AND MACD2<0 AND REF(MACD2,1)>REF(DEFD2L,1) AND MACD2<DEFD2L,MACD2,3);
VAR111:=JDU1 OR BARSLAST(JDU1)<BARSLAST(JUD1);
VAR112:=HHV(MACD2,4)<0 AND MACD2>REF(MACD2,1) AND REF(MACD2,1)<REF(MACD2,2) AND REF(MACD2,2)<REF(MACD2,3);