通达信分时抓涨停公式源码:DYNAINFO预警与封板前判据
2026/9/20 4:45:48 网站建设 项目流程

简介:这是一份面向股票技术分析爱好者与通达信公式编写初学者的指标源码文档,围绕「分时抓涨停」这一短线选股思路,解决指标逻辑看不懂、公式无法二次修改的问题。文档完整收录指标源码,并逐段解析EMA二次移动平均、控盘涨跌幅、买卖与交易信号、WINNER筹码收益率等核心模块的计算含义,同时说明进货、洗盘、出货、比例、差额以及机买机卖、主力差等衍生变量的构造方式,便于读者理解信号触发条件与均线配合的用法。资源为单个doc文件,压缩包约136KB,下载后可直接查阅与复制公式,适合用来对照源码梳理指标结构、做参数调整和条件验证。目前已有904人学习,属于有实际参考价值的公式解析类资料,适合具备一定通达信操作基础、希望深入掌握指标编写逻辑的读者。

1. 分时抓涨停要解决的不是选股问题,是“封板前那几分钟”

日线级别选出来的票,等它出信号,往往已经躺在涨停板上,挂单排到十万手以后,你能做的只有等第二天开盘赌溢价。真正有交易价值的窗口,是 9:35 到 10:30 之间那一段:涨幅 7% 到 9.5%、分时价格始终踩在均价线上方、量比突然放大、三分钟内涨速抬升——这几个条件同时成立时,标的还没封板,你还有下单的机会。

“分时抓涨停指标”讲的就是把上面这几个判据写进通达信公式源码,挂到 1 分钟周期上跑预警,让软件替你盯盘。它不预测涨停,只做一件事:在封板前把符合条件的票筛出来。适合做半路、打板、接力的人,也适合想把通达信实时行情接进自建流程、做主力追踪量化指标公式源码的开发者。

2. 通达信分时公式的数据底座:分钟周期、DYNAINFO 和分时均价线

写分时指标踩的第一个坑,是把日线公式的写法直接搬到 1 分钟图上。周期一变,字段含义全变,源代码不改就是废的。

2.1 分钟周期下 CLOSE、VOL、AMOUNT 分别代表什么

在 1 分钟周期图上,C是该分钟最后一笔的价格,VOL是该分钟的成交量,单位是手,AMOUNT是该分钟的成交额,单位是元。把它们当成日线的收盘价和成交量去用,最典型的结果就是均价线算错一百倍。

分时均价线的定义是当日累计成交额除以当日累计成交量,换算成每股价格:

JJA:=SUM(AMOUNT,SDAY)/SUM(VOL,SDAY)/100;

这里的SDAY是当日已经走完的分钟数。SUM(X,N)表示对 X 向前累加 N 根 K 线,而AMOUNT/VOL得到的单位是元/手,必须除以 100 才是元/股。很多人写成AMOUNT/VOL后图上均价线跑到现价上方几百倍,全部是单位问题。

SDAY的取值不能直接写常数。分时图上如果加载了多日分钟数据,SUM(AMOUNT,0)会把前几天一起累加,均价线就不是当天的那条线了。要用日期切换来判断当日边界:

SDAY:=BARSLAST(DAY<>REF(DAY,1))+1;

DAY在分钟周期返回该根 K 线所属的日期,当天第一根 K 线的DAY与前一根不同,BARSLAST返回距上次条件成立过去了多少根,加 1 就是当日第几根。这个写法同时兼容盘中实时和历史分钟数据。

2.2 DYNAINFO 实时字段:能用什么,什么时候失效

DYNAINFO(N)是通达信读取实时盘口和行情的函数,编号对应不同字段。它最大的特性是只对“当前最新的一根 K 线”有效:拉到历史分钟 K 线上,DYNAINFO(N)通常返回的是最新时刻的实时值,而不是那根历史 K 线当时的值。

常用编号的对应关系如下,具体到某一台机器要以探针公式实测为准,不同版本、不同行情源存在差异:

