升级之后公式找不到,先别急着重装。通达信升级公式失效这件事,多数不是公式本身坏了,而是新版本读的目录、认的库文件或者支持的函数集合发生了变化。重装会把这些线索一起清掉,排查反而更难。
下面按「先分清样子、再逐项核对」的顺序展开。文中的目录名与文件名以通达信金融终端个人版为准,券商定制版的安装结构可能有差异。全文只讨论文件位置与函数可用性,不涉及任何标的的判断。
一、失效的三种样子要先分开
「公式不能用了」是一句笼统的描述。把它分成三种可见的样子,成因就分开了一半。
| 样子 | 在哪儿看到 | 指向 |
|---|---|---|
| 公式管理器列表里整批不见了 | 按 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 目录复制一份到别处,后续操作都是可逆的。这一步的成本很低,但能避免在文件替换过程中把仅存的一份清单覆盖掉。
五、按顺序走的检查清单
把上面的内容收成一条顺序。每一项都能得到一个明确的观察结果,不存在需要靠猜的环节。
- 先分类:列表为空、条目为空、还是编译不通过。三类对不同的处理路径。
- 确认新版实际读取的用户数据目录,找到对应的
T0002路径。 - 在该目录下确认
PriGS.dat存在,并在gs_bak里找同期的备份。 - 查看
PriGS.dat的修改时间,判断新版读的是不是这一份。 - 需要迁移时,先整体复制一份
T0002作为备份,再做文件替换。 - 重启软件,打开公式管理器,确认列表恢复。
- 逐条点开恢复出来的公式,点「测试公式」。报错的按第三部分核对函数。
- 回到行情界面,确认公式能挂载到图上并画出结果。至此才算真的恢复。
六、升级之前可以先做的准备
把这件事前置一步,成本比事后排查低得多。通达信升级公式失效的问题,如果在升级之前先做下面四个动作,事后多半不会出现。
- 整体备份
T0002。不是只复制PriGS.dat,而是把整个用户目录打包留档。公式之外,自选清单与一些设置也在其中。 - 导出一份公式组。在公式管理器里把自定义公式导出成一个公式组文件,另存到别处。它是与二进制库文件无关的第二份副本。
- 记下当前版本号。在软件的「关于」里可以看到版本号,连同升级日期一起记下来,事后核对更新记录时能对上。
- 确认新版的安装路径。安装时留意是否装到了与旧版相同的路径,这一个选择决定了升级之后要不要做文件迁移。
这套准备做完,即使升级后公式真的没跟过来,也能在几分钟内恢复,而不必去回忆当初写过什么。
本文只讨论文件位置、目录结构与函数可用性,不涉及具体标的的判断,也不构成对任何公式效果的承诺。站内还有 公式报错与卡顿排查 里讲其它故障的对照条目、公式安装与导入 里讲安装路径与文件格式的条目、公式编写教程 里讲函数与语句结构的条目,可对照查看。
