通达信公式中的未来函数,是指在K线上会随着后续行情变化而改变输出结果的函数或写法。检测的核心不是只看公式能否通过语法编译,而是判断根历史K线数据更新后信号是否稳定。通达信公式管理器检测、逐K线训练模式、沙盘推和信号对比等功能,配合人工代码审计,可以较完整地判断公式里是否存在未来函数。
通达信自带的公式检测功能位于公式管理器中。按 Ctrl+F 打开公式管理器,展开“技术指标公式”、“条件选股公式交易系统公式”等分类,选中需要检查的公式,“检查公式”或检测公式”按钮。会自动扫描公式语法、函数调用和未来函数。如果公式中使用了 ZIG、PEAK、TROUGHBACKSET 等典型未来函数,部分会给出提示或警告。这个功能的特点是速度快、简单,适合初步筛查;但它主要针对已知函数和明显写法,对跨周期引用、动态行情、自定义引用等未来数据不一定能全部识别,因此不能只依赖自检结果。
常见需要重点排查的函数和写法包括:
- ZIG、ZIGZAG:之字转向,需要未来价格确认转折点。
- PEAK、PEAKBARS、ROUGH、TROUGARS:基于 ZIG 的峰波谷计算。
- BACKSET:向前赋值,会把信号标记到历史K。
- REF 出现负周期,例如 REF(C,-1) 这类引用未来数据的写法。
- 周期引用当前未完成周期,例如日线公式使用 CWEEK、C#TH。
- DYNAINFO 动态行情函数,盘中变化且历史无法还原。
逐线回放是最检测方法。使用方法是在通达信K线图上加载待检测公式,进入“训练模式”或“沙盘推演设置一个历史起始日期然后逐根K线向后推进。每推进一根K线,观察指标线、买卖箭头、提示和条件选股结果是否之前看到的一致。如果根K线过去信号,在后续K线出现信号消失、移动、变色或数量改变说明公式存在未来函数或使用了未来数据。这个功能的特点是真实盘中推进,直接暴露信号漂移;缺点是较耗时,适合关键公式做重点。
历史信号对比也很实用。先固定一个历史日期,把加载到K图上,记录当天及之前若干天的信号、和选股结果然后更新到最新数据,再同一历史日期查看位置。若信号位置、数值或选名单发生变化,就说明公式可能调用了未来数据。对于条件选股公式,可以设置相同的历史日期进行选股间隔一段时间再次用同一日期选股,对比两次结果;如果差异明显且排除除权、财务更新等因素,未来函数的可能性很高。
周期和动态数据要单独检查。通达支持在日线公式中引用周、月线数据,类似 C#WEEK、C#TH。如果当前周或当前月走完,日线公式引用到的未完成的高周期数据盘中会随最新价变化,等价于未来函数。时可以在日线图上同一周内日线是否随机变化,或周期切换到周线引用位置。动态行情函数如 DYINFO 系列,在会返回实时值历史回测中无法当时状态,也应视为不稳定数据。数据、除权更新后也可能导致历史变化,需要区分数据修正和未来函数。
代码审计时,可以按函数名逐一排查先搜索 ZIG、PEAK、TROUGH、BACKSET、REF、DYNAINFO、ISLASTBAR、#WEEK、#MONTH等关键词,再检查 的周期参数是否为负数、BARSLAST的用法是否依赖条件、跨周期引用是否引用了未收盘周期。对于自定义公式,还要变量引用顺序,避免使用后赋值,或通过未来条件反向计算当前。通达信的公式检测器可以作为第一道过滤,逐K线训练模式最终验证,两者结合能判断公式是否存在未来函数。
将管理器自检、逐K线回放、历史信号对比和跨检查结合使用,能够较快判断通达信公式是否存在未来函数;对于依赖 ZIG、PEAK、ROUGH、BACKSET或未收盘跨周期数据的公式,应默认未来函数处理并在实盘回测中验证稳定性。