编号含义分时预警可用历史回测可用
DYNAINFO(3)昨收
DYNAINFO(4)今开
DYNAINFO(5)当日最高
DYNAINFO(6)当日最低
DYNAINFO(7)现价
DYNAINFO(17)量比
DYNAINFO(37)换手率
DYNAINFO(58)封单/买盘强度类字段

把这张表理解成“DYNAINFO 是给预警用的,不是给回测用的”,后面写公式时至少不会在选股器里跑出满屏假信号。

2.3 一段探针公式,先把本机字段编号对齐

编号存在版本差异,与其查资料,不如让公式自己把值打出来。新建一个副图公式,类型选技术指标,周期选 1 分钟:

{公式名:DYNA_PROBE 周期:1分钟 类型:技术指标/副图} D3:=DYNAINFO(3); D7:=DYNAINFO(7); D17:=DYNAINFO(17); D37:=DYNAINFO(37); D58:=DYNAINFO(58); DRAWTEXT_FIX(1,0.00,0.00,0,'昨收='+CON2STR(D3,2)),COLORWHITE; DRAWTEXT_FIX(1,0.00,0.08,0,'现价='+CON2STR(D7,2)),COLORWHITE; DRAWTEXT_FIX(1,0.00,0.16,0,'量比='+CON2STR(D17,2)),COLORWHITE; DRAWTEXT_FIX(1,0.00,0.24,0,'换手='+CON2STR(D37,2)),COLORWHITE; DRAWTEXT_FIX(1,0.00,0.32,0,'D58='+CON2STR(D58,2)),COLORWHITE;

DRAWTEXT_FIX把文字钉在副图固定坐标上,不随 K 线滚动;CON2STR(X,2)把数值转成保留两位小数的字符串,直接和数值拼接会报类型错误。把D58逐个替换成 55 到 70 之间的编号,对着当天的封单量或买卖盘数量判断哪个是你要的字段,比任何外部资料都准。

3. 分时抓涨停的四个判据和参数阈值

指标能不能用,取决于判据是不是互相独立。只用“涨幅 > 7%”会在拉升尾段频繁报警,加上均价线和涨速之后,信号才收敛到封板前那几分钟。

3.1 判据一:现价站上分时均价线且均价线本身走红

价格在均价线上方,说明当日买入的人平均是浮盈的,抛压相对可控。只看现价大于均价线还不够,如果当天低开,均价线本身还在昨收下方,这时候冲板属于弱转强,需要额外确认。加一个均价线自身翻红的条件:

TJ1:=ZXJ>=JJA AND JJA>ZQ*1.01;

ZQ是昨收。JJA>ZQ*1.01要求均价线至少比昨收高 1%,过滤掉开盘就杀跌、盘中反抽的形态。

3.2 判据二:量比与量能饱和度

量比是当日每分钟均量与过去 5 日每分钟均量的比值,衡量的是“今天是不是比平时更活跃”。做分时抓涨停,量比下限一般不低于 1.2,小市值票可以提到 2.0。

量能饱和度是另一个常被提到的概念:当天成交量占前一日成交量的比例,接近或超过 1.00 时说明当天换手已经打满。热搜里出现的“量能饱和度圆圈 1.00 指标公式源码”,本质就是在图上画一个圈标记饱和度到 1 的位置。分时场景下不必画圈,直接算:

SANDU:=SUM(VOL,SDAY)/REF(DAYVOL,1);

DAYVOL是日线周期的成交量,跨周期引用日线数据要用#DAY,写成VOL#DAY取的是日线成交量。跨周期引用依赖本地日线数据完整,盘前没补数据会返回 0。

3.3 判据三:涨速斜率和距涨停价差

涨速是抓涨停里最容易写错的指标。业余写法是DYNAINFO(7)/REF(DYNAINFO(7),3)-1,在分钟周期里REF(DYNAINFO(7),3)拿到的大概率还是当前的现价,算出来永远是 0。正确做法是用分钟 K 线的收盘价,它既有实时值也有历史值:

ZS3:=C/REF(C,3)-1;

REF(C,3)是 3 分钟前的收盘价,ZS3就是 3 分钟涨速。阈值设在 0.8% 到 1.0% 之间比较常用,低于 0.5% 基本等于没设。

距涨停价差是空间判据:

