通达信量比公式源码的核心只有一行:把当下的每分钟平均成交量,除以过去几日同一时段的每分钟平均成交量。真正容易出错的地方不在这一行,而在分母怎么折算、数据从哪一根 K 线起算。
下面按源码从零到可运行的过程拆开讲:先定口径,再写最小可运行版本,再处理参数与数据起点,最后给出可手算的验证办法。文中以通达信金融终端个人版的公式编辑器与函数说明为准,券商定制版里个别菜单项的名称可能有差异。本文只讲公式的写法与取值口径,不涉及任何标的的判断。
一、量比的分母必须按分钟折算
两个成交量放在一起相除,能相除的前提是它们的时间跨度一致。当日成交量是按「已经过去的时间」累积的,历史成交量是按「一整个交易日」累积的,直接相除得到的数字会随着当天时间推进而单调变化,早盘极小、尾盘接近全天的比值。
要让比值稳定,分母要换成「每分钟平均成交量」。做法是把过去几日的每日成交量各自除以当日的总交易分钟数,再取平均;分子则是当日成交量除以当日已经过去的分钟数。两项都用分钟做单位,量比才有可比性。
| 口径 | 分子 | 分母 | 比值随时间的变化 |
|---|---|---|---|
| 不折算 | 当日累计量 | 过去几日均量 | 随时间单调升高,可比性差 |
| 折算到分钟 | 当日量 / 已过分钟 | 过去几日量 / 各日分钟数 | 在正常换手下围绕 1 附近波动 |
二、最小可运行版本
下面是通达信量比公式源码的一个最小形态,只用到了成交量和向前引用两类函数,不依赖任何外部数据。省略掉分钟折算时它仍然能编译,但输出只能当作趋势参考,不能当量比读。
{ 量比:最小可运行版本(日线周期下按日折算) }
VR1:=VOL/MA(VOL,5);
{ 显式展开的分母写法,便于逐项核对 }
V5:=(REF(VOL,1)+REF(VOL,2)+REF(VOL,3)+REF(VOL,4)+REF(VOL,5))/5;
VR2:=VOL/V5;
{ 输出两条,用来看两种写法在数据起点附近的差异 }
A:VR1;
B:VR2;
两行写法的差别在数据起点。用 MA(VOL,5) 时,公式管理器会在本地数据不足 5 根 K 线的位置返回空值;手动展开的写法在缺少足够历史时同样会缺值,但缺失的位置可以逐项对上,排查时更容易定位。
三、参数用参数表声明而不是写死
分母取几日,是一个应当外露的参数。通达信的公式管理器支持在公式上方的参数栏声明变量,声明之后的取值可以在界面上直接改,不必打开源码。把 5 写死在语句中间,使用者每次调整都要进编辑器。
{ 参数表声明:N 出现在公式上方参数栏,可界面直接修改 }
N: 5 (1, 60, 1)
M: 1 (1, 10, 1)
VR:=VOL/((REF(VOL,1)+REF(VOL,2)+REF(VOL,3)+REF(VOL,4)+REF(VOL,5))/N*M);
量比:VR;
参数区间也要一并给出上限与下限。上下限写得过窄,取值调不到需要的位置;完全不定区间,公式在极端取值下的行为就没有被核对过。这一步在公式管理器的参数设置界面上完成,保存后在指标列表里就能看到可编辑的参数。
四、动态行情函数与自算取值的差别
通达信还提供了一组动态行情类函数,可以直接取到软件已经算好的量比字段,不需要自己在源码里做折算。这类函数以 DYNAINFO(序号) 的形式调用,具体哪一个序号对应量比,以你所装那版的函数说明里的列表为准,各版本之间有过调整。
两种取法适用的场景不同。自算的好处是可以在历史 K 线上回看过去每一天的量比走势,代价是要自己把折算口径写对;动态行情函数的好处是取值与软件显示一致,代价是它返回的是当前值,在历史 K 线上回看时取不到当时的数值。
五、盘中与盘后的取值不同是正常的
量比在交易日里是一个随时在变的数。上午刚开盘时,分子分母的分钟数都很小,比值的波动幅度会明显大于下午。收盘之后,当日的分钟数固定下来,量比才成为一个稳定的历史值。
这意味着同一根 K 线在不同时刻算出的量比可以不同。做核对时要把时间点对齐:要么都在收盘后取,要么都在盘中同一分钟取。混着取会让两条本该一致的曲线看起来不一致。
六、编译期能查出的三类问题
写通达信量比公式源码时,公式编辑器的编译按钮会先做一轮检查。提示原文的措辞在不同版本之间略有差别,但指向的问题是三类。
| 提示指向 | 常见原因 | 改法 |
|---|---|---|
| 函数名未定义 | 拼写错误,或该函数不在当前版本 | 到函数说明里按用途找回正确名字 |
| 参数个数不符 | 函数的参数比写的多或少 | 按函数说明补齐,注意顺序 |
| 语句结尾缺分号 | 上一行末尾漏了分号,编译器读到下一句才报错 | 看报错行的上一行 |
第三类最容易被误判。编译器报错的位置指向下一行,实际漏掉分号的位置在上一行末尾。看到报错行本身语法没有问题时,先往上看一行。
七、用手算样本验证折算是否写对
验证通达信量比公式源码不需要复杂工具,取一小段已知数据手算即可。找一个成交量数值已知的区间,按下表的三层顺序逐项对。
| 核对层 | 做法 | 通过标准 |
|---|---|---|
| 分子 | 单独输出 VOL,与行情列表里的成交量对照 | 数值一致 |
| 分母 | 单独输出 5 日均量,手算一遍 5 个数值的平均 | 数值一致 |
| 比值 | 把两个值相除,与公式输出对照 | 数值一致 |
三层都能对上,说明折算写对了;某一层对不上,问题就锁定在这一层,不必回头怀疑整段源码。
手算样本的区间要选在数据完整的位置。本地只下载了较短历史时,公式在图表最左端会返回空值,把空值当 0 代入会让手算结果与公式输出对不上。核对前先在图表上确认数据起点,从起点之后的位置取样。
八、嵌进副图的注意点
量比的正常取值范围大致围绕 1 上下波动,把它挂到副图上时,纵轴的范围会自动按数据缩放。若同一张副图里还画了成交量,两条曲线会因为量纲不同而互相挤压,其中一条看起来几乎是平的。分开挂载比挤在一张图上更容易读。
另一个注意点是空值的处理。数据起点附近返回空值时,曲线会断开。这属于本地数据不足的正常表现,判断办法是把图表往左拖到数据起点,看断点的位置与本地数据的起始位置是否重合。
本文只讲公式的写法、取值口径与验证方法,不涉及具体标的的判断,也不构成对任何公式效果的承诺。站内还有 公式编写与语法函数 里讲参数表与函数用法的条目、指标资源选择与会员 里讲源码信息核对的条目、公式报错与卡顿排查 里讲编译提示逐条对照的条目,可对照查看。
