公式在公式管理器里列表正常、双击能打开、点测试公式也没有红字,挂到界面上却什么都没出来——遇到这种情况,问”通达信公式不显示原因”之前,先要回答另一个问题:你把它挂在了哪里。主图、副图、条件选股器这三处的判断树完全不同,同一个公式挂在不同的位置,会以完全不同的方式失败。
下面按三处挂载位置分开讲。文中提到的界面位置(主图叠加、公式管理器、条件选股器)以通达信金融终端个人版为准,券商定制版的菜单名称可能不同。文中只讲公式能不能产出结果,不涉及对具体标的的判断。
一、先确认你挂的是哪一处
三处的差别从”结果长什么样”就能分出来。分流通达信公式不显示原因,先用下面这张表对一下自己属于哪一处。
| 挂载位置 | “不显示”具体是什么样 | 判断从哪开始 |
|---|---|---|
| 主图(K 线图叠加) | K 线正常,公式的输出线、图标、文字都没有 | 公式属性里的 主图叠加 有没有勾 |
| 副图(指标窗口) | 副图窗口在,但里面是空的,或者线贴在窗口边缘 | 公式的输出值与副图坐标系的关系 |
| 条件选股器 / 条件预警 | 选股结果列表是空的,或者预警一直不触发 | 公式类型、选股周期、选股范围 |
把这三处分开,是因为它们各自的关键设置项不重叠。主图靠一个勾选框决定,副图靠输出值的取值范围决定,条件选股靠公式类型与参数决定。在一处上改另一处的设置,改了也不会有变化。
T0002 与 gs_bak 那一条线上。先分清是哪一层,再动手。二、主图:先看一个勾选框
技术指标的默认宿主是副图。画在 K 线图上的公式,必须在公式属性里勾上 主图叠加。没勾的时候公式没有丢失,只是被画到了副图窗口里,而副图窗口又可能被折叠起来,看起来就像什么都没发生。
打开公式属性有两个入口:在公式管理器里对着公式名右键取属性,或者在编辑窗口上方的属性按钮进。勾上之后要重新在 K 线图上加载一次公式,界面才会按新属性重画。
2.1 输出值不在价格区间里
勾了主图叠加之后仍然看不到东西,看公式的输出值。主图的纵轴是价格,输出的是一个远小于价格的数——例如 0 和 1 这种表示条件成立与否的值——线会被压在坐标轴底端,与边框重合,看不出来。
处理办法是把输出换算到价格区间里再画。下面这种写法就能让条件成立的位置落在 K 线下方,而不是贴在坐标轴底端:
条件 := C > REF(C,1);
{ 直接输出条件:值只有 0 和 1,贴在底边 }
{ 换算到价格区间输出:落在 K 线下方 }
DRAWTEXT(条件, L * 0.99, '放量');
{ 或者画成竖线,高度参考当前 K 线 }
STICKLINE(条件, L, L * 0.97, 3, 0);
2.2 主图上允许的输出个数比副图少
主图叠加模式下的画面要留给 K 线,能叠加的输出条数与副图不同。公式里输出条数多的时候,多出来的部分会被压缩到接近重叠的位置,看起来像只画了一条。判断方法是把输出一条条注释掉,留一条看有没有出现,确认是不是被挤没了。
2.3 K 线数量不足
公式里用到 REF(C, N) 或 HHV(H, N) 这类要往回取 N 根 K 线的语句时,往前第 N 根不存在,结果就取不到值,这一处的线画不出来。新股上市初期、长期停牌复牌之后的这一段,K 线根数不够,现象会集中出现在图表最左边那一段。把公式挂到走势更长的一段区间上再看一次,就能区分是不是这个原因。
三、副图:坐标系与输出值的关系
通达信公式不显示原因落在副图这一处时,要先看坐标系与输出值的关系。副图的纵轴不是价格,是按公式输出的最小值和最大值自动缩放的。这个特性带来一类特别隐蔽的”不显示”:公式确实算了,也确实输出了,但输出的值是一个常数,或者全部相等,副图坐标系的上下界被压成同一个值,线画在了窗口的边框上。
验证方式是在编辑器里把输出改成”看一眼有没有值”的形式,例如把中间量单独输出一次:
{ 原公式的输出可能是一个常数 }
{ 临时加一条,看中间量的取值范围 }
测试: 中间量;
{ 确认取值正常后,把这条删掉再改回原输出 }
另一类副图不显示,和公式被禁用有关:名字在列表里但显示为灰色,加载时不会有输出。这种状态的恢复路径是右键启用,不涉及源码,也不涉及文件恢复。
四、条件选股器与条件预警:空结果不是不显示
在条件选股器里挂公式,得到的是一个股票列表;在条件预警里挂公式,得到的是触发提醒。这两处”什么都没有”,性质与主图副图不同——公式可能工作完全正常,只是没有标的满足条件。所以要查的不是”公式为什么不显示”,而是”条件为什么没有被满足”。
4.1 公式类型选错
条件选股只接受逻辑输出:最后一行是一个可以判断成立或不成立的表达式。把副图公式整段放进条件选股,编译期就会报输出过多或画线超限,根本进不到选股环节。正确形态是这样:
条件1 := C > REF(C,1); 条件2 := V > REF(V,1); 选股: 条件1 AND 条件2; ← 条件选股公式只保留最后一行逻辑输出, 上面所有绘图类语句(DRAWICON、STICKLINE 等)都要删掉
4.2 选股周期与公式的适配周期不一致
公式里的周期参数是在某个周期下调好的。选股器有自己的 选股周期 设置,如果它设成了别的周期,同一段表达式参与比较的每一根 K 线含义都变了,条件成立的位置也跟着变。跨周期引用要写清周期后缀,格式是指标名.语句名#周期:
"KDJ.J#DAY"(9,3,3); ← 在别的周期里引用日线的 J 值 "MACD.DIF#WEEK"(12,26,9);
4.3 选股范围与数据完整性
选股器有两个范围参数:选的是哪些板块、在哪个市场里选。范围没勾或勾错了,返回空列表是正常结果。数据层面则是另一个入口——公式用到的周期数据本地没有下载齐,参与计算的 K 线不足,条件也成立不了。补数据的路径在系统菜单里:系统 → 盘后数据下载。
4.4 条件预警需要单独注册
条件预警不是选了公式就自动生效的。它需要在预警设置里把这个公式加入监控列表,并设置好监控的范围与周期,之后触发的条件才会出现。只在条件选股器里用过一次公式,预警列表里是不会有它的。
五、一句话判断落在哪一处
把上面的线索收成一句可执行的话,也是排查通达信公式不显示原因时的最短路径:主图看勾选,副图看输出值,选股器看条件。主图的问题集中在一个勾选框和一个坐标换算上;副图的问题集中在输出值是不是常数上;选股器的问题集中在条件为什么没成立上——类型、周期、范围、数据,四条依次过一遍。
这三处的排查顺序还有一个共同的前置动作:先在公式编辑器里点一次测试公式。测试通过说明公式本身能跑,剩下的都在挂载设置里;测试不通过,那就还没到挂载这一层,先把语法问题处理掉。这个先后关系搞反,会在挂载设置上反复调整一个本来就编译不过的公式。
本文讲的是软件目录、公式属性与菜单操作,不涉及具体标的的判断。条件选股与条件预警返回的是满足表达式的位置清单,条件成立与实际能成交之间还有成交价格、成交时点这些环节,表达式本身不承担这部分判断,结果需要自己在历史行情上逐段核对。
站内还有 报错与卡顿排查 的其他条目,选股公式与预警 里讲条件选股公式的完整写法与预警设置,主图副图指标 里讲主图叠加与副图输出的挂载细节,可对照查看。
