朋友,你是否也曾陷入这样的困境:
- 看着K线上下翻飞,感觉机会遍地,一进场,趋势就结束了,仿佛市场就盯着你手里那点筹码?
- 好不容易抓住一波上涨,一个微不足道的回调就将你震仓出局,眼睁睁看着利润绝尘而去,拍断大腿?
- 均线金叉死叉用到烂,却发现永远慢半拍,不是在追高的山顶,就是在割肉的地板?
如果你对以上任何一点感同身受,那么,请停下你滑动的屏幕,花5分钟读完这篇文章。
今天,我将公开一套我自己赖以生存的核心策略——“MZ趋势跟踪系统”。
这不仅仅是指标,这是一套完整的、逻辑严密的量化交易体系。它完美地解决了 “趋势识别”、“信号过滤” 和 “风险控制” 三大难题。
一、核心逻辑:大道至简的“三重滤网”
这套系统的精髓,在于它的三层过滤机制,像一台精密的机器,只捕捉那些高确定性的行情。
第一重滤网:定位“势”
- 快线
MZ1(45周期均线):这是市场的攻击线,代表短期动能。 - 慢线
MZ2(135周期均线):这是市场的生命线,代表长期趋势。
规则很简单:价格在MZ1之上,且MZ1在MZ2之上,则为多头格局,只考虑做多。反之,则为空头格局,只考虑做空。这首先从战略上保证了我们 “顺大势” ,不做逆势的炮灰。
第二重滤网:感受“度”
我们引入 ATR(平均真实波幅)来量化市场的“脾气”。ATR值大,说明市场波动剧烈,机会与风险并存;ATR值小,说明市场死气沉沉,不值得参与。
在我们的系统里,价格不仅要突破均线,更要与均线拉开足够的“安全距离”(GLL > ATR * 1.4)。这个距离过滤掉了那些虚张声势的假突破和力度不足的蠕动行情。这保证了我们出手时,市场已经表明了它真正的意图。
第三重滤网:捕捉“时”
这是最精妙的部分,也是“闭眼开仓”信号的来源。系统通过 BARSLAST 函数,精确度量突破发生后的时间周期(5日内),并结合价格与长期均线MZ2的位置关系,将开仓信号细分为四大类:
AA信号 (做多):强势市场,价格位于所有均线之上,动能强劲。BB信号 (做空):弱势市场,价格位于所有均线之下,动能强劲。CC信号 (反弹做空):逆势反弹,是“做空”的佳机。DD信号 (回调做多):逆势回调,是“做多”的良时。
这四大信号,几乎囊括了趋势运行中所有的高概率开仓点,让你不再是旁观者,而是规律的捕捉者。


