把通达信公式tne、tn6、exp 当成同一个东西的三种叫法,是安装环节里最容易走偏的一步。它们不是同一份东西换了个后缀,而是从不同导出入口产生、装进软件后落点也不一样的几类文件。把分工理清,导入对话框里那一堆选项才不会选错。
本文只讲包格式在链路里的位置:装进哪一层、升级后旧包为什么会失效、换机器之后怎么确认装进去的东西还在。菜单名在不同版本之间会有出入,以你所用客户端实际显示为准。
一、三类文件的分工
按常见的导出入口看,三者的用途是按导出对象划分的:tn6 面向公式包,tne 面向单条公式,exp 面向预警条件。这个分工决定了它们的内部结构与导入后落到公式树的哪一层。
| 扩展名 | 导出对象 | 内容结构 | 导入落点 |
|---|---|---|---|
| tn6 | 公式包 | 可含多组公式,带分组结构,导出时把选中的一套打成一个文件 | 落在导入时选定的分支下,条数与分组一并还原 |
| tne | 单条公式 | 一条公式的整体,含公式名、参数表与源码数据 | 落在导入时选定的分支下,只增加一条条目 |
| exp | 预警条件 | 预警相关的条件设定,与公式条目不是同一类对象 | 落在预警设置相关的入口,不进公式树 |
拿到一个文件之后,先看扩展名判断它是哪一类,再决定点哪个导入入口。把 tne 放进识别公式包的通道里,界面可能还是提示成功,但公式列表里什么都不会多出来。以本机「导入公式」对话框里实际接受的文件类型为准。
通达信公式tne 属于单条搬运这一类。需要一次带一批公式时用 tn6,需要在两台机器之间挪一条时用 tne。两者在导出对话框里可以切换,切换之后文件名后缀跟着变,这是界面给的提示,不是两套互相独立的流程。
二、tne 的导入落点
把 tne 装进去,落点在软件安装目录下的数据段,也就是 T0002 那一层下面的公式相关子目录。公式条目本身写进公式数据文件,导出时生成的 tne 只是这份数据的副本。删掉 tne 不影响已经导入的公式;反过来只把 tne 拷到新机器上而不走导入,新机器的公式树里不会多出条目。
安装目录 / T0002 { 数据段,公式与相关数据都在这一层下 }
T0002 / 公式相关子目录 { 公式条目与分组结构的存放位置,目录名以本机为准 }
T0002 / 公式数据文件 { 公式条目的载体,二进制,不直接编辑 }
任意目录 / *.tne { 导出产生的副本,导入时手动指定路径 }
导入路径是:公式管理器 → 导入公式 → 在文件对话框里选目标文件 → 确认导入。对话框的过滤下拉里可以选择文件类型,这一项与文件后缀要对应。下拉停在 tn6 上时,目录里躺着的 tne 不会显示出来。
对话框里另一处要确认的是公式类型下拉:指标公式、条件选股公式、五彩K线、交易系统。它决定新条目挂到公式树的哪一条分支下。类型选错不会导致导入失败,条目照样进去,只是出现在另一条分支下面。通达信公式tne 走的是这一条下拉,附件类的文件不走这里。
三、升级之后旧包失效的成因
软件升级之后回头看旧文件,会发现当初能装进去的包现在装不动了。这类问题不来自文件损坏,来自两处对不上的地方,而它们给出的报错分属两类。
第一处是格式版本。tne 这类导出文件在生成时会带上生成它的那一版软件的格式信息,导入时软件比对这个版本。生成包的版本比当前版本低出太多,或包的格式在当前版本里已不被接受,软件会拒绝解析,给出格式类报错。第二处是口令。导出时设过口令的包,导入时要填入与导出时一致的口令,填错或没填给出的是口令类报错。这两类的处理路径不一样,看到提示先区分它说的是格式还是口令。
还有一层容易混进来:格式类报错和公式依赖的函数在当前版本不受支持,提示不放在一起。前者在导入环节就拦住,后者能导入、能出现在列表里,要到编辑界面点测试才会提示某个名称未定义。判断顺序是按提示落在哪一步:导入对话框里弹出来的查包与版本,编辑界面点测试才弹出来的查公式里用到的函数名。
报错原文的措辞在不同版本之间并不统一,同一类问题可能写成「文件版本不匹配」,也可能写成「文件格式错误」。判断依据是提示出现的环节,不是提示里的那串字。核对时按本机实际弹出的话术抄下来,不要照搬别处的截图。
四、跨机迁移的两条路
把一台机器上装好的公式搬到另一台,有两条路。一条是搬公式目录,把 T0002 下的公式相关子目录整段复制到目标机器的对应位置;另一条是逐个导入,在源机器上把公式导出成 tne 或 tn6,再到目标机器上走导入流程。
搬目录这条路的前提是两台机器的软件版本相近。格式版本接近时,复制过去的公式数据能被目标机器直接读出,公式树在启动后即可见。两台机器版本差得远时,目录搬过去可能读不出,或被软件在启动时按新版本结构重新组织,原有条目随之中断。这条路动作少,但可控性压在这一个条件上。
逐个导入这条路的前提是包能在目标版本上被接受,也就是上一节里的两处对不上都不成立。路径长一些,但每一步都有可见结果:导一条、看一眼列表,出问题能定位到具体是哪一条。跨版本迁移的动作是重新导出,让新包带上目标版本的格式信息。
两条路混用会带来一个麻烦:先搬了目录,再导入同一条公式,公式树上会出现两条同名条目,之后要逐条对照修改时间才能分清哪一条是哪一次搬进来的。
五、迁移与导入之后的验证
这一步用来区分「导入成功」与「真的能用」。导入对话框给的提示只说明文件被读了进去,不说明里面的公式在当前版本上能被编译。两步验证能把这个差别暴露出来。
第一步在公式管理器里点测试公式。选中刚装进来的那一条,进编辑界面点测试,看是否编译通过。这一步确认的是函数名、参数个数与语法都在当前版本的支持范围内。提示里出现未定义的名称时,那个名称就是待查项,按本机公式编辑器的函数列表核对写法。
第二步把它挂到副图,看输出线条数。这一步确认公式的输出定义有没有在搬运过程中走样,也能看出参数表里的参数值是不是跟着过来了。下面这段可以编译:
{ 导入后挂副图验证:确认两条输出线都在 }
M5:MA(C,5);
M10:MA(C,10);
两条线是这条公式的全部输出。挂到副图之后线条数不是两条,或者其中一条全程没有值,就回到公式编辑界面看那一行有没有被改动。这个片段只用来核对输出结构。
验证通过后再看一眼参数表。带参数导出的公式,导入之后参数名与默认值应当与导出前一致;参数被清空的公式能编译、能输出,但输出的是固定取值。这一步在编辑界面里能直接看到。
六、三类现象的失败对照表
把上面几节里的检查点收在一张表里。三类现象各有各的位置,按现象对到栏位,先查那一栏。
| 现象 | 先查哪一处 | 据什么判断 |
|---|---|---|
| 导入提示成功,但公式列表里没有 | 导入对话框的公式类型下拉 | 公式类型选的是指标公式还是条件选股公式。选错类别时条目进了另一条分支,逐条分支展开查看 |
| 打开对话框看不到文件 | 文件类型过滤下拉与文件后缀 | 下拉停在 tn6 上时不会列出 tne。下拉改到与后缀一致,再回来看目录 |
| 导入时弹出格式类报错 | 包的格式版本与当前软件版本 | 包由比当前版本低出较多的软件生成。路径是重新导出,不是反复重试 |
三类现象之外还有一种:公式在列表里、测试也通过,但挂到副图之后没有输出。这一处不在导入环节上,属于公式自身的输出定义,回到第五节的两步验证里对着输出行看即可。通达信公式tne 走到这里,装的对象、落点与验证三件事就串成了一条线。
本文只作技术研究口径,不涉及也不构成对任何标的的判断。
站内还有 通达信公式安装与导入、通达信公式跨平台转换、通达信公式报错与卡顿排查 三处条目,安装路径、跨平台搬运与报错原文三块都可以对照查看。
