通达信判断指标有没有未来函数最实用的方法是把“源码检查、公式检测、训练模式验证、选股回溯”结合起来。未来函数的核心特征是:在计算当前K线信号时,直接或间接引用了后面才会出现,或者让已经出现过的历史信号随着新K线发生移动、消失、重绘。典型表现是历史图形非常完美,买卖点总在最低点或最高点,但预警会闪烁,第二天再看信号已经变了。
先从源码里找未来函数关键词按Ctrl+F` 打开公式管理器选中要检查的指标,双击进入“修改公式”窗口。在源码中重点搜索以下函数名,大小写不敏感:
textZIG
PEAKPEAKBARS
TROUGHTROUGHBARSREFX
BACKSET
DRAWLINE
其中 IG、PEAK、PEBARS、TROUGH、TUGHBARS、REFX、BACKSET 属于典型未来函数。Z 是之转向,需要后面的高低点确认前面的转折,所以历史拐点会变化;PEAK、ROUGH 系列依赖 ZIG,属于未来函数;REFX 是引用未来若干周期的数据;BACKSET会把当前条件向前赋值到历史位置,历史信号重写DRAWLINE 本身不一定被所有版本标为未来函数,它的起止条件需要未来确认,画出的线会随行情移动,属于准未来函数或重绘函数。
如果源码里没有直接出现这些函数,但引用了其他公式,例如 MYIND.MA、OTHER.ZIG 这类公式调用,要继续打开被引用的检查。主公式干净,被引用公式未来函数,最终指标仍然会有未来函数。
通达信公式管理器通常提供“公式”或“检测公式”功能。路径是:Ctrl+F 打开公式,选中技术指标、条件选股或系统公式,点击“公式检测”或“公式”。部分版本会直接列出是否包含未来函数,并未来函数名称。只点击“测试公式”,只能检查语法是否正确,不能完全判断未来函数。
,公式检测主要识别标准未来函数,对间接引用、跨周期引用、DLL外部数据、动态行情函数不一定能完全覆盖。因此检测结果提示“含未来函数”可以确认;提示“语法通过”也不能绝对证明没有未来函数,还要结合逐K线验证。
用训练模式或沙盘推演逐根K线验证这是最直观的方法。通达信功能菜单中通常有“训练模式”或沙盘推演”,版本名称略有差异。进入后设置一个起始日期,让软件隐藏后面的K线,然后逐根向右推进。每推进一根K线记录当时指标发出的信号位置、方向和数值。验证结束后退出训练模式,再看完整K线图上的历史信号。如果训练过程中出现的信号,在完整图上消失、移动、变色或数量,说明指标存在未来函数或重绘还可以观察盘中与盘后的差异:盘中预警、选或信号不断变化,收盘后固定下来,第二天开盘后又变了,这类指标大概率含有未来函数。所有指标在最新K线未收盘时都会变化,这是“未收盘数据”问题,不一定是未来函数;关键是已经走完的历史K线是否还会变。
用选股回溯对比结果把指标改成条件选公式,在条件选股平台选择日期T进行历史选股,记录选出的股票和信号位置。然后选择日期T+1再次回选T日,对比两次结果。如果同一交易日的选股名单、信号数量、信号位置发生明显变化,说明公式里含有未来函数。未来函数选股经常出现“当天选出第二天信号消失”的情况,回测胜率也会虚高。
跨周期引用和外部数据通达信支持跨周期引用例如在日线公式中引用周线、月线数据。如果引用了当前未走完的周线月线,盘中会随最新价变化,盘后也可能变化。这类不一定是严格意义的未来函数,但会导致信号不稳定。公式中的 DYNAINFO 等动态行情函数也会盘中变动。复权方式变化、数据补充、除权除息处理,也可能历史指标图形发生变化,判断时要排除这些因素。
REF 是引用过去数据,不是未来函数REFX 才是引用未来。HHV`LLV、MA、EMA、SMA、MACD、KDJ、I、BLAST、COUNT、SUM、CROSS 等函数通常不是未来函数。FILTER 只是过滤信号,也不是未来函数。不要把“指标在盘中会变”直接等同于未来函数,也不要把所有画线函数都当成未来函数,关键看它是否依赖数据或导致历史重绘。
判断后的处理建议
如果指标用于展示形态、画线研究,含函数影响相对较小;如果用于买卖信号、盘中预警、条件选股、交易回测,就必须谨慎。处理方法包括:把 REFX(C,1) 改成 REF(C,1); BACKSET 改为直接条件判断并配合 REF 延迟确认;把 ZIG、PEAK、TROUGH 替换为 HHV、LLV、均线、趋势线等非未来函数;对买卖信号统一用 REF(S,1)` 一根K线确认,避免信号闪烁。改造后再次用训练模式逐K线验证,确认历史信号不再变化,才可以用于实战参考。