JB:=(ZTJ-ZXJ)/ZQ*100;

ZTJ是按板块规则算出的涨停价,JB是还差百分之几到板。要抓“封板前”,JB应该落在 0 到 1.5 之间;JB<0说明已经封板或数据异常,要排除。

3.4 判据四:涨停价必须按板块分档

把涨停价写成ZQ*1.1是分时抓涨停源码里最常见的错误。主板是 10%,创业板和科创板是 20%,北交所是 30%,ST 是 5%。写死 1.1 会让 20cm 的票在涨 10% 时就被判定为“接近涨停”,信号完全失去意义。

STF:=NAMELIKE('ST') OR NAMELIKE('*ST'); CYF:=CODELIKE('300') OR CODELIKE('301') OR CODELIKE('688'); BJF:=CODELIKE('8') OR CODELIKE('4'); BLF:=IF(STF,0.05,IF(CYF,0.20,IF(BJF,0.30,0.10))); ZTJ:=INTPART(ZQ*(1+BLF)*100+0.5)/100;

NAMELIKECODELIKE都返回布尔值,可以嵌套IFINTPART(X*100+0.5)/100做的是四舍五入到分,交易所的涨停价本身就是按分四舍五入的,不处理会出现 0.01 的偏差,导致JB永远差一点。

3.5 合体:一段完整的分时抓涨停预警公式

把上面的判据拼起来,公式类型选条件选股,周期选 1 分钟:

{公式名:FS_ZTG 周期:1分钟 类型:条件选股} ZXJ:=DYNAINFO(7); ZQ:=DYNAINFO(3); LB:=DYNAINFO(17); STF:=NAMELIKE('ST') OR NAMELIKE('*ST'); CYF:=CODELIKE('300') OR CODELIKE('301') OR CODELIKE('688'); BJF:=CODELIKE('8') OR CODELIKE('4'); BLF:=IF(STF,0.05,IF(CYF,0.20,IF(BJF,0.30,0.10))); ZTJ:=INTPART(ZQ*(1+BLF)*100+0.5)/100; SDAY:=BARSLAST(DAY<>REF(DAY,1))+1; JJA:=IF(SUM(VOL,SDAY)>0,SUM(AMOUNT,SDAY)/SUM(VOL,SDAY)/100,ZQ); ZS3:=C/REF(C,3)-1; JB:=(ZTJ-ZXJ)/ZQ*100; TT:=SDAY; TJ1:=ZXJ>=JJA AND JJA>ZQ*1.01; TJ2:=LB>=1.5; TJ3:=ZS3>=0.008; TJ4:=JB>=0 AND JB<=1.2; TK:=TT>=5; XG:TJ1 AND TJ2 AND TJ3 AND TJ4 AND TK;

逻辑上,TJ1TJ4分别对应均线、量能、涨速、空间四个维度,TK要求开盘至少走完 5 分钟,避开集合竞价刚结束时的价格跳变。条件选股公式的最后一行必须是单值输出,形如XG:表达式;,写成多行带中间变量不影响,但最终只有带冒号那一行会被当作选股结果。

参数上需要按流通市值分档。用FINANCE(40)取流通市值,单位是元,除以一亿换算:

流通市值量比下限3 分钟涨速下限距涨停价上限
30 亿以下2.01.2%1.5%
30 亿到 100 亿1.50.8%1.2%
100 亿以上1.20.5%0.8%

小市值票拉升快但封单薄,量比和涨速都要往上提;大市值票拉板慢,阈值定高了一整天都不出信号。

提示:FINANCE(40)在不同版本里返回的字段不完全一致,新建公式后先输出一次和 F10 里的流通市值对照,再决定是否用它做分档。

4. 落地:公式管理器建公式、条件选股与 1 分钟预警

公式写对只是第一步,通达信的公式管理器、选股器、预警系统是三套独立入口,公式不按对应入口的类型保存,就会在列表里找不到。

4.1 公式管理器里新建分时条件选股公式

按 Ctrl+F 打开公式管理器,左侧选“条件选股公式”,点“新建”,公式名称填FS_ZTG,描述里注明“1 分钟周期”。把 3.5 那段代码粘进编辑框,点“测试公式”,底部显示“编译测试成功”再点确定。

