通达信SUM函数里,SUM 与 SUMBARS 看起来像同一个东西的两种写法,算的却不是同一件事:SUM(X,N) 返回区间内的总和,SUMBARS(X,A) 返回累加值够到阈值 A 所走过的周期数。两者输入形态接近,输出一个是数值,一个是根数。
把这两个名字写混,症状不会立刻显形。公式能保存,挂到副图上也有线,只是线的高低与心里预期的量级对不上,或者同一条线在两处读出来差一个数量级。下面按输出是什么、参数怎么数、边界在哪、怎么验四层拆开讲。文中的操作入口以通达信金融终端个人版的公式管理器为准,不同版本的菜单名称与措辞可能有差异。
一、SUM 与 SUMBARS 输出的量根本不同
把两者分开只需要一句话:SUM 求和,SUMBARS 数周期。通达信SUM函数返回的数值与输入序列处在同一量级,SUMBARS 返回的是一串不大的整数,上限受可用数据长度约束。
这条差别放到副图上很直观。用价格或成交量做累加的那条线,值可以到几百上千;用 SUMBARS 数出来的那条线,值落在个位数到几十这一段。两条线共用一个纵轴时,数值小的那条一直贴着零轴走,看上去像没算出来。
混用不会报错,但读数会被当成另一种量。看到一条贴零轴的水平线,会先去怀疑数据没下全、公式没生效,而原因可能只是 SUMBARS 的返回值本来就不大。先确认这条线是哪一类输出,再去看它数值对不对。
二、SUM 的窗口从当前根往回数,N 是回看周期数
通达信SUM函数的第二个参数 N 是回看周期数,窗口右端固定在当前这根K线,左端往回数 N 根。写成 SUM(CLOSE,5),取的是当前这根连同之前四根、共 5 根的收盘价之和;下一根K线到来时,整个窗口右移一格,最老的那一根被移出去。
窗口长度换了,同一天的读数会跟着换。短窗口把最近的跳变带进来,长窗口把早期数据也摊平,两条线在跳空或放量那一天的落差不一样,这个差别来自窗口本身,与数据对错无关。
把 X 换成 VOL,逻辑不变,量纲从价格变成手数。窗口长度 20、60 这类取值在公开资料里能查到,取多少取决于要观察的跨度。N 这个位置填的是「一共数几根」,写成 SUM(CLOSE,3),得到的是最近三根的和。
三、N 写 0:自首根起累计
N 的位置写 0 是另一种口径,含义是自首根起累计,窗口左端一直推到当前品种可用数据的第一根。SUM(CLOSE,0) 得到的是从数据起点到当前这根的全部收盘价之和,而不是最近 0 根。
这个写法在副图上的形态与区间写法不同:数值从最左端开始就不在零轴附近,随着历史数据增加而整体抬升。两只股票放在一起比,同一个自首根起累计的公式读数不可比,因为它们的数据起点不同,累计的根数也不同。
判断某条线是区间求和还是自首根累计,看两处即可:它是不是从图的最左端就开始有值,它是不是随历史长度单调抬升。这两点对上,可以认定踩到了 N 写 0 这一档。接手别人公式的时候,先把每个 SUM 的第二个参数记下来,再对照副图形态确认一遍,比直接改参数稳。
四、SUMBARS 数的是累加到阈值所需的周期数
SUMBARS 换了一个问法。SUM 问的是这 N 根加起来是多少,SUMBARS 问的是从当前往回累加、够到 A 需要多少根。写法是 SUMBARS(X,A),X 是累加对象,A 是阈值。
SUMBARS(VOL,100000) 数的是成交量从当前往回累加、首次达到或超过 100000 手所需要走过的周期数,返回的是根数,不是手数。把它当手数看,读数会差好几个量级。
这条返回值可以接到别的函数上用。把 SUMBARS 数出来的根数交给 SUM 当窗口长度,求的就是这一段的和,写法上是把 SUMBARS 的调用整个放进 SUM 的第二个位置。参数位置能不能接受一个表达式,按本机函数说明确认一次。
同一条线上还有一个 SUMBARSX,函数名末尾多了一个 X。它的引入口径以官方更新记录为准,站方不代写版本亲历。要确认本机是否认得这个名字,把它写进公式管理器点一次「测试公式」,能过语法说明这一版收下了这个函数名;过不去,光标会停在报错位置附近。
五、两类边界:阈值够不到,数据不够长
通达信SUM函数与 SUMBARS 在这两处会分道。阈值这一侧问的是 SUMBARS:当 A 在现有数据里始终够不到时,返回行为以官方函数说明为准,站方不做版本亲历的判断。自查的办法是把 A 设成一个明显够不到的值,观察那条线在本机上的量级,看它是给出一个很小的读数、一个接近数据长度的整数,还是别的结果。
数据长度这一侧问的是 SUM:可用根数少于 N 时,窗口没有铺满,前几根的读数按已到数据给出。品种新上市、或者本地历史数据没下全,都会落进这一档,副图最左端出现一段空,或者一段与后面形态不同的线。
| 现象或提示 | 含义 | 处理 |
|---|---|---|
| 副图那条线从最左端就一直不在零轴附近 | 第二个参数写成了 0,读数自首根起累计 | 把 0 改成需要的窗口长度,再看一次起点位置 |
| 新上市品种副图最左端有一段空白 | 可用根数少于 N,窗口还没铺满 | 把 N 调小,或者补下历史数据之后再挂一次 |
| SUMBARS 那条线贴着零轴,读数是个位数 | 返回值是周期数,量级本来就小 | 单独挂一个副图,或者换一条归一化后的线做对照 |
| 把阈值设成够不到的值之后,那条线的读数一直很大 | 阈值在现有数据里没有被满足 | 按官方函数说明确认本机口径,同时检查 X 与 A 的量纲是否匹配 |
| 价格累计线与成交量累计线读数差几个量级 | SUM 的结果随输入序列的量纲变化 | 两条线分开挂,或者先把序列归一化再求和 |
表里的第二行与第四行容易一起出现:数据不够长与阈值够不到都会让副图最左端那一段看起来反常。区分办法是看被检查的是哪一条线,SUM 那条线看窗口铺没铺满,SUMBARS 那条线看阈值有没有够到。
六、一段可运行的对照示例
新建一个副图公式,把下面三行粘进去,先不加任何条件,只观察量级。花括号里是注释,写不写都不影响计算。
{最小对照:副图三行,分别输出区间和、自首根累计、逼阈周期数}
SUMV:SUM(CLOSE,5),COLORWHITE;
SUMA:SUM(CLOSE,0),COLORYELLOW;
BARV:SUMBARS(VOL,100000),COLORGREEN;
挂上去之后看三处。SUMV 那条线跟着价格走,量级与收盘价同档;SUMA 那条线从最左端就离开零轴,并随历史长度抬升;BARV 那条线贴着零轴走,读数是个位数到几十。三条线量级差得远的时候,先注释掉一两条,剩下的那条才看得清。把累加对象从收盘价换成成交量,再挂一次,就能看到 SUM 那条线随输入量纲整体换档。
七、在公式管理器里逐步验证,以及版本口径
验证按五步走,每一步只盯一处变化,改动前把上一处的读数记下来。
- 用 Ctrl+F 打开公式管理器,新建一个副图公式,把上面那三行粘进去
- 先点「测试公式」过语法,看有没有给出语法错误与错误起始位置;通过之后再点确定保存
- 把公式挂到任意品种的副图上,先看 SUMBARS 那条线贴不贴零轴,确认它和另外两条不在一个量级
- 把 SUM 的第二个参数从 5 改成 0,再看那条线的起点位置是不是移到了数据最左端
- 把 SUMBARS 的阈值 A 设成一个在现有数据里够不到的值,看本机上那条线给出什么读数
五步走完,手上会有三样东西:本机认不认 SUMBARSX 这个名字、SUM 在 N 写 0 时的起点位置、SUMBARS 在阈值够不到时给出什么。这三样都从自己这台机器上读出来,比照搬别人的结论稳。
版本口径放在最后:本文以通达信金融终端个人版的公式管理器为准,函数名称与入口在不同版本里可能有差异,SUMBARSX 这类后续加入的名称以官方更新记录为准。自编公式落在 T0002 目录下,改之前先把原来那一份备份出来。
分清楚这两个函数,判断线只有一条:返回值回答的是多少还是几根;通达信SUM函数回答前者,SUMBARS 回答后者。
本文只作技术研究口径,不涉及也不构成对任何标的的判断。
站内还有 公式编写教程 里赋值与运算符的条目,指标原理与参数 里讲均线与标准差的口径,选股与预警 里讲条件式怎么落成公式,可对照查看。
