通达信量比公式源码的核心只有一行:把当下的每分钟平均成交量,除以过去几日同一时段的每分钟平均成交量。真正容易出错的地方不在这一行,而在分母怎么折算、数据从哪一根 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;

参数区间也要一并给出上限与下限。上下限写得过窄,取值调不到需要的位置;完全不定区间,公式在极端取值下的行为就没有被核对过。这一步在公式管理器的参数设置界面上完成,保存后在指标列表里就能看到可编辑的参数。

核对参数是否真的生效,改一次数值再刷新图表就够:把 N 从 5 改成 10,分母的变化会直接反映在输出曲线上。数值一动,说明参数表确实被引用;数值不变,多半是源码里还有一处写死的常量。

四、动态行情函数与自算取值的差别

通达信还提供了一组动态行情类函数,可以直接取到软件已经算好的量比字段,不需要自己在源码里做折算。这类函数以 DYNAINFO(序号) 的形式调用,具体哪一个序号对应量比,以你所装那版的函数说明里的列表为准,各版本之间有过调整。

两种取法适用的场景不同。自算的好处是可以在历史 K 线上回看过去每一天的量比走势,代价是要自己把折算口径写对;动态行情函数的好处是取值与软件显示一致,代价是它返回的是当前值,在历史 K 线上回看时取不到当时的数值。

如果一份通达信量比公式源码里同时用了自算与动态行情两种取法,两条输出曲线在历史段会明显分开。这不是公式错了,是两种取法的数据来源本来不同。核对时要分开看,不能拿历史段的曲线去比较两条线的水平高低。

五、盘中与盘后的取值不同是正常的

量比在交易日里是一个随时在变的数。上午刚开盘时,分子分母的分钟数都很小,比值的波动幅度会明显大于下午。收盘之后,当日的分钟数固定下来,量比才成为一个稳定的历史值。

这意味着同一根 K 线在不同时刻算出的量比可以不同。做核对时要把时间点对齐:要么都在收盘后取,要么都在盘中同一分钟取。混着取会让两条本该一致的曲线看起来不一致。

六、编译期能查出的三类问题

写通达信量比公式源码时,公式编辑器的编译按钮会先做一轮检查。提示原文的措辞在不同版本之间略有差别,但指向的问题是三类。

提示指向 常见原因 改法
函数名未定义 拼写错误,或该函数不在当前版本 到函数说明里按用途找回正确名字
参数个数不符 函数的参数比写的多或少 按函数说明补齐,注意顺序
语句结尾缺分号 上一行末尾漏了分号,编译器读到下一句才报错 看报错行的上一行

第三类最容易被误判。编译器报错的位置指向下一行,实际漏掉分号的位置在上一行末尾。看到报错行本身语法没有问题时,先往上看一行。

七、用手算样本验证折算是否写对

验证通达信量比公式源码不需要复杂工具,取一小段已知数据手算即可。找一个成交量数值已知的区间,按下表的三层顺序逐项对。

核对层 做法 通过标准
分子 单独输出 VOL,与行情列表里的成交量对照 数值一致
分母 单独输出 5 日均量,手算一遍 5 个数值的平均 数值一致
比值 把两个值相除,与公式输出对照 数值一致

三层都能对上,说明折算写对了;某一层对不上,问题就锁定在这一层,不必回头怀疑整段源码。

手算样本的区间要选在数据完整的位置。本地只下载了较短历史时,公式在图表最左端会返回空值,把空值当 0 代入会让手算结果与公式输出对不上。核对前先在图表上确认数据起点,从起点之后的位置取样。

八、嵌进副图的注意点

量比的正常取值范围大致围绕 1 上下波动,把它挂到副图上时,纵轴的范围会自动按数据缩放。若同一张副图里还画了成交量,两条曲线会因为量纲不同而互相挤压,其中一条看起来几乎是平的。分开挂载比挤在一张图上更容易读。

另一个注意点是空值的处理。数据起点附近返回空值时,曲线会断开。这属于本地数据不足的正常表现,判断办法是把图表往左拖到数据起点,看断点的位置与本地数据的起始位置是否重合。

本文只讲公式的写法、取值口径与验证方法,不涉及具体标的的判断,也不构成对任何公式效果的承诺。站内还有 公式编写与语法函数 里讲参数表与函数用法的条目、指标资源选择与会员 里讲源码信息核对的条目、公式报错与卡顿排查 里讲编译提示逐条对照的条目,可对照查看。

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