升级之后公式找不到,先别急着重装。通达信升级公式失效这件事,多数不是公式本身坏了,而是新版本读的目录、认的库文件或者支持的函数集合发生了变化。重装会把这些线索一起清掉,排查反而更难。

下面按「先分清样子、再逐项核对」的顺序展开。文中的目录名与文件名以通达信金融终端个人版为准,券商定制版的安装结构可能有差异。全文只讨论文件位置与函数可用性,不涉及任何标的的判断。

一、失效的三种样子要先分开

「公式不能用了」是一句笼统的描述。把它分成三种可见的样子,成因就分开了一半。

样子 在哪儿看到 指向
公式管理器列表里整批不见了 按 Ctrl+F 打开公式管理器,展开分支是空的 库文件没被读到,或旧库未被新版本接管
名字还在,点开是空的 列表里有条目,正文框里没有内容 库文件被读到一半,正文部分缺失
正文在,但测试公式报错 点「测试公式」时下方出现红字提示 函数不可用或语法不再被支持

三种样子的处理路径不同。第一种要动文件,第二种要核对库的完整度,第三种要核对函数。先分类再动手,能少做无用功。

分类的时候顺手记下两件事:出现问题的公式是全部还是部分,以及是升级当天出现还是过了一段时间才出现。全部消失指向目录与库文件,部分消失指向个别公式的正文,隔一段时间才出现则要想想中间有没有做过数据清理或者杀毒扫描。

二、公式库文件与安装目录

通达信的自定义公式不是存放在程序安装目录下,而是存放在用户数据目录 T0002 里。这个目录下与公式相关的主要有两个位置:一个是记录公式清单与属性的文件 PriGS.dat,另一个是备份目录 gs_bak。

升级时的处理方式有两种,结果不一样:

  • 覆盖安装在同一路径。新版本接管原来的 T0002,公式清单与正文应当延续。如果没有延续,先在 gs_bak 里找上一份备份。
  • 装到了另一个路径。新版本会生成一份全新的空白 T0002,而旧公式还留在旧路径的 T0002 里。此时表现就是列表整批为空,但旧数据并没有丢。
先确认新版读的是哪个 T0002。找到程序里显示的数据目录设置,或者直接在新版里新建一份公式,保存后用文件搜索找到它落到哪个磁盘路径,就能反推出新版的用户目录位置。

定位到目录之后,看一眼 PriGS.dat 的文件修改时间。时间停在升级之前,说明新版本读的不是这一份;时间就在刚才,说明读的是这一份,问题出在别的环节。

三、函数可用性的核对

通达信升级公式失效的第三种样子,是正文在、编译不过。这类差异来自函数集合的变化:新版本加入新函数,也可能调整或停用原有的函数。官方更新记录会逐版写明新增了哪些函数、修正了哪些函数的行为,这是核对时可以直接查阅的一手材料。

{ 一段能在旧版通过、在新版需要核对的写法示例 }
{ 关键在用到的函数是否仍在新版函数列表中 }
A:=MA(C,N);
B:=REF(A,M);
差:A-B;

{ 若用到的是版本变动中调整过的函数,改法是替换为等价写法 }
替代:REF(MA(C,N),M)-MA(C,N);

核对的落点是把正文里用到的函数名逐个查一遍函数列表。函数列表在公式编辑窗口里可以调出,每一项都带简短说明;查不到名字的,就是需要改写的部分。改写之后再走一遍「测试公式」,编译通过说明语法层面已经对上。

还有一种情况容易被忽略:函数名字查得到,但参数的个数或含义变了。这类差异不会在编译阶段报错,只会在结果上偏离。核对的方法是把改动过的语句单独拎出来,用一段只含这一句的公式测一遍取值。

核对函数时不要只看「有没有报错」。编译通过是一个必要条件,不是充分条件。参数含义变化这类差异,只有在比对取值时才会显现。

四、多版本并存时的目录指向

机器上装了两个版本时,通达信升级公式失效的现象会更复杂一些,因为两个版本各有各的 T0002,各自记着自己那份公式清单。

情况 表现 处理方向
新版装了新目录 新版列表为空,旧版一切正常 把旧 T0002 下的公式相关文件复制到新目录
两版共用一个目录 在一版里的改动,另一版也看得到 确认两版对文件格式的读写是否一致
升级后又回退旧版 旧版读到新版写过的库文件,列表异常 从 gs_bak 恢复升级前的备份

动手之前先做备份。把整个 T0002 目录复制一份到别处,后续操作都是可逆的。这一步的成本很低,但能避免在文件替换过程中把仅存的一份清单覆盖掉。

公式清单文件是二进制形式,不要用文本编辑器打开后保存。文本编辑器会在保存时改写编码与换行,原本能读的库文件会变成不可读。核对内容请用软件自带的公式管理器。

五、按顺序走的检查清单

把上面的内容收成一条顺序。每一项都能得到一个明确的观察结果,不存在需要靠猜的环节。

  1. 先分类:列表为空、条目为空、还是编译不通过。三类对不同的处理路径。
  2. 确认新版实际读取的用户数据目录,找到对应的 T0002 路径。
  3. 在该目录下确认 PriGS.dat 存在,并在 gs_bak 里找同期的备份。
  4. 查看 PriGS.dat 的修改时间,判断新版读的是不是这一份。
  5. 需要迁移时,先整体复制一份 T0002 作为备份,再做文件替换。
  6. 重启软件,打开公式管理器,确认列表恢复。
  7. 逐条点开恢复出来的公式,点「测试公式」。报错的按第三部分核对函数。
  8. 回到行情界面,确认公式能挂载到图上并画出结果。至此才算真的恢复。

六、升级之前可以先做的准备

把这件事前置一步,成本比事后排查低得多。通达信升级公式失效的问题,如果在升级之前先做下面四个动作,事后多半不会出现。

  • 整体备份 T0002。不是只复制 PriGS.dat,而是把整个用户目录打包留档。公式之外,自选清单与一些设置也在其中。
  • 导出一份公式组。在公式管理器里把自定义公式导出成一个公式组文件,另存到别处。它是与二进制库文件无关的第二份副本。
  • 记下当前版本号。在软件的「关于」里可以看到版本号,连同升级日期一起记下来,事后核对更新记录时能对上。
  • 确认新版的安装路径。安装时留意是否装到了与旧版相同的路径,这一个选择决定了升级之后要不要做文件迁移。

这套准备做完,即使升级后公式真的没跟过来,也能在几分钟内恢复,而不必去回忆当初写过什么。

本文只讨论文件位置、目录结构与函数可用性,不涉及具体标的的判断,也不构成对任何公式效果的承诺。站内还有 公式报错与卡顿排查 里讲其它故障的对照条目、公式安装与导入 里讲安装路径与文件格式的条目、公式编写教程 里讲函数与语句结构的条目,可对照查看。

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