[通达信指标]打造神兵2 组合指标 一主两附精选公式

注意本指标源码用于通达信、通达信金融终端和通达信期货通。

01

主图源码

所属板块:=STRCAT(‘【所属板块】’,STRCAT(STRCAT(STRCAT(‘ [行业]—’,HYBLOCK),STRCAT(‘ [地域]—’,DYBLOCK)),STRCAT(‘ [概念]—’,GNBLOCK)));

总股本:=STRCAT(STRCAT(‘ 总股本:’,CON2STR(TOTALCAPITAL/1000000,2)),’亿’);

流通盘:=STRCAT(STRCAT(‘ 流通盘:’,CON2STR(CAPITAL/1000000,2)),’亿’);

全流通:=STRCAT(STRCAT(‘ 流通比:’,CON2STR(CAPITAL/TOTALCAPITAL*100,2)),’%’);

市值:=STRCAT(STRCAT(‘ 流通市值:’,CON2STR((CAPITAL/1000000)*C,2)),’亿’);

上市日期:=STRCAT(‘ 上市日期: ‘,CON2STR(HHV((BARSCOUNT(C)=0)*(DATE+19000000),0),0));

股本市值:=STRCAT(‘【股本市值】’,STRCAT(STRCAT(STRCAT(STRCAT(总股本,流通盘),全流通),市值),上市日期));

市盈率:=STRCAT(‘ 市盈率:’,CON2STR(C/FINANCE(33),2));

市销率:=STRCAT(‘ 市销率:’,CON2STR(C/(FINANCE(20)/FINANCE(1)),2));

市净率:=STRCAT(‘ 市净率:’,CON2STR(C/FINANCE(34),2));

净资收益率:=STRCAT(‘ 净资收益率:’,CON2STR(FINANCE(33)/FINANCE(34)*100,2));

毛利率:=STRCAT(‘ 毛利率:’,CON2STR((FINANCE(20)-FINANCE(21))/FINANCE(20)*100,2));

净利润率:=STRCAT(‘ 净利率:’,CON2STR(FINANCE(30)/FINANCE(20)*100,2));

主营利润率:=STRCAT(‘ 主营利润率:’,CON2STR(FINANCE(23)/FINANCE(20)*100,2));

当前业绩:=STRCAT(‘【当前业绩】’,STRCAT(STRCAT(STRCAT(STRCAT(STRCAT(STRCAT(市盈率,市销率),市净率),净资收益率),毛利率),净利润率),主营利润率));

DRAWTEXT_FIX(ISLASTBAR,0.005,0.02,0,所属板块),COLORMAGENTA;

DRAWTEXT_FIX(ISLASTBAR,0.005,0.07,0,股本市值),COLORMAGENTA;

DRAWTEXT_FIX(ISLASTBAR,0.005,0.12,0,当前业绩),COLORMAGENTA;

DRAWTEXT_FIX(1,0.005,0.17,0,’莸利比例:’),COLORYELLOW;

DRAWNUMBER_FIX(1,0.06,0.17,0,CONST(WINNER(C )*100)),COLORYELLOW;

DRAWNUMBER_FIX(1,0.15,0.17,0,CONST(DYNAINFO(37)*100)),COLORYELLOW;

DRAWTEXT_FIX (1,0.12,0.17,0,’换手:’),COLORYELLOW;

DRAWNUMBER_FIX(1,0.25,0.17,0,CONST(DYNAINFO(17))),COLORYELLOW;

DRAWTEXT_FIX (1,0.22,0.17,0,’量比:’),COLORYELLOW;

DRAWTEXT_FIX (1,0.30,0.17,0,’涨幅:’),COLORYELLOW;

DRAWNUMBER_FIX(1,0.33,0.17,0,CONST(DYNAINFO(14)*100)),COLORYELLOW;

DRAWNUMBER_FIX(1,0.33,0.17,0,IF(CONST(DYNAINFO(14)*100)<0,CONST(DYNAINFO(14)*100),DRAWNULL)),COLORYELLOW;

ZZX1:=(FINANCE(11)-FINANCE(15))/FINANCE(10)*1.2;

ZZX2:=(FINANCE(31)+FINANCE(17))/FINANCE(10)*1.4;

