通达信涨跌家数公式的写法,卡点不在函数会不会用,而在「家数」这个词背后到底指谁。软件自带的指数标的函数里,INDEXADV 返回上涨家数、INDEXDEC 返回下跌家数,两个函数各返回一个数字;但一个市场只有一个数字,两个市场就有两组数字,再加上统计范围是按指数成分算还是按全市场算,拼法不同,得出的数也不同。本文把这几个口径拆开讲,最后给一张可以直接抄的记录表。
先说明一件事:通达信涨跌家数公式不是一条画出来好看的副图线,它是复盘时用来描述当日市场宽度的原始读数。宽度和指数涨跌是两回事,指数由权重股带着走,家数由大量中小标的的涨跌决定,两者并不总是同向,这一点在后面第四节会展开。
一、四个市场,四组数字
在个股上写 INDEXADV,取到的不是全市场家数,而是「该股所属大盘」的上涨家数。上证的标的取到沪市,深市的标的取到深市。把这条公式挂在一只沪市股票的副图上,看到的只是沪市一侧,深市那一侧根本没参与。
所以第一件事是把范围想清楚:要看两市合计,就得同时取到两个市场的数。做到这一点有两条路,一条是在指数 K 线上写公式,另一条是用跨标的引用把指定指数的家数取过来。
二、INDEXADV 与 INDEXDEC 的取数规则
这两个函数属于指数标的函数族,同一族里还有 INDEXC、INDEXO、INDEXH、INDEXL、INDEXV、INDEXA,分别对应大盘的收盘、开盘、最高、最低、成交量与成交额。族内函数的共同前提是一条:对应指数的数据要先下载到本地。数据没下来,函数返回的就是空值,公式不报错,图上是一条断线或者一段零。
| 写法 | 取到的内容 | 挂在哪 |
|---|---|---|
INDEXADV |
所属大盘的上涨家数 | 个股、指数均可 |
INDEXDEC |
所属大盘的下跌家数 | 个股、指数均可 |
HY_INDEXADV |
所属行业指数的上涨家数 | 需本机有通达信板块指数 |
HY_INDEXDEC |
所属行业指数的下跌家数 | 需本机有通达信板块指数 |
另有一条跨标的引用的写法,用「代码加字段」的方式直接指向某个指数的家数,例如指向沪市与深市各自的上涨、下跌家数。这种写法在部分版本里可用,字段名与支持范围随版本不同,写之前先在公式管理器里点「测试公式」看输出区有没有值,不要凭记忆套。
{ 单市场写法:在本市场内统计涨跌家数 }
UP:=INDEXADV;
DN:=INDEXDEC;
TOTAL:UP+DN,NODRAW;
RATIO:UP/TOTAL,NODRAW;
{ 想合成两市,需要两个市场各取一组 }
{ 沪市一组指向沪市指数,深市一组指向深市指数 }
{ 具体指向写法按本机版本支持的形式,先在测试公式里验值 }
上面这段先解决单市场:两个变量装本市场的涨、跌家数,合计与比值都由它们算出来。这一点能跑通,再谈两市合并。合并时的坑在于变量名——两个市场都用 INDEXADV 取数,取到的是各自所属市场的那一份,看上去是两个变量,实际含义随标的漂移。要么用跨标的引用把指数代码写死,要么干脆分两段公式、各自只在对应市场的标的上运行。
三、加总前的三件事:范围、重复、停牌
把两市的数相加之前,先确认三件事,任何一件没确认,合计数都不可比。
第一件是统计范围。指数标的函数对应的是几只大盘指数,而大盘指数未必覆盖全市场:有的指数按成分股编制,成分数量固定;有的按全部上市标的编制。函数返回的家数究竟是「该指数成分内」的还是「该市场全部」的,要在自己的版本上核对一次。核对办法很直接:在一个交易日收盘后,把两市家数之和与软件里显示的上市家数并排看,两个数量级差得远,说明统计范围不是全市场。
第二件是重复计数。沪市与深市分开取,加总不会重复;但如果为了看细分,再把创业板、中小板这类板块的家数加进去,就会与所属市场那一侧重复。加总的层级要统一:要么只加两级市场,要么只加板块,不要混着加。
第三件是停牌与新股。停牌的标的当日没有涨跌,是否计入分母,取决于数据源的统计方式,公式侧看不到明细。这个差异在停牌家数多的日子里会体现出来:家数之和明显低于上市家数。记录时把当日家数之和与上市家数一并写下,日后回看就能判断当天的缺口是不是由停牌造成的。
四、比值、差值、占比:三种口径各有用途
同样两组数字,可以做三种读数。选哪一种,取决于你要回答什么问题。
| 口径 | 写法 | 特点 | 适合回答 |
|---|---|---|---|
| 比值 | 上涨家数 ÷(上涨 + 下跌) | 归一到 0 到 1 之间,跨日可比 | 当日宽度在历史里处于什么位置 |
| 差值 | 上涨家数 − 下跌家数 | 保留家数的原始规模,正负号直观 | 两侧家数的差距有多大 |
| 占比 | 上涨家数 ÷ 上市家数 | 分母含停牌,读数偏低 | 上涨标的占全部标的的比重 |
比值的好处是不受上市家数增长影响。市场扩容后,家数的读数整体抬高,同一水平的历史对比会失真;比值把分母换成「上涨加下跌」,规模因素被消掉,多年数据能放在一张图上。
差值的好处是能看出方向与力度。上涨比下跌多两千家与多两百家,比值可能都接近 1,差值却差一个量级。做宽度记录时,两个数一起记,回看时才有信息量。
占比这一列要谨慎。分母用上市家数,分子只用上涨家数,停牌的不在分子里却在分母里,读数天然偏低。这个口径适合与自己历史上同一天数比,不适合跨市场比。
五、数据前提:指数数据要先落到本地
家数取自指数数据,指数数据不在本地,读出来就是空的。这一步在盘后做比较稳,收盘后把当日数据下载完整,再执行公式。
下载入口在盘后数据下载里,勾选指数类数据;下载完成后,把公式挂到指数 K 线上看一眼,两条线有没有值、量级对不对。有值之后再去看个股上的效果,顺序不能反。个股上取不到值时,先怀疑指数数据,再去怀疑公式写法,这条排查顺序能省掉大量无效改动。
站内 复盘方法与数据工具 里讲过数据完整性与结果的一致性,这里的家数属于同一类问题:读数不对,后面的记录与对比都建立在错的基础上。
六、行业与板块:HY_INDEXADV 的适用范围
想看某个行业内部有多少只上涨,用带 HY_ 前缀的那一组。它们取的是行业指数的家数,前提是本机装有通达信板块指数;没有板块指数,这一族函数不支持,输出为空。
板块家数的样本小,读数的波动比大盘大。一个三十只成分的行业,一两只权重的涨跌就能让家数从二十变成十八,比值的跳动幅度远大于大盘。用板块家数做横向对比时,样本数要一起写进记录,否则两天的读数放在一起看不出可比性。
还有一层是板块归属的时效。行业分类会调整,成分会更换,同一只标的在不同时间可能落在不同行业指数里。历史对比时把口径固定到「按当期分类」,不要用今天的分类去解释去年的读数。
七、一张可以直接抄的记录表
把通达信涨跌家数公式用起来的做法是每天记一行,而不是每天看一眼。列不多,六列就够。
| 列名 | 填什么 | 为什么记 |
|---|---|---|
| 日期 | 交易日 | 排序与对齐 |
| 沪市涨 / 跌 | 两个家数 | 分市场看宽度 |
| 深市涨 / 跌 | 两个家数 | 同上 |
| 合计与比值 | 四个数加总,再算比值 | 跨日对比的主读数 |
| 上市家数 | 当日两市上市标的数 | 解释缺口,判断停牌影响 |
| 指数涨幅 | 对应大盘指数的当日涨幅 | 与宽度并排,看是否同向 |
最后两列放在一起看,能看出宽度与指数的背离:指数涨而家数比值靠近中间值,说明上涨集中在权重;指数平而家数比值明显偏向一侧,说明权重与多数标的的走向不一致。这两种情形都属于「指数不能代表全部」,记录里留痕,比凭印象回忆可靠。
把这几节收起来看,通达信涨跌家数公式能做的事就清楚了:它把市场宽度这个外部统计量搬进公式,让你可以在同一张图上与指数、与个股指标并排。它不能做的是替你判断宽度意味着什么,也不能替代对成分与停牌口径的核对。这两件事留在公式外面,恰恰是记录里最值钱的部分。
