通达信公式分享---主力筹码指标源码解读
指标展示:
源码解析:
X_1:=6; // 定义变量X_1为6X_2:=6; // 定义变量X_2为6X_3:=IF(HIGH=HHV(HIGH,8X_1),HIGH,DRAWNULL); // 如果当前最高价等于过去8X_1个周期内的最高价,则将最高价赋值给X_3,否则绘制空值X_4:=CONST(BARSLAST(X_3=HIGH))+1; // 计算X_3等于最高价的最后一个周期的周期数,并加1赋值给X_4X_5:=CONST(IF(X_4=1,HIGH,REF(HIGH,X_4-1))); // 如果X_4等于1,则将最高价赋值给X_5,否则将X_4-1周期前的最高价赋值给X_5X_6:=IF(LOW=LLV(LOW,8X_2),LOW,DRAWNULL); // 如果当前最低价等于过去8X_2个周期内的最低价,则将最低价赋值给X_6,否则绘制空值X_7:=CONST(BARSLAST(X_6=LOW))+1; // 计算X_6等于最低价的最后一个周期的周期数,并加1赋值给X_7X_8:=CONST(IF(X_7=1,LOW,REF(LOW,X_7-1))); // 如果X_7等于1,则将最低价赋值给X_8,否则将X_7-1周期前的最低价赋值给X_8X_9:=CURRBARSCOUNT<=X_7 AND LOW=X_8; // 如果当前周期数小于等于X_7并且最低价等于X_8,则将真赋值给X_9,否则将假赋值给X_9X_10:=CURRBARSCOUNT<=X_4 AND HIGH=X_5; // 如果当前周期数小于等于X_4并且最高价等于X_5,则将真赋值给X_10,否则将假赋值给X_10{更多指标,添加V: FSC2012782002} STICKLINE(IF(X_7>X_4,X_10,X_9),X_8,X_5,0,0),COLOR628962; // 根据条件(X_7>X_4)选择绘制上涨柱状线(X_10)或下跌柱状线(X_9),起点为X_8,终点为X_5,无偏移,无宽度STICKLINE(IF(X_7>X_4,X_9,X_10),X_8,X_5,0,0),COLOR628962; // 根据条件(X_7>X_4)选择绘制下跌柱状线(X_9)或上涨柱状线(X_10),起点为X_8,终点为X_5,无偏移,无宽度,颜色为颜色码628962NOTEXT高:REF(HIGH,BARSLAST(X_10)),DOTLINE,COLOR628962; // 绘制高点,高点值为X_10最后一次出现的周期的高点,使用点线样式,颜色为颜色码628962
NOTEXT低:REF(LOW,BARSLAST(X_9)),DOTLINE,COLOR628962; // 绘制低点,低点值为X_9最后一次出现的周期的低点,使用点线样式,颜色为颜色码628962
X_11:=LLV(MA((LOW+HIGH+CLOSE+OPEN)/4,6),88); // 计算(最低价+最高价+收盘价+开盘价)/4的6日简单移动平均的最低值,取88个周期赋值给X_11
X_12:=EMA((HIGH+LOW+CLOSE)/3*(HHV(HIGH,10)-CLOSE)/(HHV(HIGH,10)-LLV(LOW,10))*20/10+X_11,2); // 计算(最高价+最低价+收盘价)/3乘以(HHV(最高价,10)-收盘价)/(HHV(最高价,10)-LLV(最低价,10))乘以20/10再加上X_11的2日指数移动平均赋值给X_12
X_13:=(3X_12-2SMA(X_12,5,1))0.3; // 计算(3X_12-2*X_12的5日简单移动平均)*0.3赋值给X_13
X_14:=(HHV(INDEXH,13)-INDEXC)/(HHV(INDEXH,13)-LLV(INDEXL,13)); // 计算(INDEXH的13日最高值-INDEXC)/(INDEXH的13日最高值-INDEXL的13日最低值)赋值给X_14
X_15:=EMA(3X_14-2SMA(X_14,18,1),5); // 计算(3X_14-2X_14的18日简单移动平均)的5日指数移动平均赋值给X_15
X_16:=(INDEXC-LLV(INDEXL,8))/(HHV(INDEXH,8)-LLV(INDEXL,8)); // 计算(INDEXC-INDEXL的8日最低值)/(INDEXH的8日最高值-INDEXL的8日最低值)赋值给X_16X_17:=3SMA(X_16,3,1)-2SMA(SMA(X_16,3,1),5,1); // 计算3倍X_16的3日简单移动平均减去2倍X_16的5日简单移动平均的5日简单移动平均赋值给X_17
X_18:=(INDEXC2+INDEXH+INDEXL)/4; // 计算(INDEXC的收盘价2+INDEXH的最高价+INDEXL的最低价)/4赋值给X_18
X_19:=EMA(X_18,13)-EMA(X_18,34); // 计算X_18的13日指数移动平均减去X_18的34日指数移动平均赋值给X_19
X_20:=EMA(X_19,5); // 计算X_19的5日指数移动平均赋值给X_20
X_21:=(X_19-X_20+X_11)*1; // 计算(X_19-X_20+X_11)*1赋值给X_21
X_22:=1.86*EMA(CLOSE,5)-EMA(CLOSE,13); // 计算CLOSE的5日指数移动平均的1.86倍减去CLOSE的13日指数移动平均赋值给X_22
资金力度:X_22,COLORGREEN,LINETHICK2; // 绘制资金力度,值为X_22,颜色为绿色,线条粗细为2
X_23:=MA(CLOSE,1); // 计算CLOSE的1日简单移动平均赋值给X_23
X_24:=SMA(SMA(SMA(X_23,2,1),2,1),2,1); // 计算X_23的2日简单移动平均的2日简单移动平均的2日简单移动平均赋值给X_24
X_25:=(EMA(CLOSE,5)*7+EMA(CLOSE,10)*3)/10; // 计算CLOSE的5日指数移动平均乘以7加上CLOSE的10日指数移动平均乘以3再除以10赋值给X_25
X_26:=(X_24-REF(X_24,1))/REF(X_24,1)*100; // 计算X_24与X_24的1日前值的差除以X_24的1日前值再乘以100赋值给X_26
X_27:=MA(CLOSE,17)+ABS(MA(CLOSE,17)-REF(MA(CLOSE,17),1)); // 计算CLOSE的17日简单移动平均加上CLOSE的17日简单移动平均与CLOSE的17日简单移动平均的1日前值之差的绝对值赋值给X_27
X_28:=MA(CLOSE,17)+MA(CLOSE,17)-REF(MA(CLOSE,17),1); // 计算CLOSE的17日简单移动平均的两倍减去CLOSE的17日简单移动平均的1日前值赋值给X_28
X_29:=IF(MA(CLOSE,17)<X_28,X_28,MA(CLOSE,17)); // 如果CLOSE的17日简单移动平均小于X_28,则取X_28的值,否则取CLOSE的17日简单移动平均的值,赋值给X_29
X_30:=EMA(CLOSE,243); // 计算CLOSE的243日指数移动平均赋值给X_30
X_31:=EMA(CLOSE,3); // 计算CLOSE的3日指数移动平均赋值给X_31
X_32:=X_29-(X_31-X_29); // 计算X_29减去(X_31-X_29)的值赋值给X_32
散筹:X_30-(X_31-X_30),COLORGREEN,LINETHICK2; // 绘制散筹指标,值为X_30减去(X_31-X_30),颜色为绿色,线条粗细为2
NOTEXTCG:MA(CLOSE,17)+ABS(MA(CLOSE,17)-REF(MA(CLOSE,17),1)),COLORFFAA99; // 绘制不显示的CG值,值为CLOSE的17日简单移动平均加上CLOSE的17日简单移动平均与CLOSE的17日简单移动平均的1日前值之差的绝对值,颜色为颜色码FFAA99
NOTEXTCG1:MA(CLOSE,17)+MA(CLOSE,17)-REF(MA(CLOSE,17),1),COLORFFAA99; // 绘制不显示的CG1值,值为CLOSE的17日简单移动平均的两倍减去CLOSE的17日简单移动平均的1日前值,颜色为颜色码FFAA99
主筹:IF(MA(CLOSE,17)<X_28,X_28,MA(CLOSE,17)),COLORLIMAGENTA,LINETHICK2; // 绘制主筹指标,根据条件(MA(CLOSE,17)<X_28)选择取值为X_28或CLOSE的17日简单移动平均,颜色为颜色码LIMAGENTA,线条粗细为2
NOTEXT3:IF(主筹<REF(主筹,1),主筹,DRAWNULL),COLORFFAA99,LINETHICK2; // 绘制不显示的主筹指标小于主筹指标的前一周期值时的点,颜色为颜色码FFAA99,线条粗细为2
NOTEXT4:IF(主筹>REF(主筹,1),主筹,DRAWNULL),COLORLIMAGENTA,LINETHICK2; // 绘制不显示的主筹指标大于主筹指标的前一周期值时的点,颜色为颜色码LIMAGENTA,线条粗细为2
X_33:=FORCAST(CLOSE,5); // 计算CLOSE的5日前向预测值赋值给X_33
黄:LLV(FORCAST(CLOSE,5),2),COLORYELLOW; // 绘制黄色线,值为CLOSE的5日前向预测值的最低值(取最近2个周期的最低值)
X_34:=X_33100-黄100; // 计算X_33乘以100减去黄乘以100赋值给X_34
DRAWBAND(X_33,RGB(155,155,0),黄,RGB(0,155,0)); // 绘制带状区域,上边界为X_33,颜色为RGB(155,155,0),下边界为黄,颜色为RGB(0,155,0)
绿:IF(X_34=0,黄,DRAWNULL),COLORGREEN,LINETHICK2; // 绘制绿色线,当X_34等于0时取黄的值,否则不显示,颜色为绿色,线条粗细为2
DRAWKLINE(HIGH,OPEN,LOW,CLOSE); // 绘制K线图,使用高、开、低、收四个价格数据进行绘制
XH:=FILTER(主筹>REF(主筹,1) AND CROSS(X_34,黄) AND C>NOTEXTCG,5); // 根据条件过滤出满足主筹大于主筹的前一周期值、X_34与黄发生交叉且收盘价大于不显示的CG值的数据,并将满足条件的数据赋值给XH
DRAWICON(XH,主筹,26); // 在图表上绘制图标,图标的位置为满足条件的数据点,图标形状为26
以上是通达信主力筹码指标的源码和注释,可以导入通达信软件主附图指标直接使用,如遇到导入问题可联系我帮忙或直接联系我,发送指标源码文件亦可。
源码解析:
X_1:=6; // 定义变量X_1为6X_2:=6; // 定义变量X_2为6X_3:=IF(HIGH=HHV(HIGH,8X_1),HIGH,DRAWNULL); // 如果当前最高价等于过去8X_1个周期内的最高价,则将最高价赋值给X_3,否则绘制空值X_4:=CONST(BARSLAST(X_3=HIGH))+1; // 计算X_3等于最高价的最后一个周期的周期数,并加1赋值给X_4X_5:=CONST(IF(X_4=1,HIGH,REF(HIGH,X_4-1))); // 如果X_4等于1,则将最高价赋值给X_5,否则将X_4-1周期前的最高价赋值给X_5X_6:=IF(LOW=LLV(LOW,8X_2),LOW,DRAWNULL); // 如果当前最低价等于过去8X_2个周期内的最低价,则将最低价赋值给X_6,否则绘制空值X_7:=CONST(BARSLAST(X_6=LOW))+1; // 计算X_6等于最低价的最后一个周期的周期数,并加1赋值给X_7X_8:=CONST(IF(X_7=1,LOW,REF(LOW,X_7-1))); // 如果X_7等于1,则将最低价赋值给X_8,否则将X_7-1周期前的最低价赋值给X_8X_9:=CURRBARSCOUNT<=X_7 AND LOW=X_8; // 如果当前周期数小于等于X_7并且最低价等于X_8,则将真赋值给X_9,否则将假赋值给X_9X_10:=CURRBARSCOUNT<=X_4 AND HIGH=X_5; // 如果当前周期数小于等于X_4并且最高价等于X_5,则将真赋值给X_10,否则将假赋值给X_10{更多指标,添加V: FSC2012782002} STICKLINE(IF(X_7>X_4,X_10,X_9),X_8,X_5,0,0),COLOR628962; // 根据条件(X_7>X_4)选择绘制上涨柱状线(X_10)或下跌柱状线(X_9),起点为X_8,终点为X_5,无偏移,无宽度STICKLINE(IF(X_7>X_4,X_9,X_10),X_8,X_5,0,0),COLOR628962; // 根据条件(X_7>X_4)选择绘制下跌柱状线(X_9)或上涨柱状线(X_10),起点为X_8,终点为X_5,无偏移,无宽度,颜色为颜色码628962NOTEXT高:REF(HIGH,BARSLAST(X_10)),DOTLINE,COLOR628962; // 绘制高点,高点值为X_10最后一次出现的周期的高点,使用点线样式,颜色为颜色码628962
NOTEXT低:REF(LOW,BARSLAST(X_9)),DOTLINE,COLOR628962; // 绘制低点,低点值为X_9最后一次出现的周期的低点,使用点线样式,颜色为颜色码628962
X_11:=LLV(MA((LOW+HIGH+CLOSE+OPEN)/4,6),88); // 计算(最低价+最高价+收盘价+开盘价)/4的6日简单移动平均的最低值,取88个周期赋值给X_11
X_12:=EMA((HIGH+LOW+CLOSE)/3*(HHV(HIGH,10)-CLOSE)/(HHV(HIGH,10)-LLV(LOW,10))*20/10+X_11,2); // 计算(最高价+最低价+收盘价)/3乘以(HHV(最高价,10)-收盘价)/(HHV(最高价,10)-LLV(最低价,10))乘以20/10再加上X_11的2日指数移动平均赋值给X_12
X_13:=(3X_12-2SMA(X_12,5,1))0.3; // 计算(3X_12-2*X_12的5日简单移动平均)*0.3赋值给X_13
X_14:=(HHV(INDEXH,13)-INDEXC)/(HHV(INDEXH,13)-LLV(INDEXL,13)); // 计算(INDEXH的13日最高值-INDEXC)/(INDEXH的13日最高值-INDEXL的13日最低值)赋值给X_14
X_15:=EMA(3X_14-2SMA(X_14,18,1),5); // 计算(3X_14-2X_14的18日简单移动平均)的5日指数移动平均赋值给X_15
X_16:=(INDEXC-LLV(INDEXL,8))/(HHV(INDEXH,8)-LLV(INDEXL,8)); // 计算(INDEXC-INDEXL的8日最低值)/(INDEXH的8日最高值-INDEXL的8日最低值)赋值给X_16X_17:=3SMA(X_16,3,1)-2SMA(SMA(X_16,3,1),5,1); // 计算3倍X_16的3日简单移动平均减去2倍X_16的5日简单移动平均的5日简单移动平均赋值给X_17
X_18:=(INDEXC2+INDEXH+INDEXL)/4; // 计算(INDEXC的收盘价2+INDEXH的最高价+INDEXL的最低价)/4赋值给X_18
X_19:=EMA(X_18,13)-EMA(X_18,34); // 计算X_18的13日指数移动平均减去X_18的34日指数移动平均赋值给X_19
X_20:=EMA(X_19,5); // 计算X_19的5日指数移动平均赋值给X_20
X_21:=(X_19-X_20+X_11)*1; // 计算(X_19-X_20+X_11)*1赋值给X_21
X_22:=1.86*EMA(CLOSE,5)-EMA(CLOSE,13); // 计算CLOSE的5日指数移动平均的1.86倍减去CLOSE的13日指数移动平均赋值给X_22
资金力度:X_22,COLORGREEN,LINETHICK2; // 绘制资金力度,值为X_22,颜色为绿色,线条粗细为2
X_23:=MA(CLOSE,1); // 计算CLOSE的1日简单移动平均赋值给X_23
X_24:=SMA(SMA(SMA(X_23,2,1),2,1),2,1); // 计算X_23的2日简单移动平均的2日简单移动平均的2日简单移动平均赋值给X_24
X_25:=(EMA(CLOSE,5)*7+EMA(CLOSE,10)*3)/10; // 计算CLOSE的5日指数移动平均乘以7加上CLOSE的10日指数移动平均乘以3再除以10赋值给X_25
X_26:=(X_24-REF(X_24,1))/REF(X_24,1)*100; // 计算X_24与X_24的1日前值的差除以X_24的1日前值再乘以100赋值给X_26
X_27:=MA(CLOSE,17)+ABS(MA(CLOSE,17)-REF(MA(CLOSE,17),1)); // 计算CLOSE的17日简单移动平均加上CLOSE的17日简单移动平均与CLOSE的17日简单移动平均的1日前值之差的绝对值赋值给X_27
X_28:=MA(CLOSE,17)+MA(CLOSE,17)-REF(MA(CLOSE,17),1); // 计算CLOSE的17日简单移动平均的两倍减去CLOSE的17日简单移动平均的1日前值赋值给X_28
X_29:=IF(MA(CLOSE,17)<X_28,X_28,MA(CLOSE,17)); // 如果CLOSE的17日简单移动平均小于X_28,则取X_28的值,否则取CLOSE的17日简单移动平均的值,赋值给X_29
X_30:=EMA(CLOSE,243); // 计算CLOSE的243日指数移动平均赋值给X_30
X_31:=EMA(CLOSE,3); // 计算CLOSE的3日指数移动平均赋值给X_31
X_32:=X_29-(X_31-X_29); // 计算X_29减去(X_31-X_29)的值赋值给X_32
散筹:X_30-(X_31-X_30),COLORGREEN,LINETHICK2; // 绘制散筹指标,值为X_30减去(X_31-X_30),颜色为绿色,线条粗细为2
NOTEXTCG:MA(CLOSE,17)+ABS(MA(CLOSE,17)-REF(MA(CLOSE,17),1)),COLORFFAA99; // 绘制不显示的CG值,值为CLOSE的17日简单移动平均加上CLOSE的17日简单移动平均与CLOSE的17日简单移动平均的1日前值之差的绝对值,颜色为颜色码FFAA99
NOTEXTCG1:MA(CLOSE,17)+MA(CLOSE,17)-REF(MA(CLOSE,17),1),COLORFFAA99; // 绘制不显示的CG1值,值为CLOSE的17日简单移动平均的两倍减去CLOSE的17日简单移动平均的1日前值,颜色为颜色码FFAA99
主筹:IF(MA(CLOSE,17)<X_28,X_28,MA(CLOSE,17)),COLORLIMAGENTA,LINETHICK2; // 绘制主筹指标,根据条件(MA(CLOSE,17)<X_28)选择取值为X_28或CLOSE的17日简单移动平均,颜色为颜色码LIMAGENTA,线条粗细为2
NOTEXT3:IF(主筹<REF(主筹,1),主筹,DRAWNULL),COLORFFAA99,LINETHICK2; // 绘制不显示的主筹指标小于主筹指标的前一周期值时的点,颜色为颜色码FFAA99,线条粗细为2
NOTEXT4:IF(主筹>REF(主筹,1),主筹,DRAWNULL),COLORLIMAGENTA,LINETHICK2; // 绘制不显示的主筹指标大于主筹指标的前一周期值时的点,颜色为颜色码LIMAGENTA,线条粗细为2
X_33:=FORCAST(CLOSE,5); // 计算CLOSE的5日前向预测值赋值给X_33
黄:LLV(FORCAST(CLOSE,5),2),COLORYELLOW; // 绘制黄色线,值为CLOSE的5日前向预测值的最低值(取最近2个周期的最低值)
X_34:=X_33100-黄100; // 计算X_33乘以100减去黄乘以100赋值给X_34
DRAWBAND(X_33,RGB(155,155,0),黄,RGB(0,155,0)); // 绘制带状区域,上边界为X_33,颜色为RGB(155,155,0),下边界为黄,颜色为RGB(0,155,0)
绿:IF(X_34=0,黄,DRAWNULL),COLORGREEN,LINETHICK2; // 绘制绿色线,当X_34等于0时取黄的值,否则不显示,颜色为绿色,线条粗细为2
DRAWKLINE(HIGH,OPEN,LOW,CLOSE); // 绘制K线图,使用高、开、低、收四个价格数据进行绘制
XH:=FILTER(主筹>REF(主筹,1) AND CROSS(X_34,黄) AND C>NOTEXTCG,5); // 根据条件过滤出满足主筹大于主筹的前一周期值、X_34与黄发生交叉且收盘价大于不显示的CG值的数据,并将满足条件的数据赋值给XH
DRAWICON(XH,主筹,26); // 在图表上绘制图标,图标的位置为满足条件的数据点,图标形状为26
以上是通达信主力筹码指标的源码和注释,可以导入通达信软件主附图指标直接使用,如遇到导入问题可联系我帮忙或直接联系我,发送指标源码文件亦可。