文华财经源码:
//定义变量
MZ1:EMA(C,45),LINETHICK2,COLORMAGENTA;
MZ2:EMA(C,135),NODRAW;
TR1 : =MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));//求最高价减去最低价,一个周期前的收盘价减去最高价的绝对值,一个周期前的收盘价减去最低价的绝对值,这三个值中的最大值
ATR1 : =MA(TR1,90);
GLL:=ABS(CLOSE-MZ1);
COND100:=BARSLAST(CROSS(C,MZ1))+1>=12&&C>MZ1&&C>MZ2&&GLL>ATR1*3.8;
COND200:=BARSLAST(CROSSDOWN(C,MZ1))+1>=12&&C<MZ1&&C<MZ2&&GLL>ATR1*3.8;
//COND100,ICON(1,'ICO157'),ALIGN1,VALIGN2;
//COND200,ICON(0,'ICO158'),ALIGN1,VALIGN0;
COND1:=BARSLAST(CROSS(C,MZ1))+1<5&&C>MZ1&&C>MZ2&&GLL>ATR1*1.4 ;//高开或快速上涨开仓信号以下是COND1;
COND11:=BARSLAST(CROSS(C,MZ1))+1=5&&C>MZ1&&C>MZ2;
COND111:=BARSLAST(CROSS(C,MZ1))+1<=5&&C>MZ1&&C>MZ2&&GLL>=ATR1*0.90&&GLL<=ATR1*1.4;
COND4:=BARSLAST(CROSS(C,MZ1))+1=5&&C>MZ1&&C<MZ2;
COND44:=BARSLAST(CROSS(C,MZ1))+1<=5&&C>MZ1&&C<MZ2&&GLL>=ATR1*0.90&&GLL<=ATR1*1.4;
COND444:=BARSLAST(CROSS(C,MZ1))+1<=5&&C>MZ1&&C<MZ2&&GLL>ATR1*1.4;
COND2:=BARSLAST(CROSSDOWN(C,MZ1))+1<5&&C<MZ1&&C<MZ2&&GLL>ATR1*1.4 ;//高开或快速下跌开仓信号以下是COND2;
COND22:=BARSLAST(CROSSDOWN(C,MZ1))+1=5&&C<MZ1&&C<MZ2;
COND222:=BARSLAST(CROSSDOWN(C,MZ1))+1<=5&&C<MZ1&&C<MZ2&&GLL>=ATR1*0.90&&GLL<=ATR1*1.4;
COND3:=BARSLAST(CROSSDOWN(C,MZ1))+1=5&&C<MZ1&&C>MZ2;
COND33:=BARSLAST(CROSSDOWN(C,MZ1))+1<=5&&C<MZ1&&C>MZ2&&GLL>=ATR1*0.90&&GLL<=ATR1*1.4;
COND333:=BARSLAST(CROSSDOWN(C,MZ1))+1<=5&&C<MZ1&&C>MZ2&&GLL>ATR1*1.4;
AA:=COND1||COND11||COND111;
BB:=COND2||COND22||COND222;
CC:=COND3||COND33||COND333;
DD:=COND4||COND44||COND444;
DRAWTEXT(BB&&COUNT(BB,BARSLAST(AA||DD||CC)+1)=1&&COUNT(BB&&COUNT(BB,BARSLAST(AA||DD||CC)+1)=1,BARSLASTCOUNT(BARSLAST(AA)>BARSLAST(BB)))=1,H,'K'),ALIGN1,VALIGN2,COLORGREEN,FONTSIZE27;
DRAWTEXT(BB&&COUNT(BB,BARSLAST(AA||DD||CC)+1)=1&&COUNT(BB&&COUNT(BB,BARSLAST(AA||DD||CC)+1)=1,BARSLASTCOUNT(BARSLAST(DD)>BARSLAST(BB)))=1,H,'K'),ALIGN1,VALIGN2,COLORGREEN,FONTSIZE27;
DRAWTEXT(AA&&COUNT(AA,BARSLAST(BB||CC||DD)+1)=1&&COUNT(AA&&COUNT(AA,BARSLAST(BB||CC||DD)+1)=1,BARSLASTCOUNT(BARSLAST(AA)<BARSLAST(BB)))=1,L,'D'),ALIGN1,VALIGN0,COLORRED,FONTSIZE27;
DRAWTEXT(AA&&COUNT(AA,BARSLAST(BB||CC||DD)+1)=1&&COUNT(AA&&COUNT(AA,BARSLAST(BB||CC||DD)+1)=1,BARSLASTCOUNT(BARSLAST(AA)<BARSLAST(CC)))=1,L,'D'),ALIGN1,VALIGN0,COLORRED,FONTSIZE27;
DRAWTEXT(CC&&COUNT(CC,BARSLAST(AA||DD)+1)=1&&BARSLAST(AA)<BARSLAST(BB),H,'K'),ALIGN1,VALIGN2,COLORWHITE,FONTSIZE27;
DRAWTEXT(CC&&COUNT(CC,BARSLAST(AA||DD||BB)+1)=1&&BARSLAST(CC)<BARSLAST(DD)&&BARSLAST(DD)<BARSLAST(BB),H,'K'),ALIGN1,VALIGN2,COLORWHITE,FONTSIZE27;
DRAWTEXT(DD&&COUNT(DD,BARSLAST(BB||CC)+1)=1&&BARSLAST(BB)<BARSLAST(AA),L,'D'),ALIGN1,VALIGN0,COLORWHITE,FONTSIZE27;
DRAWTEXT(DD&&COUNT(DD,BARSLAST(AA||CC||BB)+1)=1&&BARSLAST(DD)<BARSLAST(CC)&&BARSLAST(CC)<BARSLAST(AA),L,'D'),ALIGN1,VALIGN0,COLORWHITE,FONTSIZE27;
BB1:=BB&&COUNT(BB,BARSLAST(AA||DD||CC)+1)=1&&COUNT(BB&&COUNT(BB,BARSLAST(AA||DD||CC)+1)=1,BARSLASTCOUNT(BARSLAST(AA)>BARSLAST(BB)))=1;
BB11:=BB&&COUNT(BB,BARSLAST(AA||DD||CC)+1)=1&&COUNT(BB&&COUNT(BB,BARSLAST(AA||DD||CC)+1)=1,BARSLASTCOUNT(BARSLAST(DD)>BARSLAST(BB)))=1;
AA1:=AA&&COUNT(AA,BARSLAST(BB||CC||DD)+1)=1&&COUNT(AA&&COUNT(AA,BARSLAST(BB||CC||DD)+1)=1,BARSLASTCOUNT(BARSLAST(AA)<BARSLAST(BB)))=1;
AA11:=AA&&COUNT(AA,BARSLAST(BB||CC||DD)+1)=1&&COUNT(AA&&COUNT(AA,BARSLAST(BB||CC||DD)+1)=1,BARSLASTCOUNT(BARSLAST(AA)<BARSLAST(CC)))=1;
CC12:=CC&&COUNT(CC,BARSLAST(AA||DD)+1)=1&&BARSLAST(AA)<BARSLAST(BB);
CC11:=CC&&COUNT(CC,BARSLAST(AA||DD||BB)+1)=1&&BARSLAST(CC)<BARSLAST(DD)&&BARSLAST(DD)<BARSLAST(BB);
DD12:=DD&&COUNT(DD,BARSLAST(BB||CC)+1)=1&&BARSLAST(BB)<BARSLAST(AA);
DD11:=DD&&COUNT(DD,BARSLAST(AA||CC||BB)+1)=1&&BARSLAST(DD)<BARSLAST(CC)&&BARSLAST(CC)<BARSLAST(AA);
BB3:=BB1||BB11;
AA3:=AA1||AA11;
CC3:=CC12||CC11;
DD3:=DD12||DD11;
CONDD1:=L>=REF(L,1)&&H<REF(H,1);//包含关系条件;
HHH:=VALUEWHEN(CONDD1,REF(H,1));//取K线最高价;
LLL:=VALUEWHEN(CONDD1,REF(L,1));//取K线最低价;
CC1:=BARSLASTCOUNT(L>LLL&&H<HHH);//后面几根K线包含关系周期数;
B:=HHV(H,CC1+1);//包含关系最高点;
F:=LLV(L,CC1+1);//包含关系最低点;
CONDD3:= C>F&&H<B;
E:=EVERY(CONDD3,CC1);
CONDD22:E=0&&CROSSDOWN(L,REF(L,1)),NODRAW;//下跌连续两根没包含关系;
CONDD44:=E=0&&CROSS(H,REF(H,1));//上涨连续两根K线没包含关系;
UU1:=CONDBARS(CONDD22,CONDD44);//下跌K线周数;
DD1:=CONDBARS(CONDD44,CONDD22);//上涨K线周期数;
X1:=CONDD44&&SUM(CONDD44,BARSLAST(CONDD22))=1;
X2:=CONDD22&&SUM(CONDD22,BARSLAST(CONDD44))=1;
LL11:=VALUEWHEN(X1,LLV(L,UU1+1));//最低价;
HH11:=VALUEWHEN(X2,HHV(H,DD1+1));//最高价:
LL22:=VALUEWHEN(X1,REF(LL11,1));//最低价;
HH22:=VALUEWHEN(X2,HHV(HH11,1));//最高价:
DKCJ222:=VALUEWHEN(AA3,C);//开仓价;
KKCJ:=VALUEWHEN(BB3,C);//开仓价;
T:=(X1||X2);
HX:CROSS(C,HH11+MINPRICE),NODRAW;
LX:CROSSDOWN(C,LL11-MINPRICE),NODRAW;
//做多策略
//做空策略
//设置