ZZX3:=FINANCE(23)/FINANCE(10)*3.3;

ZZX4:=FINANCE(19)/FINANCE(15)*0.6;

ZZX5:=FINANCE(20)/FINANCE(15)*0.999;

Z值:=ZZX1+ZZX2+ZZX3+ZZX4+ZZX5;

预警:=IF(Z值<1.2,’重警’,IF(Z值>=1.2 AND Z值<2.6,’轻警’,’无警’));

财务预警:=STRCAT(‘财务预警: ‘,STRCAT(预警,STRCAT(‘-Z值: ‘,CON2STR(Z值,3))));

优质资产率:=STRCAT(‘ 优质资产率: ‘,CON2STR((FINANCE(19)-FINANCE(22)-FINANCE(27))/FINANCE(19),2));

现金负债比:=STRCAT(‘ 现金负债比: ‘,CON2STR(FINANCE(25)/FINANCE(15),3));

财务系数:=STRCAT(‘风险系数: ‘,STRCAT(STRCAT(财务预警,优质资产率),现金负债比));

DRAWTEXT_FIX(ISLASTBAR,0.005,0.23,0,财务系数),COLORGREEN;

E5:MA(C,5)LINETHICK1;

E10:MA(C,10)LINETHICK1;

E30:MA(C,30)LINETHICK1;

E60:MA(C,60)LINETHICK1;

DRAWTEXT(CROSS(E5,E10),LOW*0.95,’攻抄金叉’),COLORRED;

DRAWTEXT(CROSS(E30,E60),LOW*0.95,’生决金叉’),COLORMAGENTA;

DRAWKLINE(H,O,L,C);

MA20:=MA(CLOSE,20);

MA120:=MA(CLOSE,120);

MA30:=MA(CLOSE,37);

MAP:=MA(CLOSE,8);

AA5:=MA(CLOSE,21);

AA10:=MA(CLOSE,8),COLORFF0000;

AA12:=MA(CLOSE,12),COLORFF0000;

BB10:=((ATAN((AA10 – REF(AA10,1))) * 3.1416) * 10);

BB12:=((ATAN((AA12 – REF(AA12,1))) * 3.1416) * 10);

MA13:=MA(CLOSE,13);

VAR01:=((((OPEN + LOW) + HIGH) + CLOSE) / 4);

LL30:=LLV(LOW,30),;

HH30:=LLV(HIGH,30);

TTS1:=EMA(VAR01,5);

TTS2:=HHV(TTS1,60);

TTS3:=HHV(LOW,20),COLORFAABEC;

TTS4:=SMA(LOW,5,1);

TTS5:=MA(CLOSE,3);

DRAWTEXT(FILTER(((((HIGH > TTS2) AND (CLOSE < TTS2)) AND ((CLOSE / OPEN) > (0 – 1.06))) AND (CLOSE < OPEN)),5),(HIGH + 0.02),’逃’),COLORFFFF00;

TTS6:=(MA(HIGH,15) * 1.05);

TTS7:=(MA(LOW,15) * 0.985);

TTS8:=(MA(LOW,15) * 0.96);

TTS9:=(((HIGH + LOW) + CLOSE) / 3);

B1:=HHV(TTS9,(4 * 15));

B6:=LLV(TTS9,(4 * 15));

B7:=(B1 – B6);

B8:=(MA(((TTS9 – B6) / B7),2) * 80);

VAR1:=(((CLOSE – LLV(LOW,100)) / (HHV(HIGH,100) – LLV(LOW,100))) * 200);

TTS10:=SMA(VAR1,3,1);

VAR2:=SMA(TTS10,3,1);

VAR3:=((3 * TTS10) – (2 * VAR2));

VAR4:=LLV(LOW,5);

VAR5:=HHV(HIGH,5);

VAR6:=(EMA((((CLOSE – VAR4) / (VAR5 – VAR4)) * 100),4) * 2);

VAR7:=EMA(((0.667 * REF(VAR6,1)) + (0.333 * VAR6)),2);

VAR8:=((3 * VAR6) – (2 * VAR7));

VAR9:=(POW(MA(CLOSE,5),2) + MA(CLOSE,5));

VARA:=(POW(MA(LOW,5),2) + MA(LOW,5));

