
🎁 福利分享
本期给大家拆解一款实用的通达信主图指标——自动画线主图。它能把关键的价位自动画出来,省去你手工测算的麻烦。如果需要本期福利源码,请看文末提示。
🔍 指标原理(三步画出股价"压力位"和"支撑位")
咱们先看第一段代码:HIGHN:=10; 和 LOWN:=10;。这意思是,指标只去"回忆"最近10根K线里发生过的事。为啥是10?因为太远的最高点、最低点对当下参考价值不大,太近又容易失真,10根是个经验值。
第一步:锁定最近的高点和低点。
代码里用 HHV(H,2*HIGHN+1) 这类函数,在最近21根K线(10*2+1)里找最高价。一旦发现某个K线的最高价是这21天里的最高,它就用 DRAWICON 在那个位置画个"小旗子"标记出来。低点同理,用 LLV 找最低价,画"小旗子"。这就像给K线图上插上标记:"嘿,这里曾经是顶!""这里曾经是底!"
第二步:把最近两个高点连成"压力线",两个低点连成"支撑线"。
找到标记后,代码用 BARSLAST 函数计算"上次出现标记到现在过了多少根K线",再往前推一个标记,就确定了最近两个高点出现的位置。接着用 DRAWLINE 把这两个高点所在的位置连成一条向上倾斜或水平的线,这就是动态压力线。它代表:股价涨到这条线附近,可能就会遇到阻力,像撞上了"天花板"。支撑线的逻辑完全一样,是股价可能反弹的"地板砖"。

