通达信财务函数用法要处理的是一件取数的事:公式把财务数据表里的某一列按序号读进来,交给后续算式使用。它不替你判断一家公司经营得如何,也不产生任何动作。把「按序号取字段」这一层弄清楚之后,剩下要确认的三件事是:取到的是哪一期、返回的是数值还是文字、字段为空时公式拿到什么。

本文以通达信金融终端个人版与公式管理器里的函数说明为准。不同版本对财务字段的序号排列、函数名的支持范围可能有差异,遇到对不上的地方,以你所用客户端的函数说明和版本更新记录为准。

一、财务字段是按序号取的

财务类函数不按字段名取数,写法是一个函数名加一个序号参数。序号表把每股收益、每股净资产、净利润、流通股本、总股本这类字段排成一列,参数填到几,就取到哪一列最近一期的值。

{ 财务字段按序号取,写法形如 }

  FINANCE(1)     取序号表里第 1 项字段
  FINANCE(30)    取序号表里第 30 项字段
  FINANCE(33)    取序号表里第 33 项字段

{ 序号与字段名的对应关系,见公式管理器里的函数说明 }

序号与字段名的对应关系不在公式正文里,而在公式管理器的函数说明里查。这一处决定了财务字段没法靠记忆写:同一个序号在不同版本里指向的字段可能不同,把一份写好的公式搬到另一个版本上,先核对序号表,再看结果。

还有一层是量纲。净利润、总股本这些字段各自带着单位,把两个原始字段相除,得到的是你自己口径下的比值;直接取现成的比值字段,省掉一步计算。取原始字段的好处是能在公式里按自己的口径再算一遍,代价是量纲要自己对上,除错了不会报错,只会得到一个数值上说得通、含义上不对的结果。

把两个原始字段相除这类写法,参与运算的序号要成对确认。分子取净利润、分母取总股本,两处序号各自核对一次;只确认其中一个,另一个序号指向别的字段时,比值的量纲看着也对,问题不会在语法检查里暴露出来。审阅公式时先把参与运算的每个序号列成一行,逐个对照函数说明,是能把这类问题提前挡住的做法。

二、报告期决定你拿到的是哪一期数

财务数据按报告期更新,季报、半年报、年报各自对应一个截止日。公式取到的不是此刻的经营数据,而是最近一个已披露报告期的那一期值。带来的结果是:同一根 K 线上,取到的字段在报告期披露前后会跳变一次,其他时间保持不变。

这条性质对条件写法有影响。拿每股收益做一个大于比较,条件在两次披露之间不会变,图上表现为条件在一段平的区域里保持同一种状态;如果比较阈值会随季节波动,结果就跟着报告期一起跳。还有一处时序需要留意:本地库里的字段值在披露之后才更新,早于披露时点取到的仍是上一期。

处理办法是把报告期口径写进公式注释,说明这条线取的是哪一期字段,再决定它是否适合进入条件。跨年比较时,同比与环比对应的是不同的字段排列,混用会让条件在报告期切换的时点前后不可比。

三、板块类函数返回的是字符串

通达信财务函数用法里,板块类函数是一处容易混淆的地方:它取回来的不是数字,而是一段板块名称。行业、概念、地域三类各有一个函数,返回的分别是所属行业名、概念名、地域名。

HYBLOCK 返回行业板块名,GNBLOCK 返回概念板块名,DYBLOCK 返回地域板块名。它们是文字,不能参与加减乘除,只能做两种用途:与一个板块名做等于比较,判断归属;或者把名称直接画在副图上,核对一批品种挂在哪些板块下。

{ 板块类函数返回文字,比较用等于 }

  行业: HYBLOCK = '半导体';
  概念: GNBLOCK = '芯片';

{ 返回值是文字,不要参与算术运算 }

写成等于比较时,右侧的板块名要与软件里的名称逐字一致。名称里多一个空格或换一个简称,条件就不成立。想确认软件里用的确切名称,做法是把函数返回值挂到副图上看一遍,照着输出抄。

四、把字段写进条件时容易踩的地方

把财务字段写进条件,是通达信财务函数用法里需要单独留一段的部分。字段取不到值的时候,公式得到的可能是一个缺省值而不是报错,条件会按照这个缺省值继续算下去。

缺失与空值是两种情形:一种是有这个字段但本地库里没有值,另一种是这个品种本来就没有该报告期的数据。两者在公式里都可能落成 0 或空,处理方式却不一样,把两者当成一种,条件会多筛掉一批品种。

现象或提示 含义 处理
副图上字段值长时间不动,某一天跳一次 报告期披露更新了本地财务库里的值 把报告期口径写进注释,比较阈值按同一口径设
某个序号取到的值与预期字段对不上 该版本的序号排列与写公式时的版本不同 在公式管理器的函数说明里重查序号,替换成确认过的值
条件筛出的品种比预期少一批 字段为空,算式中按缺省值继续计算 先用判断挡掉空值,再进入主算式
板块名做等于比较不成立 名称与软件里的写法不一致 把函数返回值挂副图,照输出逐字抄写

新股上市初期是另一种情况:上市时间短,最早几个报告期的字段还没有入库,取到的是空值。对这类品种写条件之前,先用一个判断把空值挡在外面,再进入主算式,条件在不同上市时长的品种上才落到同一口径。

把「序号 → 字段名 → 报告期」写成一行注释,放在公式开头,比留在脑子里可靠。换版本、换公式文件之后,第一件事是照着注释把序号再对一遍。

五、怎么验证取到的对不对

验证通达信财务函数用法取到的值,分两步走。第一步在公式管理器里选中公式,点「测试公式」,这一步检查函数名与语法,能过代表写得出,不代表逻辑对。第二步把只输出一个财务字段的算式挂到副图,把 K 线拉到一段区间,看输出是不是只在报告期披露的位置跳变。

想确认某个序号指向哪个字段,做法是把该字段单独挂一条线,打开 F10 的财务数据页面逐项对照。量纲对齐之后,序号指向就确认了。这一步做完再回到原公式,把序号替换成确认过的值。

公式文件与本地数据放在安装目录的 T0002 下。改版之前把 T0002\PriGS.dat 与 T0002\gs_bak 各留一份,导出的公式文件是 tn6 或 tne,方便回到改动前的状态。

六、下一步:把取数口径留在公式里

取数本身不难,难的是过一段时间之后还能说清一条线取的是哪个字段、哪一期。给每个财务字段配一行注释,写明字段名、序号、报告期口径、缺失时的处理,是成本较低的一步。

更具体一点的动作有三个:把用到的序号在函数说明里查一遍并记下字段名;把板块名做等于比较的地方,名称照副图输出抄写;把公式文件与 T0002\PriGS.dat 在每次改动前留一份备份。三件事做完,公式从「能跑」变成「能对」。

如果同一套取数要用在多个公式里,把共用的字段抽成一段单独的中间变量,只在一处维护序号,改动时才不会漏掉某一个公式。这一层整理与工具无关,换成别的写法也一样成立。

通达信财务函数用法覆盖的范围止于取数与比较:把字段读进来、把文字做匹配、把空值挡在算式之外。超出这个范围的问题,例如某个字段代表什么经营含义,公式本身回答不了,需要回到数据来源去看。

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

站内还有 公式编写教程 里讲表达式与函数的写法,指标原理与参数 里讲参数的代表含义,复盘方法与数据工具 里讲取数记录怎么落表,可对照查看。

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