VARB:=(POW(MA(HIGH,5),2) + MA(HIGH,5));

VARC:=(((((VAR9 – LLV(VARA,64)) / (HHV(VARB,64) – LLV(VARA,64))) * 150) + 65) – 10);

VARD:=((SMA(VARC,3,1) * 1.5) – 100);

VARE:=SMA(VARD,3,1);

VARF:=((3 * VARD) – (2 * VARE));

VAR10:=(((HIGH + LOW) + (CLOSE * 2)) / 4);

VAR11:=EMA(VAR10,13);

VAR12:=STD(VAR10,13);

VAR13:=(((VAR10 – VAR11) * 100) / VAR12);

VAR14:=EMA(VAR13,5);

VAR15:=EMA(VAR14,13);

VAR16:=((EMA(VAR14,13) + 200) – 100);

VAR17:=EMA(VAR16,10);

VAR18:=((3 * VAR16) – (2 * VAR17));

VAR19:=(((TTS10 + VAR6) + VARD) + VAR16);

VAR1A:=(((VAR2 + VAR7) + VARE) + VAR17);

VAR1B:=(((VAR3 + VAR8) + VARF) + VAR18);

VAR1C:=(((HIGH + LOW) + CLOSE) / 3);

VAR1D:=((AMOUNT / VOL) / 100);

VAR1E:=((SUM(AMOUNT,5) / SUM(VOL,5)) / 100);

VAR1F:=((VAR1C – MA(VAR1C,34)) / (0.015 * AVEDEV(VAR1C,34)));

VAR21:=((((HIGH + LOW) + CLOSE) + VAR1C) / 4);

VAR22:=EMA(VAR21,24);

VAR23:=STD(VAR21,24);

VAR24:=(((VAR21 – VAR22) / VAR23) * 100);

VAR25:=((VAR1C – MA(VAR1C,24)) / (0.015 * AVEDEV(VAR1C,24)));

VAR26:=EMA(VAR24,5);

VAR27:=((VAR1D – MA(VAR1D,21)) / (0.015 * AVEDEV(VAR1D,21)));

VAR28:=((VAR1E – MA(VAR1E,90)) / (0.015 * AVEDEV(VAR1E,90)));

VAR29:=(((((((VAR28 + VAR27) + VAR26) + VAR25) + VAR1F) / 5) + 165) / 4);

VAR2A:=(((((VAR19 + VAR1A) + (VAR1B * 30)) / 32) / 5) – 15);

VAR2B:=(((VAR29 + VAR2A) / 2) / 1.1);

VAR2C:=VAR2B;

TTS11:=MA(VAR2C,26);

MID:=(TTS11 + (2 * STD(VAR2C,26)));

UPPER:=(TTS11 – (2 * STD(VAR2C,26)));

LOWER:=IF((VAR2C > TTS11),TTS11,VAR2C);

XY:=MA(CLOSE,5);

M80:=MA(CLOSE,80);

TTS12:=(LLV(HIGH,30) * 0.93);

MA80:=LLV(HIGH,30);

TTS13:=SMA(CLOSE,2,1);

TTS14:=(MA(LOW,10) * 0.96);

TTS15:=(EMA(OPEN,107) * 0.897);

TTS16:=MA(CLOSE,15);

GF:=MA(CLOSE,10);

MAN:=(SMA(HIGH,21,2) * 1.05);

TTS17:=(HHV(TTS1,60) * 0.92);

TTS18:=(SMA(HIGH,21,2) * 1.035);

TTS19:=(SMA(LOW,21,2) * 0.96);

TTS20:=(((CLOSE – LLV(LOW,13)) / (HHV(HIGH,13) – LLV(LOW,13))) * 100);

RSV:=SMA(TTS20,3,1);

K:=SMA(RSV,3,1);

D:=((3 * RSV) – (2 * K));

J:=(((CLOSE – MA(CLOSE,6)) / MA(CLOSE,6)) * 100);

VAR2P:=(((CLOSE – MA(CLOSE,12)) / MA(CLOSE,12)) * 100);

VAR3P:=(((CLOSE – MA(CLOSE,24)) / MA(CLOSE,24)) * 100);

VAR4P:=(((J + (2 * VAR2P)) + (3 * VAR3P)) / 6);