类型选错是最常见的返工原因:建在“技术指标公式”下面,条件选股器里根本列不出来;建在“条件选股公式”下面,又想当副图画线,也不会显示。

4.2 条件选股:盘中实选与盘后回看

盘中实选按 Ctrl+T 打开条件选股,选股公式选FS_ZTG,分析周期改成“1 分钟”,选股范围设为沪深 A 股,勾选“实时选股”后执行。结果列表里的票就是当下满足封板前特征的标的。

盘后回看要把“实时选股”换成“历史阶段选股”,指定日期区间,同时必须先补齐本地分钟数据。路径是“数据 → 盘后数据下载 → 分钟线数据”,勾选 1 分钟和 5 分钟,选好日期区间后下载。没有本地 1 分钟数据时,历史选股会直接报“无数据”或者返回空结果。

使用方式需要的数据公式字段能否复现历史
盘中条件选股实时行情连接DYNAINFO + C
盘后历史选股本地 1 分钟数据仅 C、VOL、AMOUNT
条件预警实时行情连接DYNAINFO + C

4.3 预警系统的周期、品种与实时行情要求

预警比选股更贴近实盘。路径是“功能 → 预警系统 → 条件预警设置”,在“公式预警”页签添加FS_ZTG,在“品种”页签把监控范围设为自选股或全部 A 股,周期设为 1 分钟,再打开预警开关。

预警窗口弹出的时间戳要留意。如果一只票在 9:48 封板,你的信号在 9:52 才响,说明涨速阈值设松了,或者预警的计算周期实际跑在 5 分钟上。通达信预警的周期跟公式挂载的周期是两回事,设置界面的周期下拉必须单独确认一次。

如果同时监控的品种超过两三百只,1 分钟周期下预警会吃掉大量资源。可以考虑把公式再拆一层,先用日线条件筛出候选池,只在候选池上挂分时预警。

5. 进阶排错:DYNAINFO 的回测陷阱、涨停价分板块与信号复核

把实时预警公式直接丢进历史选股,得到的结果通常漂亮得不像话,原因就是 DYNAINFO 在历史 K 线上返回的是最新值。这意味着 2023 年某一天的 K 线,用的却是今天的现价和量比,信号当然好看。判断一份通达信指标公式源码有没有这个问题,看它是否在条件里出现了 DYNAINFO、VOL#DAY之外的跨周期引用以及ISLASTBAR这类只对末根有效的函数。

要做可回测版本,把所有 DYNAINFO 字段换成分钟 K 线自身的值:现价用C,昨收用当日第一根 K 线的上一根收盘价,即REF(C, SDAY),量比用当日均量除以过去 5 日均量手写:

{可回测版本:不依赖 DYNAINFO} SDAY:=BARSLAST(DAY<>REF(DAY,1))+1; ZQ:=REF(C,SDAY); JUNL:=SUM(VOL,SDAY)/SDAY; VMA5:=MA(VOL#DAY,5)/240; LB2:=IF(VMA5>0,JUNL/VMA5,0);

VOL#DAY取日线成交量,除以 240 换成每分钟均量,MA(VOL#DAY,5)是 5 日均量。这段代码在历史 1 分钟 K 线上逐根计算,每一根用的都是当时能拿到的数据,回测结果才有参考价值。

涨停价的分档要定期复核。交易所对 ST 摘帽、注册制板块调整会改变涨跌幅限制,公式里写死的0.050.20遇到规则变化就会失效。稳妥的做法是把涨跌幅系数放到公式参数里,而不是硬编码在表达式中,改参数比改代码快。

信号复核有一套简单办法:把预警输出改成带时间戳的文本,记录每只票当天第一次触发的时间点,然后和该股实际封板时间比对。差值在 3 分钟以内的信号说明阈值合理;差值超过 5 分钟,多半是量比或涨速设低了;如果大量信号出现在封板之后,先检查周期设置,再检查JB有没有把已经封板的情况排除掉。坚持记录一周,参数基本就能调到适合自己交易节奏的位置。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询