通达信公式转东方财富没有可以一键完成的办法。两个平台各有一套公式语言,公式文件也不通用,把导出文件改成另一个后缀并不会让它被识别。实际要做的是把算式按用途读一遍,逐条在新平台上重写,再用同一段数据核对输出。工程量取决于公式的长度,而不是取决于有没有工具。

下面按不能互导的原因、需要逐条对照的三处、动手前的分类、重写顺序、数据口径差异五层讲。文中提到的两个平台各自的语法与函数说明,请以各自客户端的帮助文档为准;本文不引用未经核对的函数对照表。

一、为什么没有直接互导

公式文件里存的是算式文本与参数,它对应的是一套取数规则与一批内置函数。换一个平台,取数规则的字段命名、函数的名称与参数个数、绘图函数的行为都可能不同,同一段文本在另一套解释器里要么编译不过,要么编译通过但算出来的东西变了样。

通达信侧的自编公式以文件形式导出,文件后缀区分了明文与加密、指标与其他类型等情形,具体对应关系见 通达信公式安装与导入 一栏。这类文件在另一个平台里没有对应的解析器,所以迁移的载体只能是文本,而不是文件。

二、需要逐条对照的三处

逐条执行通达信公式转东方财富时,改动量集中在三处。这三处的顺序也决定了改稿的先后:先把结构改对,再改函数,最后改绘图。这个顺序不是偏好,而是依赖关系决定的:结构不对时,函数改对了也看不到输出。

对照项 需要确认的内容 改错后的表现
赋值与输出 哪种写法产出中间量、哪种写法产出可见输出 编译通过但图上没有输出,或者输出了一堆中间量
函数名称与参数 同名函数是否同义、参数个数与顺序是否一致 结果数值整体偏移或条件判断失效
绘图与显示 颜色、线型、标记的写法是否被支持 数值正确但画不出来或画成另一种形状

第二行是最容易出错的一处。不同平台里同名的函数未必同义,有的平台把平滑方式做成参数,有的平台把它固定在内核里。看到一个同名函数就直接沿用,结果数值会有系统性偏差,而这种偏差在图上表现为整体平移,不容易被察觉。

{ 重写时给每一行标注对照结论 }
{ 格式:原写法 / 目标平台写法 / 是否同义 }
{ 1. 赋值与输出:先确认两边的输出符号 }
{ 2. 函数:逐个确认名称、参数、平滑方式 }
{ 3. 绘图:最后处理颜色与标记 }
{ 未确认的行不要直接删,保留注释 }

三、动手之前先把公式分个类

分类的依据是公式的用途,而不是它的长度。只输出一条曲线用来观察的,迁移时重点是取数与计算口径;判断条件成立与否的,重点是条件表达式与边界符号;带绘图标记的,重点是绘图函数的对应关系。

分类之后按类集中处理,比按公式文件逐个处理更省事,这也是通达信公式转东方财富时能压缩工作量的地方。同一类里的几条公式,需要对照的函数属于同一批,一次确认完可以反复使用。

四、重写的顺序

第一步,把原公式拆成中间量与输出两部分,只保留一条最终输出,其余全部降为中间量。这样在原平台上先得到一份干净的结果,作为后面比对的基准。

第二步,在新平台上先把取数部分写通,也就是能取到同一条价格序列与同一条量能序列。这一步不涉及判断逻辑,只看输出值是否一致。

第三步,把计算部分逐行搬过去,每搬一行就在两个平台上各输出一次这一行的值,逐点比对。数值一致的行标记为已确认,不一致的留在原地。

第四步,最后处理绘图与显示。绘图不参与计算,可以放在最后统一处理,不阻塞前面的验证。

比对数值时选一段包含跳空、除权、停牌与极端波动的区间。平稳区间里两边的输出差异很小,看不出取数口径的不同;把特殊情形包含进来,差异才会暴露。

五、数据口径带来的差异

逐项核对之前,先明确这三处差异都属于口径问题,而不是语法问题。语法不对会让公式编译不过,一眼就能发现;口径不对则编译通过、输出正常,只有把两边的数值放在一起比才会显出来。这也是复核必须逐点相减、不能只靠看图形的原因。

第一处是复权方式。两个平台对复权数据的默认设置可能不同,同一段行情在一边是不复权、在另一边是前复权,画出来的曲线形状相似而数值不同,凡是涉及跨日期比较的计算都会受影响。迁移前先把两边的复权设置调成一致。

第二处是量能字段的单位。成交量有的平台按手记录,有的按股记录,相差的倍数会直接改变一切与量相关的比值。核对办法是取同一根 K 线的两个字段相除,看商是否等于 100 这一量级。

第三处是周期与数据长度。分钟级数据的可用长度在两个平台上不同,窗口长度设定得比较大时,较早的那一段在数据较短的平台上算不出值,输出序列的前段会是空值。核对时从有值的那一段开始比。

{ 迁移前的三项口径核对 }
{ 1. 复权设置:两边调成同一种 }
{ 2. 量能单位:取同一根相除看数量级 }
{ 3. 数据长度:找出两端都有值的起点 }

迁移完成后,建议把对照结论保存成一张表:原写法、目标平台写法、是否同义、确认日期、确认所用区间。这张表的价值在下一批公式迁移时会直接体现出来,不需要重新摸索一遍。跨平台语法的通用差异,见 跨平台对比与公式转换 一栏;函数的名称与参数写法,见 通达信公式编写教程 一栏。

六、迁移完成之后怎么复核

复核的目标是确认两边算的是同一件事。可行的办法是把同一段区间的输出值各导出一次,逐点相减,看差值的分布。差值恒为零,说明取数与计算都对上了;差值是一个固定的常数,说明有一处单位或基准不同;差值忽大忽小,说明有一处使用了不同的价格字段或不同的平滑方式。

差值为固定常数这一类最容易被忽略,因为它看起来「只差一点点」。常数偏差的来源集中在复权基准、量能单位或起始点位置上。找出常数偏差的办法是换一段区间再相减:如果差值不变,来源与行情无关,属于基准或单位问题;如果差值随区间变化,来源与具体数据有关。

复核通过之后,把两边的参数表也对一遍,这一步是通达信公式转东方财富能否收尾的关键。有的平台把周期做成参数,有的平台把周期写死在内核里,公式迁过去之后参数表里少了一项,看起来迁移成功,实际口径已经变了。这一处对不上,后面所有数值都会跟着偏。

七、哪些公式值得迁移

迁移的成本与公式的长度和复杂度成正比,与它的用途无关。只输出一条曲线的公式,重写加复核的工作量有限;包含多层嵌套条件与多处引用的公式,逐行核对的时间会成倍增加。动手之前先估一遍这一点,能避免开了头又中途放下。

另一项判断依据是这条公式在原平台上的使用频率。调用频繁的那几条值得认真迁,用过一两次就放下的可以只迁思路不迁细节,在新平台上按同类口径重写一条更短的。把有限的核对时间用在高频公式上,比平均分配更划算。

把通达信公式转东方财富看成一次逐条的翻译工作,预期就对了:翻译的质量取决于是否逐行核对过数值,而不取决于用了什么工具。

文中对两个平台公式体系的描述为通用层面的事实陈述;各平台对函数名称、参数个数、复权默认值与量能字段单位的定义以其官方帮助文档为准,不同版本之间的差异同样以官方说明为准。本文只讨论迁移方法,不构成任何投资建议。

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