VAR5P:=MA(VAR4P,3);

VAR6P:=(((CLOSE – LLV(LOW,34)) / (HHV(HIGH,34) – LLV(LOW,34))) * 100);

RSV12:=SMA(VAR6P,3,1);

K12:=SMA(RSV12,3,1);

D12:=((3 * RSV12) – (2 * K12));

J12:=(((CLOSE – LLV(LOW,55)) / (HHV(HIGH,55) – LLV(LOW,55))) * 100);

RSV24:=SMA(J12,3,1);

K24:=SMA(RSV24,3,1);

D24:=((3 * RSV24) – (2 * K24));

J24:=IF(CROSS(D,D24),LOW,REF(LOW,BARSLAST(CROSS(D,D24))));

TTS21:=IF(CROSS(D24,D),HIGH,REF(HIGH,BARSLAST(CROSS(D24,D))));

TTS22:=IF((CLOSE >= MA(CLOSE,20)),80,50);

U2L:=IF((CLOSE >= MA(CLOSE,20)),50,20);

L2L:=IF(((D < TTS22) AND (REF(D,1) >= TTS22)),HHV(REF(HIGH,1),(BARSLAST(((D >= TTS22) AND (REF(D,1) < TTS22))) – 1)),REF(HHV(REF(HIGH,1),(BARSLAST(((D >= TTS22) AND (REF(D,1) < TTS22))) – 1)),BARSLAST(((D < TTS22) AND REF(D,1)))));

RH1:=IF((HIGH > L2L),LOW,REF(LOW,BARSLAST((HIGH > L2L))));

RH4:=IF((HIGH > L2L),D,REF(D,BARSLAST((HIGH > L2L))));

RH42:=IF((((HIGH > RH1) AND (D < RH4)) AND (D < D24)),HIGH,REF(HIGH,BARSLAST((((HIGH > RH1) AND (D < RH4)) AND (D < D24)))));

RH5:=IF(((D > U2L) AND (REF(D,1) <= U2L)),LLV(REF(LOW,1),(BARSLAST(((D <= U2L) AND (REF(D,1) > U2L))) – 1)),REF(LLV(REF(LOW,1),(BARSLAST(((D <= U2L) AND (REF(D,1) > U2L))) – 1)),BARSLAST(((D > U2L) AND REF(D,1)))));

RL1:=IF((LOW < RH5),HIGH,REF(HIGH,BARSLAST((LOW < RH5))));

RL4:=IF((LOW < RH5),D,REF(D,BARSLAST((LOW < RH5))));

RL42:=IF((((LOW < RL1) AND (D > RL4)) AND (D > D24)),LOW,REF(LOW,BARSLAST((((LOW < RL1) AND (D > RL4)) AND (D > D24)))));

TTS23:=LLV(HIGH,30);

DRAWTEXT(FILTER(((((RL42 = J24) AND (CLOSE > OPEN)) AND (CLOSE > TTS23)) AND (LOW <= J24)),20),(LOW – 0.12),’底成’),COLOR0EABFF;

RL5:=(SMA(HIGH,5,2) * 1.05);

上:=(SMA(LOW,5,2) * 0.96);

下:=SMA(LOW,2,1);

中:=(((((3 * CLOSE) + HIGH) + LOW) + OPEN) / 6);

X1:=EMA(中,10);

X2:=REF(X1,1);

X3:=((REF(HIGH,1) + REF(LOW,1)) / 2);

X4:=(MA(CLOSE,21) + (2 * STD(CLOSE,21)));

X5:=REF(CLOSE,1);

X6:=((SMA(MAX((CLOSE – X5),0),7,1) / SMA(ABS((CLOSE – X5)),7,1)) * 100);

X7:=CROSS(79,X6);

X8:=FILTER(X7,4);

X9:=MA(CLOSE,115);

VAR001:=EMA(CLOSE,8);

TTS24:=EMA(VAR001,20);

VAR002:=CROSS(VAR001,TTS24);

VAR003:=(VAR001 < MA(CLOSE,20));

VAR004:=(((HHV(HIGH,36) – CLOSE) / (HHV(HIGH,36) – LLV(LOW,36))) * 100);

VAR005:=SMA(VAR004,5,1);

