在通达信软件中,公式选股是投资者常用的技术筛选工具,它允许用户通过编写自定义指标或条件语句,从全市场股票中批量筛选出符合特定技术形态或数值要求的标的。然而,许多用户在实际操作中会遇到“选股无结果”——即执行选股后返回的股票数量为零。这并非意味着市场中没有符合逻辑的股票,而往往是由于公式本身、选股设置或数据环境存在隐含问题。本文将从多个维度系统解析通达信公式选股无结果的常见原因,并提供针对性的排查与解决思路。
一、公式语法与逻辑错误
通达信公式语言具有严格的语法规范,任何微小的书写错误都可能导致公式无法被正确解析,进而无法输出选股结果。常见的语法问题包括:缺少分号、括号不匹配、函数名称拼写错误、参数类型不匹配等。例如,在条件判断中使用了中文标点,或者将 AND 误写为 and(通达信默认不区分大小写,但某些高级函数对格式敏感)。此外,逻辑错误也极为常见:当多个条件通过 AND 连接时,系统会要求所有条件同时成立,若某个条件过于严苛(如要求当日涨幅大于9.9%且成交量小于昨日50%),则可能因同时满足的股票极少而返回空集。此时应使用「条件选股」中的「测试公式」功能,系统会提示语法错误的具体位置;逻辑问题则须通过逐步简化条件来定位。
通达信公式中部分函数(如 PEAK、TROUGH、SET 等)会引用未来数据,在选股时系统虽然不会禁止使用,但未来函数的存在会导致计算结果在历史数据上失真。更严重的是,引用函数如 REF(X,A) 中的周期参数 A 若变量,或使用了 DYNAINFO 等实时行情函数,在静态选股(非动态显示)环境下会返回无效值或默认值,从而造成条件永远不成立。例如,在公式中用 C >= REF(H, N) 而 N 当前 K 线位置动态计算的变量,这在实际选股中无法获取正确的历史最高价,导致所有股票均不符合条件。解决方案是避免在选股公式中使用未来函数和动态未知周期参数,尽量使用固定周期引用,并检查是否有函数依赖盘中未完成的数据。
通达信选股器允许用户指定选股范围(如沪深A股、科创板、自选股板块等)和分析周期(如日线、周线、分钟线)。如果范围设置过窄,或周期选择不当,即使公式本身成立,也可能因目标股票池中不存在符合条件的个股而返回空集。例如,用户设置“选股范围为上证50”,而当前公式要求“换手率大于10%且流通市值小于20亿”,上证50成分股均为大盘蓝筹,很难满足此类小盘活跃标准,结果自然为零。另外,若在“日线”周期下编写了仅适用于“分钟线”的时间条件(如 TIME>=093 AND TIME<=100),则日线数据中 TIME 函数的是日期或无效值,所有条件均无法触发。建议在执行选股前,明确查看选器右下角的“范围与周期”配置,并更换为“全部A股”或“沪深A股”以排除范围问题。
通达信公式中涉及价格、成交量等数据时,会受复权方式影响。如果公式 HIGH、LOWCLOSE 等原始价格,而选股时采用的是“不复权”数据,那么对于发生过除权除息的股票,历史价格会出现断层,导致诸如“创60日新高”等条件在这些股票上不成立。反之,若公式基于复权数据编写,而当前选股环境设置为“不复权”,则结果同样可能异常。此外,本地数据不完整也会造成部分股票因缺失最新K线而无法被计算。例如,某只股票停牌期间无成交数据,若公式要求“今日成交量大于昨日”,停牌股会自动排除;若选股范围内恰好停牌股比例较高,则结果可能很少或为空。处理方式:在选股前,通过“盘后数据下载”确保数据完整,并统一选股过程中的复权方式(推荐采用“前复权以保持连续性)。
通达信默认选股范围包含ST、*ST、退市期、次新股等特殊状态股票,但公式条件可能隐含了对这些股票的限制。例如,公式中使用了 FINANCE(30)(流通股本)或 DYNAINFO(4)(总市值)等财务或实时指标,对于尚未更新财报数据的次新股,这些函数可能返回或空值,导致条件无法成立。同时,涨跌停板的限制也会影响结果:若公式要求“涨幅大于5%”,而选股时恰好是在开盘前(未交易时段)执行,所有股票的当前涨幅均为,无结果。另一个常见现象是,当公式引用了当日盘中瞬时数据(如 DYNAINFO(7) 即最新价),但选股是在收盘静态条件下进行,这些实时数据会被系统缓存或忽略,从而得到空结果。建议在选股时排除停牌、退市及未上市股票,并避免在盘中关键时段外使用实时动态函数。
通达信公式中的数值常量默认保留两位小数,若用户编写条件如 C > 10.01,而实际股价为10.005,系统可能按四舍五入后的10.01比较,导致边界情况被漏选。此外,中若使用了极大或极小的参数(如 VOL > 100000),在除权后或缩量市场环境下,可能很少有股票能达到如此量级。部分用户喜欢在公式中加入 BARSCOUNT(C) > N 来判断上市天数,但 N 设置得太高(如大于当前市场中最老股票的历史K线数),也会导致所有股票被过滤。另一个隐蔽问题是,多股同周期选股时,系统对每个股票的计算起点不同,若公式中存在 COUNT(条件, M)` 这类的累计函数,而设置的数据起始时间晚于M个周期,则前M根K线会被系统自动忽略,导致条件无法完整计算。这里建议将公式中的参数与当前市场常态进行核对,并利用“选股结果预览”查看被排除的具体股票列表,以判断是否为边界精度所致。
通达信选股分为“第一次执行”和“修改公式后再次执行”两种情况。有时公式本身正确,但在上一次运行后系统缓存了旧的中间计算结果,导致新公式未能触发重新计算。尤其在快速修改公式后立即执行选股,数据引擎尚未刷新公式缓存,系统可能仍按旧逻辑运行,返回空结果或错误结果。另外,在“预警”模式下使用选股公式,若未勾选“使用最新数据”或“仅对已存K线计算”,也可能出现无信号。解决方法是:执行选股前关闭其他占用数据的程序,并在选股器中点击“清空缓存”或重启通达信客户端后再测试。
八、使用建议与排查步骤当遇到通达信公式选股无结果,不必急于修改公式核心逻辑,可按以下排查:
- 在公式编辑器中点击“测试公式”,确认无语法错误、无未来函数提示(若有,尽量去除)。
- 几只已知符合条件的股票(如手动翻看K线确认符合条件),用“加入板块”功能将其单独放入自选股,再“自选股”为范围执行选股,以验证公式本身是否能在这些股票上输出信号。
- 通过“条件设置”中的“统计次数”或“历史测试”功能,检查公式在历史某一天能否选到股票。若历史有结果而当天没有,则可能是实时数据或当期市场状态不满足条件。
通达信公式选股的本质是将投资者主观判断策略编译为代码语言,其“无结果并非总是错误,有时只是市场当前没有符合极端条件的标的。但绝大多数情况下,通过上述规范性检查,都能找到其中的技术性原因。熟练掌握公式语法、明确选股环境限制、保持数据完整,是获得稳定选股结果的前提。将公式逻辑、系统设置与市场现实三者对齐,才能在行情变化中筛选出真正有效的机会。