第三步:中轨定多空,EMA均线看趋势。
压力线和支撑线的中间位置,就是中轨。股价在中轨之上,短期偏多头;在中轨之下,短期偏空头。这比单一均线更直观。
同时,指标还叠加了13、21、34、60日EMA均线组合。均线多头排列(短在上长在下)是趋势健康的表现,反之则要警惕。老股民常说的"均线粘合变盘",在这儿也能看个大概。
最后那些"低吸"、"高抛"的小字和图标是啥?
后面那部分其实是把股价波动速度做了量化。当股价短期波动率突然放大,它可能提示"高抛";突然萎缩,可能提示"低吸"。但这绝不是买卖点!它更像一个提醒:"嘿,波动有点异常,多留个心眼。"实战中,你必须结合大盘环境、个股位置和成交量来看。比如,压力位放量滞涨,那"高抛"信号才更有参考价值。
一句话总结这指标的核心逻辑:
它不预测未来,而是把过去已经形成的关键价格位置(顶、底)自动可视化,帮你快速识别当前股价所处的"压力区"和"支撑区",再配合均线系统判断趋势方向,最后用波动率信号辅助提醒。它最适合震荡市或波段操作,在单边暴涨暴跌里容易频繁失效。
完整源码:
HIGHN:=10;LOWN:=10;HIGHDISPLAY:=0;LOWDISPLAY:=0;ZGDISPLAY:=0;MADISPLAY:=0;
AA:=REF(H,HIGHN)=HHV(H,2*HIGHN+1);
QY:=BACKSET(AA,HIGHN+1);
CC:=FILTER(QY,HIGHN) AND H=HHV(H,HIGHN+1);
DRAWICON(CC,H*1.02,2);
DDD:=BARSLAST(CC);
GDTS:=IF(CC,CURRBARSCOUNT,0);
DINGBU:=IF(DDD,REF(H,DDD),H);{顶部}
DINGBUTS:=IF(DDD,REF(GDTS,DDD),GDTS);
DINGBU1:=REF(DINGBU,DDD+1);
GDCS1:=CONST(DINGBUTS);
DINGBUTS1:=REF(DINGBUTS,DDD+1);
GDCS2:=CONST(DINGBUTS1);
DINGBU2:=REF(DINGBU1,DDD+1);
MM:=IF(CURRBARSCOUNT>GDCS2,0,1);
高点压力:DRAWLINE(CURRBARSCOUNT=GDCS2,H,CURRBARSCOUNT=GDCS1,H,1) COLORGREEN,LINETHICK2;
DRAWLINE(CURRBARSCOUNT=GDCS2,H,ISLASTBAR,REF(H,GDCS2-1),1),COLOR0055FF,POINTDOT;
DRAWLINE(CURRBARSCOUNT=GDCS1,H,ISLASTBAR,REF(H,GDCS1-1),1),COLORYELLOW,POINTDOT;
AA1:=REF(L,LOWN)=LLV(L,2*LOWN+1);
QY1:=BACKSET(AA1,LOWN+1);
CC1:=FILTER(QY1,LOWN) AND L=LLV(L,LOWN+1);
DRAWICON(CC1,L*0.98,1);
DD1:=BARSLAST(CC1);
DDTS:=IF(CC1,CURRBARSCOUNT,0);
YDB:=IF(DD1,REF(L,DD1),L);
DDTS1:=IF(DD1,REF(DDTS,DD1),DDTS);
DDCS1:=CONST(DDTS1);
ZDB:=REF(YDB,DD1+1);
DDTS2:=REF(DDTS1,DD1+1);
DDCS2:=CONST(DDTS2);
低点支撑:DRAWLINE(CURRBARSCOUNT=DDCS2,L,CURRBARSCOUNT=DDCS1,L,1) COLORRED,LINETHICK2;
ZGSTAR:=(高点压力+低点支撑)/2;
ZGEND:=CONST((高点压力+低点支撑)/2);
STARDAY:=IF(DDCS2<GDCS2,DDCS2,GDCS2);
中轨:DRAWLINE(CURRBARSCOUNT=STARDAY,ZGSTAR,ISLASTBAR,ZGEND,1),COLORFF55BB,LINETHICK2;
DRAWLINE(CURRBARSCOUNT=DDCS1,L,ISLASTBAR,REF(L,DDCS1-1),1),COLORMAGENTA,POINTDOT,;
DRAWLINE(CURRBARSCOUNT=DDCS2,L,ISLASTBAR,REF(L,DDCS2-1),1),COLORCYAN,POINTDOT;
EMA13:=EMA(C,13),COLORWHITE;
EMA21:=EMA(C,21),COLORYELLOW;
EMA34:=EMA(C,34),COLORFF00FF;
EMA60:=MA(C,60),COLORFFCC66;
VAR2:=(2*CLOSE+HIGH+LOW)/4;
VAR3:=IF(YEAR>=2099 AND MONTH>2,0,1);
VAR4:=LLV(LOW,5); VAR5:=HHV(HIGH,4);
散户:=EMA((VAR2-VAR4)/(VAR5-VAR4)*100,4)*VAR3;
庄家:=EMA(0.667*REF(散户,1)+0.333*散户,2)*VAR3;
DRAWTEXT(CROSS(散户,庄家) AND 散户<30,L-0.05,'←低吸'),COLORLIRED;
DRAWTEXT(CROSS(庄家,散户) AND 散户>70,H+0.05,'←高抛'),COLORGREEN;
DRAWICON(CROSS(散户,庄家) AND 散户<30,L-0.05,1);
DRAWICON(CROSS(庄家,散户) AND 散户>70,H+0.05,2);
VAR9:=CLOSE-REF(CLOSE,5);
VARA:=EMA(EMA(VAR9,5),5)/EMA(EMA(ABS(VAR9),5),5);
VARC:=EMA(EMA(VAR9,20),20)/EMA(EMA(ABS(VAR9),20),20);
卖出:=IF(VARA>0 AND CROSS(VARC,VARA),90,100);
DRAWICON(卖出<0,H+0.05,2); 买线:=EMA(CLOSE,2);
卖线:=EMA(SLOPE(CLOSE,21)*20+CLOSE,42);
B1:IF(CROSS(买线,卖线),L-0.02,DRAWNULL),CROSSDOT,LINETHICK3,COLORMAGENTA;
S1:IF(CROSS(80,RSI)*30,H+0.02,DRAWNULL),CROSSDOT,LINETHICK3,COLORYELLOW;
VC:=((CLOSE-MA(CLOSE,6))/MA(CLOSE,6)*100+(CLOSE-MA(CLOSE,24))/MA(CLOSE,24)*100+(CLOSE-MA (CLOSE,32))/MA(CLOSE,32)*100)/3;
S2:=IF(VC>20 AND FILTER(VC< REF(VC,1),5),H+0.02,DRAWNULL),CIRCLEDOT,LINETHICK3,COLORGREEN;
A0:=(L+H+C*2)/4;
A1:EMA(A0,14)COLORBLUE,LINETHICK2;
A2:=EMA(A0,25)COLORLIBLUE,LINETHICK2;
A1X:=(A1-REF(A1,1))/REF(A1,1)*100,NODRAW;
A2X:=(A2-REF(A2,1))/REF(A2,1)*100,NODRAW;
看多:IF(A1X>=0 AND BARSLAST(CROSS(A1X,0))>0,REF((C+O)/2,BARSLAST(CROSS(A1X,0))),DRAWNULL),COLORMAGENTA;
逃顶:IF(A1X<0 AND BARSLAST(CROSS(0,A1X))>0,REF((C+O)/2,BARSLAST(CROSS(0,A1X))),DRAWNULL),COLORCYAN,;
买入持股:IF(A1X>=0,A1,DRAWNULL)COLORRED,LINETHICK3;
卖出空仓:IF(A1X<0 AND A2X<0,A1,DRAWNULL)COLORGREEN,LINETHICK3;
STICKLINE(CROSS(A1X,0),H,L,0,0 ),COLOR9933FF;
STICKLINE(CROSS(A1X,0),C,O,3,0 ),COLOR0000CC;
STICKLINE(CROSS(A1X,0),C,O,1,0 ),COLOR0033FF;
STICKLINE(CROSS(0,A1X),L,H,0,0 ),COLOR66CC33;
用的时候记住三句话:
股价涨到"天花板"附近要观察,跌到"地板价"附近要留意,但千万别把画线当预言。
压力支撑位是"区域"而非精确点位,靠近时结合量能判断才靠谱。
任何信号都要配合大盘"大气候"和个股基本面,生搬硬套容易吃亏。