VAR006:=SMA(VAR005,8,1);

VAR007:=(CROSS(VAR005,VAR006) AND (VAR006 < 5));

VAR008:=((CLOSE > (LLV(CLOSE,60) + (0.3 * LLV(CLOSE,60)))) AND VAR007);

VAR009:=IF((CLOSE > 1000),VAR007,VAR008);

VAR00F:=CROSS(X1,X2);

MA115:=VAR00F;

TTS25:=(VAR002 AND VAR003);

TTS26:=VAR009;

DRAWTEXT(X8,(HIGH * 1.03),’出货’),COLOR9000F5;

DRAWTEXT((TTS26 > 0),(HIGH * 1.04),’逃命’),COLORFF0000;

TTS27:=(SMA(HIGH,21,2) * 1.05);

TTS28:=(SMA(LOW,21,2) * 0.94);

DRAWTEXT(FILTER(((((((((CLOSE / OPEN) > 1.03) AND ((TTS16 – REF(TTS16,1)) > 0)) AND ((CLOSE – REF(CLOSE,1)) > 0)) AND (HIGH < TTS3)) AND (CLOSE < TTS3)) AND ((TTS18 – REF(TTS18,1)) > 0)) AND (CLOSE < MAN)),3),LOW,’出击’),COLOR646E69;

DRAWTEXT((((((TTS25 > 0) AND ((X1 – REF(X1,1)) > 0)) AND (HIGH < TTS21)) AND (HIGH < X9)) AND ((X2 – REF(X2,1)) > 0)),LOW,’黑马’),COLOR00FF00;

DRAWTEXT((((CROSS(VAR2C,UPPER) AND (HIGH < TTS3)) AND ((XY – REF(XY,1)) > 0)) AND (HIGH < TTS2)),LOW,’买’),COLORFFFFFF;

DRAWTEXT(FILTER((((((MA115 AND (CLOSE < TTS21)) AND ((TTS8 – REF(TTS8,1)) > 0)) AND ((X1 – REF(X1,1)) > 0)) AND (HIGH < TTS17)) AND ((CLOSE / OPEN) > 1.03)),5),LOW,’●买’),COLOR93EE7D;

DRAWTEXT(((((LOW <= 上) AND (HIGH >= TTS12)) AND (CLOSE >= TTS23)) AND ((CLOSE / OPEN) > 1.03)),(LOW – 0.08),’抄底’),COLOR0000FF;

DRAWTEXT(FILTER((((((LOW <= TTS19) AND ((MA20 – REF(MA20,1)) > 0)) AND (OPEN <= TTS17)) AND (HIGH > TTS17)) AND (CLOSE > TTS19)),5),LOW,’涨10%’),COLORFFFFFF;

DRAWTEXT(FILTER((((((B8 <= 1) AND (LOW <= TTS28)) AND (CLOSE > OPEN)) AND (LOW <= LL30)) AND (CLOSE >= TTS23)),3),(LOW – 0.08),’短抄’),COLORA100FF;

DRAWTEXT(FILTER((((CROSS(TTS14,TTS15) AND (HIGH < M80)) AND (HIGH < TTS3)) AND LLV(LOW,0)),10),LOW,’果断买’),COLOR668800;

DRAWTEXT(FILTER(((CROSS(TTS5,TTS8) AND (LOW <= TTS8)) AND (CLOSE >= TTS8)),4),(LOW – 0.06),’买’),COLOR00FF00;

DRAWTEXT(FILTER((((((((MA20 – REF(MA20,1)) > 0) AND (HIGH < TTS2)) AND ((AA10 – REF(AA10,1)) > 0)) AND (HIGH < TTS3)) AND (VOL >= REF(VOL,1))) AND CROSS(CLOSE,MA20)),57),LOW,’突破生命线’),COLOR0000FF;

DRAWTEXT(FILTER(((((LOW <= MA80) AND (CLOSE > MA80)) AND (CLOSE > OPEN)) AND (TTS13 <= MA80)),8),LOW,’底’),COLORFFFF00;

DRAWTEXT(((CROSS(MA20,TTS21) AND (LOW <= MA20)) AND ((MA20 – REF(MA20,1)) > 0.02)),(LOW – 0.03),’绝佳买点’),COLORAFA0AF;

