公式管理器里点「导入公式」,选中一个文件,点确定,公式就进去了。整个过程没有一步在做校验:文件从哪来、里面是文本还是二进制、是否与已有公式重名,软件都不问。风险就产生在这一步。

通达信公式导入风险可以拆成四层,一层比一层难察:文件形态(后缀)、是否含可执行内容、源码是否可见、是否覆盖了已有公式。下面按这个顺序讲,每一层都给出可以当场做的检查动作。

一、先看后缀:同一句「导入公式」,背后是四种形态

公式文件的后缀不止一种,含义差别很大。列在下面这张表里,看后缀就能先做一次粗筛。

后缀 形态 导入后能看到什么 需要留意的点
.tn6 公式包,可含多条公式 源码与参数 包里可能有同名公式,导入即覆盖
.tne 加密导出件 只有公式与参数界面,看不到源码 无法测试、无法改参数以外的内容
.exp 文本导出件 源码,可以用文本编辑器打开 编码不对会显示成乱码
.dll 动态链接库 函数名的调用结果 二进制可执行,不属公式文本

判断方法很直接:把文件拖到记事本或者任意文本编辑器里。能读出可辨认的公式语句,说明它是文本形态;打开是一片乱码或者只有几个不可读字符,说明它是二进制。这一条动作不需要任何工具,却能把四类里的两类先分开。

文本形态不等于安全,二进制形态也不等于不能用。区别在于你能看到什么、能验证什么。看不到源码的公式,只能观察它画出来的线;看得到源码的公式,可以逐行读、可以改、可以在公式管理器里点「测试公式」看中间量。

二、.dll 与公式包不是一类东西

公式包的导入是往 T0002 目录下的公式库文件里写记录:PriGS.dat 存公式主体,PriCS.dat 存参数,PriLoc.dat 存公式名索引。这三个文件是数据,软件读它们、解释它们,不会执行它们。

.dll 是另一种东西。动态链接库由操作系统加载,代码在里面跑,行为不受公式语法约束。通达信对 DLL 的使用有自己的接口约定,供扩展函数调用;一份来历不明的 DLL 放进目录并被加载,它做的事情就超出了「画一条线」的范围。

结论很朴素:来源说不清的文件,只收文本形态的公式源码,不收二进制。反过来,如果有人只给你一个 .dll 说这是「指标加速插件」,这句话本身就不构成可以接受的说明。

还有一类常被混进公式包里的东西:说明文档里附带的批处理或者安装脚本。这类文件与公式无关,别顺手双击。

三、加密公式:看不到源码,也就没法验证

加密导出的公式,导入后可以在图上看到线,可以调参数表里已经开放的参数,但看不到源码。这一层限制带来两个具体后果。

一个是不能自查未来函数。公式里是否用了 REFX 这类向前取值、是否用了 ZIG 这类会重绘的写法,只能读源码才知道。看不到源码,图上每根 K 线都在变,也说不清是哪一行造成的。

另一个是不能核对参数含义。参数表里有一个叫「N」的项,默认 20,它到底作用在均线上还是作用在回看窗口上,源码里才写得清楚。只凭参数名去猜,调出来的结果与作者的本意可能不是一回事。

还有一层与版本相关,不属于加密本身,却常被算在同一个问题里。加密件是在某一个版本上导出的,导入到差异较大的版本上,可能出现参数名对不上、输出线少一条。这类情况不弹报错,只在图上表现为线变少了、数值量级不对。核对办法是把参数表逐项与本机输出区对照,缺哪一项就说明这一版对不上。

站内 指标资源选择与会员 里讲过源码透明度为什么被放在选购检查的第一位,那是从选择角度讲的;从导入角度讲,加密文件的可验证性缺失是同一个事实的另一面。

四、同名覆盖:最容易踩、也最容易防

同名覆盖是通达信公式导入风险里最隐蔽的一层,表现为「导入成功,原来的公式却没了」。导入时遇到同名公式,软件的做法是替换而不是并存。替换掉的是原来那份,包括它的参数设置。如果被替换的那份是你自己改过参数、调过语句的版本,改动就没了。

能防的地方有两处,都在导入之前做。

第一处是改名字。把对方给的公式在导入前先确认它的内部名称,与本机已有列表比对一遍;重名的,先把本机那份导出留档,或者给新导入的这份换个名字。公式名在公式管理器的编辑界面里可以直接改。

第二处是整体备份。公式库那几个文件在 T0002 目录下,整个目录复制一份到别处,就是一份可以直接换回去的备份。软件自身也维护了备份目录 gs_bak,需要恢复时按官方说明把对应的库文件取回来即可。

T0002\PriGS.dat      公式主体(加密存储)
T0002\PriCS.dat      参数
T0002\PriLoc.dat     公式名索引
T0002\gs_bak\        软件自带的备份目录

这四个位置记下来,遇到「导入之后原来的公式不见了」这类情况,就不必从头猜。搬回去的顺序是先把当前目录整体另存,再从备份里取回对应的文件,取回之后重启客户端。

五、导入前后的检查清单

把上面四层收成一张按顺序执行的清单,每一步都有明确的判断结果。

  1. 看后缀:.tn6、.tne、.exp 属公式文件;.dll 属可执行文件,另外对待。来源不明的二进制不导入。
  2. 看能否读源码:文本编辑器能打开,就逐行看一遍,重点找 REFX、ZIG 这类会用到未来数据或者会重绘的写法。
  3. 看是否重名:与本机公式列表比对,重名的先留档再导入,或者改掉新公式的名字。
  4. 备份 T0002:整个目录复制一份,记下复制的时间点。
  5. 导入后测试:Ctrl+F 打开公式管理器,选中刚导入的公式,点「测试公式」,输出区会逐行给出中间量;测试不通过的公式不要挂到图上。
  6. 核对输出:把公式挂到一张熟悉的票上看,输出线的量级、条数与作者描述是否一致。不一致先查周期与参数,再查是否被同名公式替换。

这六步里花时间的是第二步。语句多的公式不必逐行啃,先看三处:有没有向前取值、有没有会重绘的写法、参数是否全部提到参数表。这三处看完,基本能判断这份源码是可以拿来改的,还是只能当成一个黑箱指标挂着看。

这六步做完大概几分钟,能挡掉的是可枚举的那几类问题:形态不对、源码不可见、覆盖了原公式、导入后有语法错误。挡不掉的是公式逻辑本身是否合理,那要靠读源码与样本核对,是另一件事。

通达信公式导入风险最终落在两句话上:能读源码的先读源码,不能读源码的先备份再导入。这两条做到了,剩下的风险属于「用错了指标」而不是「装坏了软件」,性质完全不同。

延伸阅读:通达信公式安装与导入 讲导入的操作步骤与失败排查,通达信公式报错与卡顿排查 讲导入后不显示、报错的分层查法。

本文只作技术研究口径,内容讲的是文件形态、目录结构与验证方法,不涉及也不构成对任何标的的判断。

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