通达信公式自动交易能做到的事情,到信号输出为止;从信号到成交之间那一段,公式本身不参与。这个结论先立在这里,后面的几节都在解释它为什么成立,以及在这个边界内有哪些可行的替代做法。本文以通达信金融终端个人版为准,不同版本的功能入口与措辞可能有差异。

公式负责的是条件与信号,不负责成交

先看清公式在整条链路里占的位置。公式能做的事有三类:把行情序列算成一个条件(比如收盘价站上某条均线),把条件画在图上形成信号,把条件送进预警列表等软件来提醒。这三件事都以算出一个结果为终点,结果交给人或别的程序去使用。

公式不做的事同样清楚。它不连接券商的交易通道,不生成委托,也不接管账户里的资金分配。这几件事发生在公式运行的环境之外,由另一个系统负责。通达信公式自动交易这个说法,容易让人以为公式能替人跑完从判断到成交的全程,实际能到的位置是判断侧。

把这条链路拆开看,公式的输出是一串布尔值或一组信号位置,它描述的是行情满足什么条件,而不是接下来要做什么。同一组条件可以拿来看盘、写进选股、送进预警,用途由使用者决定,公式本身不预设用途。用途这一步交出去,条件这一步留下来,边界就清楚了。

有些需求听起来像自动交易,实际落在公式这一侧的只是取数与比较。按时段筛选、按板块筛选、按财务字段筛选,都属于公式能覆盖的范围:它从本地数据里取字段,再按条件判定。把这些计算动作和成交动作分开看,能力边界就不会被拉长,讨论也更容易落在具体功能上。

把公式的职责定在算出结果这一步,还有一个附带好处:结果的正确与否可以被单独检验。给一段数据、一组参数,公式算出的条件能在图上复盘,对不上的地方能定位到某一行写法。一旦把成交动作也揽进来,检验就要跨越软件与外部系统,出错时定位的链条会变长,排查成本跟着上去。

预警与自动执行是两套系统

把「预警」和「自动执行」分开看,边界会更清楚。预警系统做的是监听:条件在盘中成立时,软件按设定的方式提醒,提醒的对象是使用软件的人。自动执行系统做的是把信号变成动作:由程序向交易通道发出委托,并跟踪委托状态。两套系统的输入可能都来自同一条公式信号,但它们的职责、运行环境和出错后果都不同。

这也解释了为什么「公式触发了但账户里没有动作」是正常现象:预警只走到提醒这一步,成交环节并没有被公式标记为自己的职责。要把提醒接成动作,需要在两套系统之间再搭一层,而这一层已经不属于公式的范围。

对比项 预警系统 自动执行系统
输入 公式算出的信号 公式信号或外部策略结果
输出 提醒 委托动作
运行位置 软件内 软件外,以独立程序为主
出错后果 漏一次提醒或提醒重复 牵涉真实委托与账户,后果更重

两套系统分开还有一层原因:可靠性与责任不同。提醒晚一点、漏一次,代价有限;执行环节出错,牵涉的是真实委托。把执行放在公式之外的独立系统里,便于单独设限、单独留痕,也便于在出问题时界定是哪一段的责任。

插件与 DLL 接出去的是信号,不是交易通道

通达信支持以插件或 DLL 的形式扩展公式能力。这条路能做的,是把公式算出的信号输出给外部程序,让外部程序读取到数值或状态。接出去的是信号本身,不是交易权限:公式并不会因为挂上了 DLL 就获得下单能力。

如果外部程序要实现自动执行,成交环节要由它自己与券商通道对接,并且承担相应的合规与风控责任。换句话说,DLL 解决的是把信号运出去,剩下的一半在外部程序那一侧。把这两段混在一起谈,就会把公式的能力边界放大。通达信公式自动交易在外接场景下的分工也正是这样:出口是信号,入口在外部。

环节                由谁承担
条件计算            公式(在软件内)
图上信号            公式(在软件内)
预警提醒            软件
信号输出到外部      插件或 DLL
成交执行            外部程序与券商通道

这张清单读下来,公式占的是最前面几格。它把可计算的部分做扎实,把需要外部权限的部分留在外面,这个分工本身是清楚的,也是理解能力边界的起点。

界面公式与插件还能按固定节奏输出数据,供外部程序读取。写入方式与更新时机由插件实现决定,外部程序读到的时刻和公式计算的时刻之间可能有一段时间差。做验证时要把这个时间差考虑进去,对照数据时按外部数据的生成时间回查,而不是按公式挂上去的时刻回查。

能力边界对照表

把能与不能放在一张表里对照,判断时会快一些。

能力项 公式能做 说明
计算条件 能 对行情序列做运算,输出真或假
绘制信号 能 在主图或副图上标出条件成立的位置
发出预警 能 条件成立时由软件按设定方式提醒
连接交易通道 不能 公式运行环境不包含委托通道
生成委托 不能 下单动作由外部程序或人工完成
管理账户资金分配 不能 资金的分配与风控不属于公式职责

表格里说的是能力项,不是效果说明。公式能算出条件,不等于条件成立之后该做什么;这一步的分寸由使用软件的人来判断。表里把能力项列全,是为了在讨论需求时先落到具体一格,而不是笼统地问能不能自动。

还有一类需求夹在中间:把公式当过滤器先出一份清单,再人工处理清单。它不要求公式接管成交,只要求公式把范围缩小。这一格公式能覆盖,也是下一节要展开的办法。

判断一个需求能不能落在公式里,可以用一句话过一遍:这件事需不需要行情之外的数据,或者需不需要向外部系统发出动作。只用本地行情、板块与财务字段做比较的,落在公式这一侧;需要向外发出动作的,落在公式之外。按这条线切,不少含糊的问题会变得可以直接回答。

替代做法:把公式当过滤器

在能力边界之内,通达信公式自动交易还有可用的替代做法:把公式当成过滤器,用它把需要人工盯的标的范围缩小,把执行动作留给固定规则和人工确认。过滤器可以一天跑一次,把条件成立的标的列出来,省掉从全市场里逐个翻看的工夫。执行环节由人来完成,判断责任也就落在人这一侧。

这样做的好处是每一步都可见:条件在软件里算出来,提醒在软件里弹出,动作由人手动做,中间没有黑箱。代价是人工环节需要有人在场,节奏由人决定,跑得快慢取决于当天有没有时间处理。

过滤器这套做法还可以往前接一步:把跑筛选的节奏固定下来,每天或每个周期跑一次,把结果按日期存档。存下来的清单本身不是判断,是后续复盘时对照条件是否稳定的材料。条件在哪一段时间命中集中、哪一段时间几乎不命中,从存档里能直接看出来,比事后凭印象回忆可靠。

范围缩小之后,清单里的标的仍然是条件成立的集合,不等于其他含义。把它当成别的用途,就超出了公式的表达范围。这一点在使用过滤器时要说在前面,免得把统计口径误当成别的结论。

合规口径要放在显眼处。用程序连接交易通道执行委托,涉及券商接口授权与相应的合规要求,不同券商与不同接口的规则不一致,能不能接、怎么接,以券商的规定为准。公式本身不提供这条通道,也不对由此产生的任何结果负责。

把通达信公式自动交易用在它能覆盖的那一段,边界就守住了。

本文只作技术研究口径,不涉及也不构成对任何标的的判断。

站内还有 通达信新手入门问答、回测验证与风险控制、通达信公式编写教程 的条目,入门、验证与编写三块可对照查看。

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