DRAWTEXT((((((((CROSS(CLOSE,MA20) AND (HIGH < TTS21)) AND (OPEN < MA20)) AND (HIGH < TTS2)) AND ((MAN – REF(MAN,1)) > 0)) AND ((X1 – REF(X1,1)) > 0)) AND (D < 63)) AND ((MA20 – REF(MA20,1)) > 0)),(LOW – 0.05),’大牛’),COLOR73777F;

DRAWTEXT(CROSS(LL30,TTS12),(LOW – 0.02),’短线买’);

02

附图1 源码

TTS3AA:=IF((CLOSE>REF(CLOSE,1)),88,0);

TTS4AA:=IF(((CLOSE)/(REF(CLOSE,1))>1.05) AND ((HIGH)/(CLOSE)<1.01) AND (TTS3AA>0),91,0);

XG:=(FILTER((TTS4AA>90),45)),COLORYELLOW;

STICKLINE(XG,150,0,4,0),COLOR000099;

STICKLINE(XG,150,0,2,0),COLOR0000BB;

STICKLINE(XG,150,0,1,0),COLOR0000DD;

STICKLINE(XG,150,0,0.9,0),COLOR0000FF;

DRAWTEXT(XG>0,130,’龙起暴点’),COLOR00C5FF;

RSV:=(CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100;

K:=SMA(RSV,3,1);

D:=SMA(K,3,1);

J:=3*K-2*D;

J1:=REVERSE(J);

AA:=REF(MA(C,1),10)>REF(MA(C,60),10);

启动:CROSS(J,J1) AND AA;

STICKLINE(启动,0,30,6,0),COLORBLUE;

STICKLINE(启动,30,60,4,0),COLORWHITE;

STICKLINE(启动,60,80,2,0),COLORYELLOW;

DRAWTEXT(启动,70,’★庄家出现’),COLORRED;

03

附图2 源码

HSLZB:100*VOL/(FINANCE(7)/100)COLORYELLOW,NODRAW;

低迷:IF(HSLZB<=6,HSLZB,DRAWNULL),COLORFF9900,NODRAW;

成交活跃:IF(HSLZB>6 && HSLZB<=15,HSLZB,DRAWNULL)COLORYELLOW,NODRAW;

高度活跃:IF(HSLZB>15 && HSLZB<=35,HSLZB,DRAWNULL)COLORMAGENTA,NODRAW;

极度活跃:IF(HSLZB>35 && HSLZB<=95,HSLZB,DRAWNULL)COLORGREEN,NODRAW;

DRAWTEXT(FILTER(6,150),6*1.05,’活跃分界线’),COLORYELLOW;

STICKLINE(低迷,HSLZB,0,3,0),COLORWHITE;

STICKLINE(成交活跃,HSLZB,0,3,0)COLORYELLOW;

STICKLINE(高度活跃,HSLZB,0,3,0),COLORMAGENTA;

STICKLINE(极度活跃,HSLZB,0,3,0),COLORGREEN;

HS5:MA(HSLZB,5),COLORRED,LINETHICK1;

HS10:MA(HSLZB,10),COLORBLUE,LINETHICK1;

STICKLINE(低迷&&(((H/REF(C,1)>1.06) OR (((H-OPEN)/OPEN*100)>6)) AND C>=O),HSLZB/2,HSLZB*1,3,0),COLORRED;

STICKLINE(成交活跃&&(((H/REF(C,1)>1.06) OR (((H-OPEN)/OPEN*100)>6)) AND C>=O),HSLZB/2,0,3,0),COLORRED;

STICKLINE(高度活跃&&(((H/REF(C,1)>1.06) OR (((H-OPEN)/OPEN*100)>6)) AND C>=O),HSLZB/2,0,3,0),COLORRED;

STICKLINE(极度活跃&&(((H/REF(C,1)>1.06) OR (((H-OPEN)/OPEN*100)>6)) AND C>=O),HSLZB/2,0,3,0),COLORRED;

04

图片示例

图片

友情提示:本文内容仅作为知识分享,供交流学习使用,不构成任何投资建议,不作为投资依据。

发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/111614
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!

(0)
股市刺客的头像股市刺客
上一篇 1天前
下一篇 1天前

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注