简介:通达信选股指标公式源码解析文档,专为使用通达信软件进行技术选股与量化分析的用户设计,旨在帮助其过滤ST、星号及停牌等风险个股,并通过涨停形态与多项技术指标捕捉强势信号,适合初中级投资者系统学习指标编写。压缩包内仅含1个doc文档,全文约110KB,提供完整通达信公式源码及逐段注释,可直接复制到软件中测试或二次修改。文档对整体选股逻辑进行了结构化拆解:先以NAMELIKE函数剔除名称含S和*的股票,用DYNAINFO(4)>0排除停牌股,再通过C/REF(C,1)>1.0975且H=O识别一字涨停;随后引入量比VAR5、开盘强度VAR6以及7/13/34日指数移动平均角度VAR7-VAR9,经多条件组合生成最终候选信号。读者不仅能掌握各函数的具体用法,还能理解从风险过滤、形态判断到技术指标叠加的完整思路,为优化自身交易策略提供直接参考。目前该资源已有1138人学习,是一份理论结合实战的通达信选股指标参考资料。 “天天有信号,天天抓涨停”,这十个字放在通达信公式圈里,几乎就是流量密码。我在这个圈子里泡了十来年,看到过太多个标题长这样的文档,点进去要么是一段密不透风的源码,要么是几句语焉不详的用法说明。今天我不打算再复刻那种模板,而是把这句口号背后的选股逻辑、源码结构、常见陷阱和调试方法,一次说透。这篇文章适合两类人:一类是刚接触通达信、想自己写选股指标的新手;另一类是从网上下了一堆指标公式、但不知道怎么用、怎么改、怎么避坑的老股民。看完你会明白,所谓“天天有信号”到底是什么信号,凭什么能抓涨停,以及为什么它不能直接等于印钞机。
1. 先拆解:这类选股指标到底在筛什么
1.1 “天天有信号”的真实含义
很多人看到“天天有信号”就觉得是好东西,恨不得每天开盘前自动蹦出几只票。但做过量化筛选的人都知道,信号频率高往往意味着条件很宽,宽到把绝大多数涨停板的共性都涵盖了,同时也容纳了大量不涨停的股票。这类公式设计者为了让“天天有信号”这个卖点成立,通常会叠加两个以上强条件,再搭配一两个弱条件,让输出结果在一天几只到几十只之间浮动。信号太少的公式不好卖,信号太多又显得没水平,所以“天天有信号”本质上是一种产品化包装,而不是胜率承诺。
从选股逻辑上看,所谓抓涨停,核心抓的是“强势特征”,也就是股价在启动初期或者主升阶段表现出来的形态。常见的强势特征包括:量能倍数放大、价格突破关键压力位、均线多头发散、分时走势强于大盘。这些特征本身并不神秘,任何一个有一定看盘经验的人都能凭感觉判断,但指标公式的作用是把这些感觉变成可量化、可回测、可预警的固定规则。
1.2 涨停基因的量化表达
要把“涨停基因”写进通达信公式,第一步是定义什么是“当天强势”。最直白的表达是当日涨幅接近涨停,比如收盘涨幅大于9.8%,或者盘中最高价触及涨停价。第二步是定义“启动”,比如前一天缩量整理,今天突然放出倍量;或者股价突破近期平台高点。第三步是定义“可持续性”,比如均线系统由黏合转为多头发散,MACD在零轴上方金叉,这些都属于辅助确认条件。
举个例子,我见过一个很典型的“倍量突破”逻辑,核心公式只有几行:今日量比大于2,当前股价突破20日最高价,涨幅大于5%,换手率在5%到15%之间。这套条件筛选出来的股票,可能十个里有三四个在后续几天出现过涨停,但同样也会有一半以上直接冲高回落。这说明什么?说明“涨停基因”是一个概率概念,而不是确定信号。公式能做的,是帮你把每天四五千只股票中符合强势形态的几十只挑出来,减少人工翻盘的劳动量,至于最终买不买,还得结合大盘环境、板块效应和分时走势来判断。
1.3 副图指标与选股公式不是一回事
很多人分不清“副图指标”和“选股公式”的区别,导致下载一个指标后,只是看到K线下方多了一条线,却不知道用它怎么选股。通达信里,副图指标的作用是把计算出来的数据画在图表上,比如MACD、KDJ,它强调的是“可视化”,输出通常是曲线或柱状线。而选股公式要求最终输出一个“条件结果”,要么是“选股”标记,要么是返回一个布尔值。同一套逻辑,通常需要写成两种形式:第一种是副图,方便你通过肉眼看背离、看金叉;第二种是选股公式,方便你用“条件选股”功能一键筛选。
所以当你拿到一个别人分享的源码,不要急着复制进通达信。先看它末尾有没有“选股:”字样的输出语句,如果有,说明它本身就是选股公式;如果只是画线,你就需要自己把它转换成选股条件。这个转换工作并不难,但前提是你得理解每行代码在算什么。
2. 通达信公式源码的编写基础与隐藏陷阱
2.1 公式语言的三大要素:数据、函数、输出
通达信的公式语言本质上是一个面向序列数据的函数式语言。你不需要懂编程,但必须清楚三个概念:数据、函数、输出。
数据指的是你操作的对象,包括开(OPEN)、高(HIGH)、低(LOW)、收(CLOSE)、成交量(VOL)、成交额(AMOUNT)等,这些是系统内置的序列变量。函数则是一系列内置的计算规则,比如REF(X,N)表示取X在N个周期前的值,CROSS(A,B)表示A向上穿越B,COUNT(X,N)表示在最近N个周期内满足X的次数。输出则分两类:一是用“赋值”方式把中间结果保存到变量,比如“A:=CLOSE>OPEN;”;二是用“选股”方式输出最终信号,比如“选股:A AND B;”。
新手最容易犯的错是把赋值语句的冒号写错。通达信里,单个冒号“A:CLOSE>OPEN;”是直接输出到副图,会画一条线;而“A:=CLOSE>OPEN;”是赋值给变量,不输出。如果你写错了在选股公式里会有大量冗余画线,导致系统提示“输出数量过多”。
2.2 高频陷阱:未来函数、信号漂移、复权问题
如果说有一个因素能让一个看起来完美的指标瞬间变成废品,那一定是未来函数。所谓未来函数,指的是在计算当前信号时用到了未来才产生的数据,导致盘中信号和收盘后信号不一致。通达信里最常见的未来函数有ZIG(之字转向)、PEAK/BARSLAST、TROUGHBARS等,这些函数本身设计用途是识别波段顶底,但如果你直接用它们作为选股条件,就会产生信号漂移:明明昨天没有信号,今天收盘后却突然在昨天出现了一个买点。这在实盘中是没法操作的,因为昨天你根本看不到这个信号。
判断一个公式有没有未来函数,最简单的办法是看它有没有用到上述函数,或者在条件里引用了BARSLAST、HHV、LLV这类向后回溯函数时,是否对当前周期未来产生了依赖。另一个方法是在通达信里把公式加载到副图,然后随便找一天,把K线往后移动,看看历史信号会不会因为后面的K线变化而消失或新增。如果会,那就有未来函数,建议直接放弃。
复权问题同样容易踩雷。通达信的选股默认是不复权数据,但如果你打开K线时设置了“前复权”,那么你在副图上看到的均线、突破位和用公式计算出来的结果会不一致。尤其做涨停突破选股时,除权除息会导致价格跳空,如果不做复权处理,很多突破信号会误报。我的习惯是选股前在“系统设置”里把K线复权方式固定为“前复权”,并且保持公式中所有涉及价格比较的位置都用收盘价或最高价,不要混用不复权和复权数据。
2.3 版本差异:副图、选股、条件预警的代码写法
通达信有多个版本,基础版、专业版、手机版,它们对公式语法的支持程度略有差异。基础版通常不支持某些L2函数,比如逐笔成交、大单净量这类需要付费行情数据支持的函数。如果你的公式里用了这些函数,在基础版上就会提示“未定义变量”。
另外,同一段源码,用来做副图、选股、预警时,结尾写法不同。副图公式需要画出曲线,比如“MACD:EMA(C,12)-EMA(C,26);”;选股公式必须有一个明确的输出语句,比如“XG:条件;”;而条件预警公式需要在“预警公式”编辑器里新建,输出语句和选股类似,但保存位置不同。很多人把选股公式直接加到预警系统里,结果系统提示“输出变量不能用于预警”,就是因为没分清这两者的差异。建议在写公式之前,先确定你到底需要哪种工具:如果只是盘中提醒,就写预警公式;如果是盘后在固定股票池里筛选,就写选股公式。
3. 实战拆解:一个“抓涨停”选股指标的完整实现
3.1 构建选股条件的思路
下面我用一个实战案例,带大家从零搭一个“强势涨停”选股公式。先明确目标:选出“昨天涨停或大涨,今天继续放量上涨”的股票,也就是俗称的“强势延续”形态。这个形态的逻辑是,涨停板代表了资金的高度一致性,如果次日还能放量上涨,说明做多情绪没有衰竭,后续连板概率相对较高。
那么核心条件就有三层:一是涨停背景,要求昨天涨幅大于9.8%,且收盘价接近全天最高价;二是今天放量,成交量比昨天明显放大,至少1.5倍;三是今天继续收阳线,涨幅大于3%,且盘中价格没有大幅跌破昨日收盘价。至于要不要加上“股价站上5日均线”“MACD金叉”这类辅助条件,我建议一开始先不加,先跑一遍基础版,再根据结果逐步收紧。
3.2 源码示例与逐行解释
下面是这个“强势延续选股”的通达信源码,可以直接复制到通达信的“公式管理器”里使用:
{强势延续选股} 昨涨幅:=(CLOSE/REF(CLOSE,1)-1)*100; 昨接近涨停:=昨涨幅>9.8 AND CLOSE>=HIGH*0.99; 今放量:=VOL>REF(VOL,1)*1.5; 今收阳:=CLOSE>OPEN AND (CLOSE/REF(CLOSE,1)-1)*100>3; 选股:昨接近涨停 AND 今放量 AND 今收阳;为了让大家理解每行在做什么,我逐行解释一下。第一行“昨涨幅”计算的是今天收盘价相对昨天收盘价的涨幅,注意在选股公式里,我们写“昨涨幅”时,处理的是当前交易的K线。如果你想让系统先看昨天,那么需要先把“昨涨幅”赋值出来,再用REF函数引用过去的值。我上面的写法其实是有一点问题的,因为“昨涨幅”在当根K线上算的是“今天的涨幅”,而“昨接近涨停”里的REF应该体现在条件里。更严谨的写法是:
{强势延续选股-修正版} 昨涨幅:=(REF(CLOSE,1)/REF(CLOSE,2)-1)*100; 昨接近涨停:=昨涨幅>9.8 AND REF(CLOSE,1)>=REF(HIGH,1)*0.99; 今放量:=VOL>REF(VOL,1)*1.5; 今收阳:=CLOSE>OPEN AND (CLOSE/REF(CLOSE,1)-1)*100>3; 选股:昨接近涨停 AND 今放量 AND 今收阳;这里的关键在于“昨涨幅”使用的是前一天的收盘价和更前一天的收盘价,这样计算出来的才是昨天那根K线的涨幅。而“昨接近涨停”里判断的是昨天收盘价是否接近昨天最高价,这样能确定昨天不是冲高回落的假涨停。第三行“今放量”用今天的成交量除以昨天的成交量,大于1.5倍,确保资金有延续。第四行“今收阳”要求今天收阳线且涨幅大于3%,如果盘中波动太大会被过滤掉。最后把三个条件用AND连接,得到选股信号。
3.3 参数优化与回测方法
源码写好后,不要急着实盘。先把公式加载到通达信的“条件选股”里,设置一个时间段,比如最近三个月,然后执行选股。接下来把选出的股票列表和后续走势对比,看看有多少只在你选出的第二天继续上涨,有多少只直接进入回调。
这里我强烈建议你用“样本外验证”的思路来做参数优化。举例说明:先用2024年1月到6月的数据调参,让选股结果尽量达到“信号后三天内出现涨停”的比例较高,然后不要继续调整,直接拿2024年7月到12月的数据做一次验证。如果训练期的效果很好,验证期却大幅衰减,说明你的参数过度拟合了历史行情,这类公式在实盘中往往不稳定。我的经验是,一个选股指标在半年内的信号数量不要少于40个,否则统计意义太弱,很难判断它是靠实力还是运气。
参数优化时需要特别注意涨跌幅限制的差异。上面这个公式里“涨幅>9.8”是针对主板10%涨停板的,但如果你的股票池里有创业板、科创板,它们涨停板是20%,这个阈值就不适用。更通用的写法是同时判断“涨幅超过9.8%且接近当时涨跌幅限制”,或者干脆放开涨幅条件,只要求“收盘价接近当日最高价”且“涨幅大于5%”,这样能同时覆盖不同板块。我在实盘中会额外加一个过滤条件:当日开盘涨幅不超过3%,防止选出高开太多直接变身夺命波的情形态。
4. 常见问题与源码调试实录
4.1 公式加载后没有信号
这是最常遇到的情况。你可能从网上下了一个“天天抓涨停”的源码,装进通达信后,选股结果为零。遇到这种问题,不要先怀疑股票市场,先检查三件事。
第一,看公式末尾有没有输出语句。如果整个公式全部是“A:=...; B:=...;”这种赋值语句,而没有“选股:A AND B;”这样的输出,系统会提示“没有输出变量”,选股自然为空。解决办法是把最后一个条件的冒号等号改成单冒号,或者加一行“选股:条件;”。第二,看参数设置。很多现成公式里有“N:=10;”这样的参数,如果你加载时没有设置参数范围,通达信可能默认使用参数值0或1,导致条件异常苛刻。在公式管理器里把参数调整到经验值,比如20日均线就用20,然后再选。第三,看股票池是否被过滤掉了。通达信条件选股支持“分类过滤”,比如设置了“剔除ST”“剔除科创板”,如果股票池太小,也会出现没有信号。
4.2 为什么选出的股票不是预期中的涨停
公式选出的股票第二天没涨停,甚至下跌,这是再正常不过的事。不要因为一两次失败就否定整个公式,而是要学会统计胜率。我习惯的复盘方法是:每次选股结束后,把结果导出到Excel,然后手动标记“次日最高涨幅”“次日收盘涨幅”“三日内是否涨停”这三列。坚持一个月,你就能得出自己的胜率基线。
如果胜率实在太低,比如连20%都没有,说明你的公式大概率是“伪逻辑”。最常见的伪逻辑是只用了涨幅和量能,却没有考虑位置。举个例子,同样一根放量阳线,出现在股价连续下跌后的低位和出现在连续涨停后的高位,含义完全相反。所以我会在实战公式里加入“位置过滤”条件,比如“股价大于60日线”,“60日线向上”,或者“当前股价距离60日内的最高点回撤不超过20%”。这些条件能大幅滤除高位接盘的风险。
4.3 指标带密码、乱码和解密问题怎么处理
网上流传的带密码公式,也就是被加密的公式,通达信里显示为“指标源码已加密”。这类公式你无法直接查看代码,只能加载运行。如果你只是使用,倒也没什么;但如果想在手机端口用,或者想改参数,就很麻烦。有些人喜欢到处找“公式解密”工具,这里我要泼盆冷水:解密行为既违反了原作者分享的初衷,也容易被破解工具捆绑木马,得不偿失。更稳妥的做法是联系作者索要未加密版,或者自己在通达信函数说明的基础上按照思路重新编写一遍。
至于乱码问题,通常是源码文件编码格式不对。通达信公式源码是GBK编码,但很多人用文本编辑器保存时用了UTF-8,导入后就会出现一堆乱码。解决办法是:把源码文本复制到系统自带的“记事本”,点“另存为”,编码选择“ANSI”,文件名后缀改成“.txt”,再从通达信公式管理器里用“导入公式”功能选择这个文件。如果你直接从Windows自带的记事本复制粘贴到通达信,很少出现乱码,乱码多半是文件编码惹的祸。
4.4 通达信版本和行业板块变化带来的干扰
有段时间有用户问,为什么同一个公式,在某个版本里能选出股票,换一个版本后就提示“函数不存在”。这往往是因为新版通达信调整了内置函数库,或者某些函数被更名。比如旧版常用的“VOL”在部分L2版本中变成了“VOL_L2”,新版则兼容两者。遇到这种情况,建议先翻一翻通达信自带的“函数列表”,把失效函数替换成对应版本的新函数。
行业板块变化的问题更有意思。有用户发现通达信软件里的“行业板块”划分和他印象中的不一样了,这是因为通达信会不定期更新行业分类,导致板块成分股发生变动。如果你的公式里用了“板块指数”或“所属行业”相关的数据,那选出股票的池子就会跟着变化。我的建议是,选股公式尽量不依赖板块分类,除非你明确知道自己的策略就是围绕某个特定板块轮动。否则,板块数据变动会让你的历史回测和实盘结果对不上。
5. 写在最后:几句实在话
我用通达信公式写了将近十年选股指标,最大的体会是:公式只是一个工具,它能把你的交易规则固化下来,避免盘中情绪干扰,但绝不能替你找到一条稳赚不赔的路。“天天有信号、天天抓涨停”这个卖点,本质上是在强调信号频率和短期爆发力,而真正稳定的交易体系,更看重的是信号背后的逻辑是否始终成立、风险是否可控。所以我建议你,拿到任何一份源码,第一件事不是急着实盘,而是先理解它到底在算什么,然后自己动手改一遍,至少加上风险过滤条件。如果你能把一两个网上流传的指标改造成适合自己风格的版本,那种成就感远比你直接复制粘贴要大得多。最后分享一个我自己的习惯:每个月月底,把当月的选股信号列表翻出来复盘,统计胜率和最大回撤,然后把连续出现重大亏损的公式清零重写。市场上的资金偏好是在变的,没有哪个公式能永远躺在功劳簿上。
本文还有配套的精品资源,点击获取