VOL和AMOUNT区别不只是一个叫「量」一个叫「额」。一个高频报错是这样出现的:算式编译通过、图上也画出了线,但数值与预期差了一个数量级的倍数。回头逐行核对,最后发现出在 VOL 上——写算式的人以为 VOL 是成交金额,拿它去和价格相乘。两个字段的单位、在分时图上的口径,以及和其他字段的搭配方式都不同。
| 对照项 | VOL | AMOUNT |
|---|---|---|
| 含义 | 成交量 | 成交额 |
| 单位 | 手(一百股) | 元 |
| 与价格的关系 | 不随价格量级变化 | 约等于量乘均价 |
| 日线图口径 | 当日累计成交量 | 当日累计成交额 |
| 分时图口径 | 该采样点的即时量 | 该采样点的即时额 |
VOL和AMOUNT区别理清之后,几个看似奇怪的结果都能解释。下面按单位与量纲、日线与分时的口径切换、组合写法,以及两条容易踩的边界展开。文中函数名与写法以通达信 PC 版的公式系统为准,不同版本与券商定制版在字段命名与数据精度上存在差异,请以你所用客户端帮助文档里的字段说明为准。
一、单位不同,量纲就先错了
VOL 的计量单位是手,一手等于一百股。AMOUNT 的计量单位是元。这个差别带来的直接后果是:两者的数值量级可以差到几十倍到上百倍,取决于当期的股价水平。
把这个关系写出来,是一条近似式:
AMOUNT ≈ VOL * 100 * 均价
式子里乘一百是把手换回股。这条式子只在均价平稳、成交构成单一的前提下近似成立,遇到当日价格大幅波动,或者成交集中在少数价位时,偏差会变大。它可以用来自查字段有没有取错,不适合拿来互相推算。
二、日线与分时,同一个字段含义会变
同名的 VOL 在不同周期图上的口径不同,这是第二个容易出错的地方。日线图上,每根 K 线的 VOL 是当日从开盘到收盘的累计成交量,一根对应一整天。分时图上,每根对应一个采样点,VOL 是该采样点区间内的即时成交量。
因此,把日线图上验证过的算式直接挂到分时图上,窗口参数的含义会整体偏移。日线上 SUM(VOL,5) 是最近五天的合计,分时图上则是最近五个采样点的合计,两者代表的时长差距很大。
| 周期图 | 一根代表的时间 | SUM(VOL,5) 的合计范围 |
|---|---|---|
| 日线 | 一个交易日 | 最近五个交易日 |
| 60 分钟 | 一个交易小时 | 最近五个小时 |
| 分时 | 一个采样区间 | 最近五个采样区间 |
要拿到当日截至当前的累计量,可以把窗口开到足够大或直接用全部历史累加:
{日线图上:当日的量本身已是累计值}
当日量:VOL;
{分时图上:取本日以来的累计}
分时累计:=SUM(VOL,0);
SUM(VOL,0) 里的 0 表示对全部历史求和还是对本日求和,取决于客户端对窗口参数 0 的定义,不同版本的处理有差别。写进正式算式之前,先把它挂到图上与分时图右侧显示的累计量对照一次。
三、两个字段搭配使用的三种写法
把量与额放在一起,能表达单看其中一个字段表达不了的信息。下面是三种用途不同的写法。
{写法一:均价——用额除以量还原当根的平均成交价}
每根均价:=AMOUNT/VOL/100;
{写法二:量能倍数——与近期均量比,观察相对活跃程度}
近期均量:=MA(VOL,20);
量能倍数:=VOL/近期均量;
{写法三:换手口径——需要流通股本字段配合}
换手率:=VOL*100/CAPITAL*100;
三种写法各有前提。均价那条依赖 AMOUNT 与 VOL 是同一口径的累计值,若一个取了当日累计、另一个取了即时值,商就没有意义。量能倍数那条在均量极小时会放大,除以前应当判断分母是否为零。CAPITAL 是流通股本字段,单位与 VOL 不同,换算时漏掉乘一百会让结果差两个数量级。
四、VOL和AMOUNT区别之外:两条容易踩的边界
第一条边界是停牌与无成交。成交量为零的根上,AMOUNT 同样为零,任何以它们为分母的算式都会得到无效值或异常大的值。处理方式是在算式里先做一次判断:
{除法前的分母保护}
安全量:=IF(VOL=0,1,VOL);
均价:=AMOUNT/安全量/100;
第二条边界是数据缺失。部分历史区段可能只有价格数据没有成交数据,这时两个字段都取不到值。判断方法是把图拉长到该区段,看价格曲线正常而 VOL 曲线断掉的区段,这类区段上算出来的量能指标不具备可比性。
五、量价组合算式里的三处口径对齐
把两个字段放进同一条算式时,除了单位,还要保证取数的层次一致。下面三处是三处需要对齐的地方。
第一处是时间层次。日线算式里两个字段都是当日累计值,可以直接相除得到当日均价。若把同一个算式挂到分钟图上,两者都变成了该周期的即时值,相除得到的是该周期的均价,与「当日均价」不是同一个量。需要当日口径时,应当显式用 DYNAINFO 一类函数取当日值,而不是依赖当前图的周期。
第二处是复权处理。价格类字段在复权设置变化时数值会变,量的字段不随复权设置改变。这意味着以量为分母、价格为分子的算式在切换复权设置后结果会整体平移。核对口径时,先确认图表的复权选项,再比较不同时间点算出来的结果。
第三处是数据范围。上市初期的若干根上数据可能不完整,量能类字段出现零值或异常值,任何以它为基础的比值都会失真。把算式挂到较短周期上时特别容易遇到,判断方法仍是把图拉长回看。
{当日口径取数,不受当前图周期影响}
当日额:=DYNAINFO(10);
当日量:=DYNAINFO(8);
当日均价:=IF(当日量=0,0,当日额/当日量/100);
六、验证方法
写完涉及这两个字段的算式,按下面的步骤核对一遍。
- 把 VOL 与 AMOUNT 分别临时改成输出线挂到副图,看两条曲线的量级差是否与当期价格水平相符。
- 取最后一根数据,用
量的手数乘一百乘均价手工算一次,与 AMOUNT 比对,确认没有漏乘一百。 - 在分时图与日线图上各跑一次同一段算式,观察结果差异是否与周期口径一致。
- 找到一段已知的停牌或无成交区段,确认算式在该区段上不会出现异常大的数值。
VOL和AMOUNT区别在文档里只有一行说明,落到算式上却涉及单位、周期口径与分母保护三件事。相关的字段取法与写法可以对照 通达信公式编写教程 一栏;算式能编译但结果与预期不符时的排查顺序,见 报错与卡顿排查 一栏;量能类条件在验证阶段需要注意的口径问题,见 指标回测与风险验证 一栏。
如果只想记一条:VOL 记的是股数的手数形式,AMOUNT 记的是钱数,两者之间隔着价格这一层。任何试图把它们当成同一类数据来用的算式,都会在阈值和倍数上留下偏差。
七、一份可照抄的自查表
把上面几节压缩成一张核对表,写在算式旁边随时对照。
| 算式里的这个数 | 该用哪个字段 | 漏掉这步会怎样 |
|---|---|---|
| 手数阈值 | VOL | 用 AMOUNT 会让门槛随价位浮动 |
| 金额阈值 | AMOUNT | 用 VOL 得到的是股数口径 |
| 均价 | 两者相除,记得乘一百 | 结果差两个数量级 |
| 换手比例 | VOL 与流通股本配合 | 单位不一致导致数值失真 |
| 活跃程度倍数 | VOL 与其移动平均相除 | 分母为零时出现异常值 |
这张表覆盖不了所有情形,但它把最容易出错的一步摆到了明面上:任何以量为输入、以钱为输出(或反过来)的算式,中间必须经过价格这一层。少了这一层,算式不会报错,只会安静地给出一个量级错误的数。
文中字段名与语法按通达信 PC 版公式系统的常见写法描述;不同版本与券商定制版在字段命名、数据精度与窗口参数定义上存在差异,具体请以你所用客户端帮助文档为准。本文只讨论公式语法与计算机制,不构成任何投资建议。
