通达信公式区间成交量这个词,容易被当成把一段时间的量加起来就算完,动作本身没错,出问题的地方在口径。加的是哪一段、起点含不含当前根、单位是手还是股、算的是一根 K 的量还是一整段的量,这四件事不定下来,同一段行情能算出几个不同的数。下面把累计窗口、单位对齐、周期换算、与均量的对比写法、停牌与数据不足时的表现逐条说清。

本文以通达信金融终端个人版为准,公式编辑入口是 Ctrl+F 打开的公式管理器;不同版本的措辞与按钮位置可能有差异,以官方版本说明为准。

一、区间成交量的定义:窗口内的累计

区间成交量指在一个指定窗口内,把每根 K 的成交量逐根累加得到的量。窗口有两种给法:一种给定根数,从当前根往回数固定几根;另一种给定起点,从这个起点一直累加到当前根。对应到函数就是带固定根数的 SUM 与第二个参数为 0 的 SUM 两种写法。

窗口的边界要写清含不含当前根。累加类函数把当前根计入,要取到当前根之前的那一段,写法上配合 REF 或把根数减一。这一处不写明,两条都自称最近 20 根的公式能差出一根的量,量值大的品种上这个差值不小。

另一处边界是窗口内出现数据缺根。累加按根数推进,不按自然时间推进,缺根时累加的是有数据的那几根,得到的是这部分交易时间里的量。

二、通达信公式区间成交量里 SUM(V,N) 与 SUM(V,0) 的差别

通达信公式区间成交量里两种 SUM 写法的差别在窗口起点。带固定根数的写法从当前根往回数指定根数,逐根累加;第二个参数写 0 的写法,累加范围从该品种数据的起点一直延伸到当前根。两者在源码里只差一个参数,算出来的量级不在同一档。

窗口内累计(最近 N 根):

  区间量N := SUM(VOL, N);

自数据起点累计:

  区间量全 := SUM(VOL, 0);

对照:SUM(VOL,0) 只有在数据起点固定时结果才稳定

自起点累计有一个副作用:随着图上加载的历史越来越长,这个数的量值一直变大,它记录的是历史的总量,不是当前状态。拿它做比较,要先把它转成比值只看变化,或者把起点固定在一段明确的窗口里。做逐日对照时,前一种更能说明”这段比上一段多了多少”,后一种只能说明”历史累计到了多少”。

还有一点要落在写法上:第二个参数写 0 与写一个很大的根数,在图上加载的历史长度不变时结果接近,一旦历史加载长度变化,两者的差就出来了。需要结果可复现,就把窗口起点写成由 BARSLAST 一类函数算出的明确根数,不要把不确定的起点留在公式里。

三、通达信公式区间成交量里单位是手还是股

通达信公式区间成交量里的单位要回到数据源去确认。以通达信金融终端个人版为例,本地数据文件里的成交量按手记录,公式里输出的 VOL 沿用这个口径;接入的外部数据源有按股数提供的。把两个来源的量放进同一条公式比较,结果会相差一个固定倍数,这个倍数不会因为换参数而消失。

换算关系在公式里不写进计算,只在注释里标明:1 手对应 100 股。做量能对比时只要前后同源,比值的量纲会抵消,单位具体是手还是股不影响比值;做量值的展示与导出时要写明单位,读图的人不会把两个数量级混起来。

同名函数在不同数据源上的输出口径也可能不同。转到别的数据源之后把公式重新跑一遍,先看 VOL 的量级是否与之前接近,量级变了就是口径变了,不是公式写错了。

现象或提示 含义 处理
区间量与均量的数值都比预期大出一截 数据源给的是股数,公式按股累计 按 1 手等于 100 股折算,或统一换到同源数据
比值看起来正常,量值对不上 分母与分子同源,量纲在比值里抵消了 比值可以直接用,量值展示时补上单位
换了数据源之后数值量级突变 两个来源的成交量口径不同 先看 VOL 的量级,再决定是否重设参数
停牌前后的累计值出现台阶 累加按根数推进,跳过了无数据的时段 要在意自然时间口径,就单列一段把停牌段标出来

四、周期换算:30 分钟一根与日线一根不是同一量纲

成交量随周期切分。一天的量大致等于这一天各根分钟 K 的量之和,但单根 30 分钟 K 的量与单根日 K 的量不在同一量纲上。把日线上的区间量与 30 分钟图上的区间量放在一起比大小,等于拿一段时间与另一段不同长度的时间比,相差的倍数由根数与周期的比值决定。

要在两个周期之间比较量能,先把其中一个折算成同口径:把 30 分钟的区间量按每天的根数折成日口径,或者把两个周期各自算出的量都转成占自身均量的倍数,只在比值层面比较。前一种保留了量值,后一种更适合跨周期看形态。

折算时要用到每天有多少根 30 分钟 K 这个数。它由交易时段长度决定,遇到半日交易或临时调整时段的安排,这个数会变化,折算式要跟着改,不然折算出来的量会带一个偏差。

五、与均量对比的写法

单看区间量看不出多少东西,把它和自身的均量放一起才有参照。写法有两种:拿当前这一根的量除以近若干根的均量,或者拿这一段的累计量除以这一段自身的规模量。

两种对比写法:

  单根对均量 := VOL / MA(VOL, N);

  区间量 := SUM(VOL, N);
  区间内规模 := MA(VOL, N) * N;
  区间对均量 := 区间量 / 区间内规模;

分母为零的防护:

  安全分母 := IF(MA(VOL, N) > 0, MA(VOL, N), 1);

两种写法的分母含义不同。单根除以均量,比的是当前这一根与近若干根的均值;区间累计除以规模量,比的是这一段与这一段自身的规模。要表达这一段比平时放大了多少,用后一种;要表达这一根是否偏离常态,用前一种。两者混用会得到方向相反的理解,写上注释区分开。

分母取不到有效值的情形要防一手。停牌或缺根会让均量在个别位置算不出有效结果,除以它得到的值在图上表现为断点或异常大的数。用 IF 把分母兜住,或者在画线时加判断跳过这些位置。

六、跨停牌、数据长度不足时的表现与验证方法

停牌造成的是时间上的跳空,根数上是连续的。累加照常把停牌前后的根加在一起,得到的是这部分交易时间里的量。要在意自然时间口径,就先用 BARSLAST 一类函数确认相邻两根之间的间隔,或者在公式之外把停牌段单独标记,汇总时把它们分开看。

数据长度不足的表现是前段留白:参数取的根数超过该品种在该周期上可加载的历史根数时,前面的若干根算不出值。把 K 线向左拉到尽头看留白在哪一根结束,就能判断是参数取大了还是数据太少,两者的处理方向不同。

验证按三步。第一步在公式管理器里点「测试公式」做语法检查,这一步不校验口径。第二步把公式挂到副图,选一段包含停牌与刚上市段落的行情,看留白与跳空落在哪里,与你的窗口设定是否一致。第三步换到另一个周期用同一组参数再算一遍,比较两处输出的量级与比值是否与折算关系对得上。公式文件与本地数据在安装目录的 T0002 下,区块文件在 T0002\blocknew,公式备份在 T0002\gs_bak,改版之前把这几处一并留档。

一句判断收尾:区间成交量的差别多半不在函数,而在窗口、单位、周期这三处口径;口径对齐之后,通达信公式区间成交量算出来的数才有可比较的意义。

本文只作技术研究口径,不涉及也不构成对任何标的的判断。

站内还有 指标原理与参数 的其他条目,公式编写教程 里讲函数与表达式怎么组织,回测验证与风险控制 里讲口径与样本怎么定,可对照查看。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。