通达信公式导入同名覆盖的处理顺序,取决于「同名」这个词落在哪一层。名称、类型、分组三个要素里任何一个不同,导入动作就不会顶掉原有内容。把判定讲清楚之后,覆盖前怎么留底、覆盖后怎么取回,都是可以按步骤走的。
下面按导入时的确认动作、同名判定的三个要素、三种同名情形、覆盖前的留底方式、取回路径与最后一遍核对来写。文中的目录名与文件名以通达信 PC 版的常见结构描述,不同版本与券商定制版对公式数据的组织方式存在差异,请以你所用客户端实际目录为准。
一、按下确认之前,客户端在比对什么
导入一份公式文件时,客户端先把文件里的公式记录读出来,逐条与本地已有记录比对。比对的对象是公式名称与它所属的类型分支,两者都相同才算冲突,这时才弹出是否覆盖的询问。只名称相同而类型分支不同,客户端按两条不同的公式分别建立。
这一层机制解释了两个现象。一是同一个名字在指标类与条件选股类下可以同时存在,图上能看到曲线,筛选时也能用同一名字的算式。二是导入提示里出现覆盖询问时,说明文件里带的名称与本地某一条完全一致,此时按「否」不会中断整份文件的导入,其余的公式照常写入。
需要留意的是提示的层数。整份文件可能先问一次是否继续导入,每条冲突再各问一次。前一个问题针对文件,后一个问题针对单条记录。看清问的是哪一个,能避免把文件级的确认当成记录级的确认。
二、同名判定看三个要素
通达信公式导入同名覆盖的判定不看算式内容,只看名称与归属。算式写得一模一样但名称不同,两条记录会并存;名称相同而算式不同,才轮到覆盖询问。三个要素的作用如下。
| 要素 | 取值来自哪里 | 对导入的影响 |
|---|---|---|
| 公式名称 | 导出文件里记录的公式名 | 与其他要素共同决定是否触发覆盖询问 |
| 公式类型 | 导出时记录的类型分支,如指标、条件选股、交易系统 | 类型不同即视为两条记录,不冲突 |
| 所属分组 | 本地管理器里的分组文件夹 | 分组属于本地组织方式,一般不随文件走 |
第三行的结论值得单独说一句。分组是你在自己机器上给公式排的位置,导入时客户端要先决定把这条记录放进哪个分组。文件里记录的分组名在本机不存在时,记录仍然会写入,只是落到默认位置。这也解释了「导入成功却找不到」这类现象:记录已经写入,只是没有出现在你习惯打开的那个分组里。
三、三种同名情形与各自的结果
把上面的判定套到实际操作中,会遇到三种情形,处理动作互不相同。
第一种是名称与类型都相同,算式不同。这是覆盖询问真正要处理的场景。选覆盖,本地原记录被新算式替换;选不覆盖,本地原记录保留,文件里的这一条被跳过。
第二种是名称相同,类型不同。导入不触发询问,两条记录分别落在各自的类型下。此时管理器的不同分支里会出现同名条目,看名字分不清哪一个,需要靠分组或备注区分。
第三种是文件里的名称带上了批次后缀或日期,例如在原名后面加了数字。名称不同即不冲突,导入之后本地会多出一条几乎重复的公式,两条的内容可能只差一个参数。这类重复不会报错,清理时只能靠人工比对算式。
四、覆盖之前留一份底
通达信公式导入同名覆盖一旦选错,代价是本地的算式被替换掉。自编公式的数据文件位于客户端安装目录下的 T0002 文件夹,自编公式的数据集中在其中的 PriGS.dat 这类数据文件里;同目录下的 gs_bak 是客户端自己维护的一份公式数据备份。
覆盖前留底有三个可选的层级,成本从低到高。
- 单条留底:在公式管理器里选中要被动到的那一条,用导出功能生成一份导出文件,落在一个独立文件夹里。适合只导入一两条、且已经知道哪一条会被顶掉的情况。
- 整目录留底:关闭客户端,把
T0002文件夹整体复制一份,文件名里带上日期。适合批量导入、或者不确定会顶到哪几条的情况。 - 借助自带备份:先确认
gs_bak里的内容是不是覆盖前的状态。它是客户端按自己的节奏生成的,与你当前要进行的操作未必紧邻,因此只能作为兜底,不作为主要留底手段。
复制目录这一步要在客户端退出之后做。客户端运行期间公式数据文件处于占用状态,复制出来的副本可能是不完整的。判断副本是否可用的方法很简单:看文件大小是否为零,以及复制过程中有没有出现被跳过的提示。
五、覆盖之后怎么取回
已经覆盖了,能不能取回取决于留底做到了哪一层。
有单条导出文件的,直接在公式管理器里把那份文件重新导入一次,选择覆盖,原来的算式就回来了。这是最直接的一条路径,前提是导出文件是在覆盖之前生成的。
有整目录副本的,退出客户端,把副本里的数据文件复制回 T0002 覆盖现有文件,再启动客户端。这样会把覆盖之后新导入的内容一起回退掉,所以复制前建议先把当前状态再另存一份。
两种留底都没有,就只能看 gs_bak。若其中的备份时间早于覆盖动作,恢复后回到的是那个时间点的状态,覆盖前后新增的改动都不在。如果 gs_bak 的时间晚于覆盖,恢复动作不会把丢失的算式找回来。
六、按顺序走一遍
把通达信公式导入同名覆盖这件事固定成一套动作,可以减少事后取证。
- 确认要导入的文件里包含几条公式、各自叫什么名字。用文本编辑器打开看一遍比导入后逐个对照省事。
- 在公式管理器里按名称搜一遍,看本机有没有同名记录,以及它们分别在哪个类型下。
- 只对确实冲突的记录做单条导出留底;冲突范围不确定时改做整目录复制,复制前先退出客户端。
- 导入时逐条看清询问针对的是文件还是单条记录,冲突记录按实际需要选择是否覆盖。
- 导入完成后,按名称再搜一遍,确认条目数量与预期一致,没有多出带后缀的重复项。
最后一步还可以加一个验证动作:给被动过的公式挂到图上或放进条件选股跑一次,看输出的数值与算式是否与预期相符。数量对得上只说明记录写进去了,数值对得上才说明写进去的是正确的那一条。
导入与安装相关的其他环节,例如目录该放哪里、文件后缀各自代表什么,见 通达信公式安装与导入 一栏;导入之后出现异常提示的排查顺序,见 报错与卡顿排查 一栏;把公式交给别人时该怎么导出与说明,见 跨平台对比与公式转换 一栏。
还有一类公式不适用这套留底逻辑:只存在于云端账号里的公式。它们的记录在账号侧,本地 T0002 目录里没有对应的数据文件,整目录复制带不走它们。这类公式在覆盖前能做的只有一件事,就是先把它导出成本地文件。云端与本地两套记录各自维护,覆盖判断发生在哪一侧,要以你导入时选中的位置为准。
如果你只记一件事,记住这个判断:问的是「要不要覆盖」,先回答的应该是「这一条覆盖掉之后我还能不能拿回来」。拿不回来就先做一次单条导出,两分钟的动作能省掉后面一整轮的重新编写。
文中目录名与文件名按通达信 PC 版的常见结构描述;不同版本与券商定制版对公式数据的组织方式、覆盖询问的出现时机与措辞存在差异,具体请以你所用客户端的实际界面与帮助文档为准。本文只讨论文件与操作层面的机制,不构成任何投资建议。
