---
title: 通达信选股公式 · 量比+20日涨停+振幅
subtitle: 一条条件选股公式，六条条件全覆盖
template: sheet
cols: 2
---

六条条件写成一份条件选股公式，直接粘贴进公式管理器即可。

## A 完整公式

```plaintext
{选股: 量比1.8到4 + 20日内涨停 + 振幅大于9 + 现价大于均价}
{排除北证A股、科创板、ST}
{用法: 公式管理器-条件选股-新建, 粘贴本段, 测试通过后选股}
{KC 科创板}
KC:=CODELIKE('688') OR CODELIKE('689');
{BJ 北证A股: 4 8 92 开头}
BJ:=CODELIKE('4') OR CODELIKE('8') OR CODELIKE('92');
{SP ST与星ST}
SP:=NAMELIKE('ST') OR NAMELIKE('*ST');
{OKB 板块通行}
OKB:=NOT(KC) AND NOT(BJ) AND NOT(SP);
{CY 创业板}
CY:=CODELIKE('300') OR CODELIKE('301') OR CODELIKE('302');
{LMR 涨停幅度: 创业板20% 其余10%}
LMR:=IF(CY,0.2,0.1);
{ZTP 涨停价 四舍五入到分}
ZTP:=INTPART(REF(CLOSE,1)*(1+LMR)*100+0.5)/100;
{ZTC 收盘涨停}
ZTC:=CLOSE>=ZTP;
{ZT20 近20日内出现过涨停}
ZT20:=EXIST(ZTC,20);
{LB 量比 回看历史日期换 LB:=VOL/MA(REF(VOL,1),5);}
LB:=DYNAINFO(17);
{AMP 当日振幅 单位%}
AMP:=(HIGH-LOW)/REF(CLOSE,1)*100;
{JJ 当日均价 停牌返回极大值}
JJ:=IF(VOL>0,AMOUNT/VOL/100,999999);
{最终条件}
OKB AND ZT20 AND LB>=1.8 AND LB<=4 AND AMP>9 AND CLOSE>JJ;
```

## B 每条条件的写法 {span=2}

| 条件 | 公式写法 | 口径说明 |
|---|---|---|
| 量比 1.8 到 4 | `DYNAINFO(17)` | 收盘时点等于当日量除以前5日均量 |
| 近20日有涨停 | `EXIST(ZTC,20)` | 含当日；涨停价四舍五入到分 |
| 振幅大于 9 | `(HIGH-LOW)/REF(CLOSE,1)*100` | 当日振幅，不是20日内最大振幅 |
| 现价大于均价 | `CLOSE>AMOUNT/VOL/100` | 均价等于成交额除以成交量，单位元 |
| 排除北证 | `CODELIKE('4') OR ('8') OR ('92')` | 北证代码 43 83 87 88 92 开头 |
| 排除科创 | `CODELIKE('688') OR ('689')` | 科创板与科创CDR |
| 排除 ST | `NAMELIKE('ST') OR ('*ST')` | 星ST也要单独写一条 |

## C 三个坑与实测

```callout warn 别踩这三个
涨停价用比例判断会在低价股上误判：2元股涨停价 2.21，涨幅只有 9.95%。所以走 INTPART 四舍五入还原真实涨停价。

DYNAINFO(17) 取最新一笔行情。用它回看历史日期，取到今天量比，不是当天值。历史回选换成 VOL/MA(REF(VOL,1),5)。

创业板 20% 涨停只在 2020-08-24 后成立。回看更早日期要按 10% 算，否则漏掉全部老涨停。
```

```callout ok 实测口径
数据日 2026-11-10，全A 剔除科创北证后 4544 只，命中 21 只。量比 1.82 到 3.78，振幅 9.5 到 19.4。样例代码 sh600778、sz002048、sz300556。
```

- 放宽：量比下限 1.8 改 1.5，命中数会明显上升
- 收紧：振幅 9 改 12，只留强异动
- 只想要当日涨停：把 `EXIST(ZTC,20)` 直接换成 `ZTC`
